You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by co...@apache.org on 2017/11/14 17:04:43 UTC

[cxf] 02/02: Make sure the Algorithm sets are unmodifiable

This is an automated email from the ASF dual-hosted git repository.

coheigea pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git

commit 796eff3ccdb50687873f24b67659526bb13605d7
Author: Colm O hEigeartaigh <co...@apache.org>
AuthorDate: Tue Nov 14 17:04:09 2017 +0000

    Make sure the Algorithm sets are unmodifiable
---
 .../cxf/rs/security/jose/jwa/AlgorithmUtils.java   | 88 ++++++++++++++--------
 .../cxf/rs/security/jose/jws/JwsUtilsTest.java     | 16 ++++
 2 files changed, 71 insertions(+), 33 deletions(-)

diff --git a/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwa/AlgorithmUtils.java b/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwa/AlgorithmUtils.java
index 2006bf2..1af4543 100644
--- a/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwa/AlgorithmUtils.java
+++ b/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwa/AlgorithmUtils.java
@@ -20,6 +20,7 @@
 package org.apache.cxf.rs.security.jose.jwa;
 
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -94,39 +95,60 @@ public final class AlgorithmUtils {
     public static final String ES_SHA_384_JAVA = "SHA384withECDSA";
     public static final String ES_SHA_512_JAVA = "SHA512withECDSA";
 
-    public static final Set<String> HMAC_SIGN_SET = new HashSet<>(Arrays.asList(HMAC_SHA_256_ALGO,
-                                                                                      HMAC_SHA_384_ALGO,
-                                                                                      HMAC_SHA_512_ALGO));
-    public static final Set<String> RSA_SHA_SIGN_SET = new HashSet<>(Arrays.asList(RS_SHA_256_ALGO,
-                                                                      RS_SHA_384_ALGO,
-                                                                      RS_SHA_512_ALGO));
-    public static final Set<String> RSA_SHA_PS_SIGN_SET = new HashSet<>(Arrays.asList(PS_SHA_256_ALGO,
-                                        PS_SHA_384_ALGO,
-                                        PS_SHA_512_ALGO));
-    public static final Set<String> EC_SHA_SIGN_SET = new HashSet<>(Arrays.asList(ES_SHA_256_ALGO,
-                                                                       ES_SHA_384_ALGO,
-                                                                       ES_SHA_512_ALGO));
-    public static final Set<String> RSA_CEK_SET = new HashSet<>(Arrays.asList(RSA_OAEP_ALGO,
-                                                                                  RSA_OAEP_256_ALGO,
-                                                                                  RSA1_5_ALGO));
-    public static final Set<String> AES_GCM_CEK_SET = new HashSet<>(Arrays.asList(A128GCM_ALGO,
-                                                                                      A192GCM_ALGO,
-                                                                                      A256GCM_ALGO));
-    public static final Set<String> AES_GCM_KW_SET = new HashSet<>(Arrays.asList(A128GCMKW_ALGO,
-                                                                                      A192GCMKW_ALGO,
-                                                                                      A256GCMKW_ALGO));
-    public static final Set<String> AES_KW_SET = new HashSet<>(Arrays.asList(A128KW_ALGO,
-                                                                                   A192KW_ALGO,
-                                                                                   A256KW_ALGO));
-    public static final Set<String> ACBC_HS_SET = new HashSet<>(Arrays.asList(A128CBC_HS256_ALGO,
-                                        A192CBC_HS384_ALGO,
-                                        A256CBC_HS512_ALGO));
-    public static final Set<String> PBES_HS_SET = new HashSet<>(Arrays.asList(PBES2_HS256_A128KW_ALGO,
-                                          PBES2_HS384_A192KW_ALGO,
-                                          PBES2_HS512_A256KW_ALGO));
-    public static final Set<String> ECDH_ES_WRAP_SET = new HashSet<>(Arrays.asList(ECDH_ES_A128KW_ALGO,
-                      ECDH_ES_A192KW_ALGO,
-                      ECDH_ES_A256KW_ALGO));
+    public static final Set<String> HMAC_SIGN_SET =
+        Collections.unmodifiableSet(new HashSet<>(Arrays.asList(HMAC_SHA_256_ALGO,
+                                                                HMAC_SHA_384_ALGO,
+                                                                HMAC_SHA_512_ALGO)));
+
+    public static final Set<String> RSA_SHA_SIGN_SET =
+        Collections.unmodifiableSet(new HashSet<>(Arrays.asList(RS_SHA_256_ALGO,
+                                                                RS_SHA_384_ALGO,
+                                                                RS_SHA_512_ALGO)));
+
+    public static final Set<String> RSA_SHA_PS_SIGN_SET =
+        Collections.unmodifiableSet(new HashSet<>(Arrays.asList(PS_SHA_256_ALGO,
+                                                                PS_SHA_384_ALGO,
+                                                                PS_SHA_512_ALGO)));
+
+    public static final Set<String> EC_SHA_SIGN_SET =
+        Collections.unmodifiableSet(new HashSet<>(Arrays.asList(ES_SHA_256_ALGO,
+                                                                ES_SHA_384_ALGO,
+                                                                ES_SHA_512_ALGO)));
+
+    public static final Set<String> RSA_CEK_SET =
+        Collections.unmodifiableSet(new HashSet<>(Arrays.asList(RSA_OAEP_ALGO,
+                                                                RSA_OAEP_256_ALGO,
+                                                                RSA1_5_ALGO)));
+
+    public static final Set<String> AES_GCM_CEK_SET =
+        Collections.unmodifiableSet(new HashSet<>(Arrays.asList(A128GCM_ALGO,
+                                                                A192GCM_ALGO,
+                                                                A256GCM_ALGO)));
+
+    public static final Set<String> AES_GCM_KW_SET =
+        Collections.unmodifiableSet(new HashSet<>(Arrays.asList(A128GCMKW_ALGO,
+                                                                A192GCMKW_ALGO,
+                                                                A256GCMKW_ALGO)));
+
+    public static final Set<String> AES_KW_SET =
+        Collections.unmodifiableSet(new HashSet<>(Arrays.asList(A128KW_ALGO,
+                                                                A192KW_ALGO,
+                                                                A256KW_ALGO)));
+
+    public static final Set<String> ACBC_HS_SET =
+        Collections.unmodifiableSet(new HashSet<>(Arrays.asList(A128CBC_HS256_ALGO,
+                                                                A192CBC_HS384_ALGO,
+                                                                A256CBC_HS512_ALGO)));
+
+    public static final Set<String> PBES_HS_SET =
+        Collections.unmodifiableSet(new HashSet<>(Arrays.asList(PBES2_HS256_A128KW_ALGO,
+                                                                PBES2_HS384_A192KW_ALGO,
+                                                                PBES2_HS512_A256KW_ALGO)));
+
+    public static final Set<String> ECDH_ES_WRAP_SET =
+        Collections.unmodifiableSet(new HashSet<>(Arrays.asList(ECDH_ES_A128KW_ALGO,
+                                                                ECDH_ES_A192KW_ALGO,
+                                                                ECDH_ES_A256KW_ALGO)));
 
     private static final Map<String, String> JAVA_TO_JWA_NAMES;
     private static final Map<String, String> JWA_TO_JAVA_NAMES;
diff --git a/rt/rs/security/jose-parent/jose/src/test/java/org/apache/cxf/rs/security/jose/jws/JwsUtilsTest.java b/rt/rs/security/jose-parent/jose/src/test/java/org/apache/cxf/rs/security/jose/jws/JwsUtilsTest.java
index d293ace..9ff387f 100644
--- a/rt/rs/security/jose-parent/jose/src/test/java/org/apache/cxf/rs/security/jose/jws/JwsUtilsTest.java
+++ b/rt/rs/security/jose-parent/jose/src/test/java/org/apache/cxf/rs/security/jose/jws/JwsUtilsTest.java
@@ -28,6 +28,8 @@ import org.apache.cxf.message.ExchangeImpl;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.message.MessageImpl;
 import org.apache.cxf.rs.security.jose.common.JoseConstants;
+import org.apache.cxf.rs.security.jose.jwa.AlgorithmUtils;
+import org.apache.cxf.rs.security.jose.jwa.SignatureAlgorithm;
 import org.apache.cxf.rs.security.jose.jwk.JsonWebKey;
 import org.apache.cxf.rs.security.jose.jwk.JsonWebKeys;
 import org.apache.cxf.rs.security.jose.jwk.KeyType;
@@ -36,6 +38,20 @@ import org.junit.Assert;
 import org.junit.Test;
 
 public class JwsUtilsTest extends Assert {
+
+    @Test
+    public void testSignatureAlgorithm() {
+        assertTrue(AlgorithmUtils.isRsaSign(SignatureAlgorithm.RS256));
+        assertFalse(AlgorithmUtils.isRsaSign(SignatureAlgorithm.NONE));
+
+        try {
+            AlgorithmUtils.RSA_SHA_SIGN_SET.add(SignatureAlgorithm.NONE.getJwaName());
+            fail("Failure expected on trying to modify the algorithm lists");
+        } catch (UnsupportedOperationException ex) {
+            // expected
+        }
+    }
+
     @Test
     public void testLoadSignatureProviderFromJKS() throws Exception {
         Properties p = new Properties();

-- 
To stop receiving notification emails like this one, please contact
"commits@cxf.apache.org" <co...@cxf.apache.org>.