[java-opensaml COMMIT] in /trunk: opensaml-saml-impl/src/main/java/org/opensaml/saml/security/impl/SAMLMetadataEncryp...

noreply at shibboleth.net noreply at shibboleth.net
Fri Sep 19 20:05:00 EDT 2014


Author: putmanb
Date: Fri Sep 19 20:04:59 2014
New Revision: 4026

URL: http://svn.shibboleth.net/view/java-opensaml?rev=4026&view=rev
Log:
Implement TODO around allowing data encryption algorithm to influence selection of key transport algorithm.  Introduce new predicate interface, carried on EncryptionConfiguration, and resolved and evaluated by the encryption parameters resolvers at resolve time.

Added:
    trunk/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/KeyTransportAlgorithmPredicate.java   (with props)
Modified:
    trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/security/impl/SAMLMetadataEncryptionParametersResolver.java
    trunk/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/EncryptionConfiguration.java
    trunk/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/impl/BasicEncryptionConfiguration.java
    trunk/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/impl/BasicEncryptionParametersResolver.java
    trunk/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicEncryptionConfigurationTest.java
    trunk/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicEncryptionParametersResolverTest.java

Modified: trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/security/impl/SAMLMetadataEncryptionParametersResolver.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/security/impl/SAMLMetadataEncryptionParametersResolver.java?rev=4026&r1=4025&r2=4026&view=diff
==============================================================================
--- trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/security/impl/SAMLMetadataEncryptionParametersResolver.java (original)
+++ trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/security/impl/SAMLMetadataEncryptionParametersResolver.java Fri Sep 19 20:04:59 2014
@@ -38,6 +38,7 @@
 import org.opensaml.security.criteria.UsageCriterion;
 import org.opensaml.security.crypto.KeySupport;
 import org.opensaml.xmlsec.EncryptionParameters;
+import org.opensaml.xmlsec.KeyTransportAlgorithmPredicate;
 import org.opensaml.xmlsec.algorithm.AlgorithmSupport;
 import org.opensaml.xmlsec.encryption.MGF;
 import org.opensaml.xmlsec.encryption.OAEPparams;
@@ -299,15 +300,27 @@
             @Nullable final SAMLMDCredentialContext metadataCredContext) {
         
         if (metadataCredContext != null) {
+            KeyTransportAlgorithmPredicate keyTransportPredicate = resolveKeyTransportAlgorithmPredicate(criteria);
             for (EncryptionMethod encryptionMethod : metadataCredContext.getEncryptionMethods()) {
                 String algorithm = encryptionMethod.getAlgorithm();
                 log.trace("Evaluating SAML metadata EncryptionMethod algorithm for key transport: {}", algorithm);
                 if (isKeyTransportAlgorithm(algorithm) && whitelistBlacklistPredicate.apply(algorithm) 
                         && getAlgorithmRuntimeSupportedPredicate().apply(algorithm)
                         && credentialSupportsEncryptionMethod(keyTransportCredential, encryptionMethod)) {
-                    log.debug("Resolved key transport algorithm URI from SAML metadata EncryptionMethod: {}",
-                            algorithm);
-                    return new Pair<>(algorithm, encryptionMethod);
+                    
+                    if (keyTransportPredicate != null) {
+                        if (keyTransportPredicate.apply(new KeyTransportAlgorithmPredicate.SelectionInput(
+                                algorithm, dataEncryptionAlgorithm, keyTransportCredential))) {
+                            log.debug("Resolved key transport algorithm URI from SAML metadata EncryptionMethod: {}",
+                                    algorithm);
+                            return new Pair<>(algorithm, encryptionMethod);
+                        }
+                    } else {
+                        log.debug("Resolved key transport algorithm URI from SAML metadata EncryptionMethod: {}",
+                                algorithm);
+                        return new Pair<>(algorithm, encryptionMethod);
+                    }
+                    
                 }
             }
         }

Modified: trunk/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/EncryptionConfiguration.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/EncryptionConfiguration.java?rev=4026&r1=4025&r2=4026&view=diff
==============================================================================
--- trunk/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/EncryptionConfiguration.java (original)
+++ trunk/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/EncryptionConfiguration.java Fri Sep 19 20:04:59 2014
@@ -85,4 +85,11 @@
      */
     @Nullable public RSAOAEPParameters getRSAOAEPParameters();
     
+    /**
+     * Get the instance of {@link KeyTransportAlgorithmPredicate}.
+     * 
+     * @return the predicate instance
+     */

[... 260 lines stripped ...]


More information about the commits mailing list