Repository: cxf
Updated Branches:
  refs/heads/3.0.x-fixes 6424b876c -> 5df9846b8


[CXF-6641] Making sure EcdhAesWrapKeyEncryptionAlgorithm can get 
ContentAlgorithm property configurable when loaded by JWE writers


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/5df9846b
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/5df9846b
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/5df9846b

Branch: refs/heads/3.0.x-fixes
Commit: 5df9846b8f648b0c1984d3bd56e0149c953b4430
Parents: 6424b87
Author: Sergey Beryozkin <[email protected]>
Authored: Wed Oct 28 12:01:07 2015 +0000
Committer: Sergey Beryozkin <[email protected]>
Committed: Wed Oct 28 12:03:13 2015 +0000

----------------------------------------------------------------------
 .../cxf/rs/security/jose/jwe/JweUtils.java       | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/5df9846b/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweUtils.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweUtils.java
 
b/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweUtils.java
index e936359..211c076 100644
--- 
a/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweUtils.java
+++ 
b/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweUtils.java
@@ -137,9 +137,15 @@ public final class JweUtils {
             keyEncryptionProvider = 
getSecretKeyEncryptionAlgorithm(JwkUtils.toSecretKey(jwk), 
                                                                     keyAlgo);
         } else {
+            ContentAlgorithm ctAlgo = null;
+            Message m = PhaseInterceptorChain.getCurrentMessage();
+            if (m != null) {
+                ctAlgo = 
getContentAlgo((String)m.get(JoseConstants.RSSEC_ENCRYPTION_CONTENT_ALGORITHM));
+            }
             keyEncryptionProvider = new 
EcdhAesWrapKeyEncryptionAlgorithm(JwkUtils.toECPublicKey(jwk),
                                         
jwk.getStringProperty(JsonWebKey.EC_CURVE),
-                                        keyAlgo);
+                                        keyAlgo,
+                                        ctAlgo == null ? 
ContentAlgorithm.A128GCM : ctAlgo);
         }
         return keyEncryptionProvider;
     }
@@ -147,7 +153,15 @@ public final class JweUtils {
         if (key instanceof RSAPublicKey) {
             return new RSAKeyEncryptionAlgorithm((RSAPublicKey)key, algo);
         } else if (key instanceof ECPublicKey) {
-            return new EcdhAesWrapKeyEncryptionAlgorithm((ECPublicKey)key, 
algo);
+            ContentAlgorithm ctAlgo = null;
+            Message m = PhaseInterceptorChain.getCurrentMessage();
+            if (m != null) {
+                ctAlgo = 
getContentAlgo((String)m.get(JoseConstants.RSSEC_ENCRYPTION_CONTENT_ALGORITHM));
+            }
+            return new EcdhAesWrapKeyEncryptionAlgorithm((ECPublicKey)key, 
+                                                         
JsonWebKey.EC_CURVE_P256, 
+                                                         algo, 
+                                                         ctAlgo == null ? 
ContentAlgorithm.A128GCM : ctAlgo);
         }
         
         return null;
@@ -291,6 +305,7 @@ public final class JweUtils {
         String keyEncryptionAlgo = getKeyEncryptionAlgo(m, props, null, null);
         KeyAlgorithm keyAlgo = KeyAlgorithm.getAlgorithm(keyEncryptionAlgo); 
         String contentEncryptionAlgo = getContentEncryptionAlgo(m, props, 
null);
+        m.put(JoseConstants.RSSEC_ENCRYPTION_CONTENT_ALGORITHM, 
contentEncryptionAlgo);
         ContentEncryptionProvider ctEncryptionProvider = null;
         if 
(JoseConstants.HEADER_JSON_WEB_KEY.equals(props.get(JoseConstants.RSSEC_KEY_STORE_TYPE)))
 {
             JsonWebKey jwk = JwkUtils.loadJsonWebKey(m, props, 
KeyOperation.ENCRYPT);

Reply via email to