[java-xmltooling COMMIT] in /branches/REL_1/src/main/java/org/opensaml/xml/security: SecurityHelper.java keyinfo/prov...

noreply at shibboleth.net noreply at shibboleth.net
Fri Jan 18 16:21:58 EST 2013


Author: scantor
Date: Fri Jan 18 16:21:58 2013
New Revision: 777

URL: http://svn.shibboleth.net/view/java-xmltooling?rev=777&view=rev
Log:
JXT-95: KeyInfo provider changes and helpers for DEREncoded and X509Digest

Added:
    branches/REL_1/src/main/java/org/opensaml/xml/security/keyinfo/provider/DEREncodedKeyValueProvider.java   (with props)
Modified:
    branches/REL_1/src/main/java/org/opensaml/xml/security/SecurityHelper.java
    branches/REL_1/src/main/java/org/opensaml/xml/security/keyinfo/provider/InlineX509DataProvider.java
    branches/REL_1/src/main/java/org/opensaml/xml/security/x509/X509Util.java

Modified: branches/REL_1/src/main/java/org/opensaml/xml/security/SecurityHelper.java
URL: http://svn.shibboleth.net/view/java-xmltooling/branches/REL_1/src/main/java/org/opensaml/xml/security/SecurityHelper.java?rev=777&r1=776&r2=777&view=diff
==============================================================================
--- branches/REL_1/src/main/java/org/opensaml/xml/security/SecurityHelper.java (original)
+++ branches/REL_1/src/main/java/org/opensaml/xml/security/SecurityHelper.java Fri Jan 18 16:21:58 2013
@@ -70,6 +70,7 @@
 import org.opensaml.xml.security.keyinfo.KeyInfoGeneratorFactory;
 import org.opensaml.xml.security.keyinfo.KeyInfoProvider;
 import org.opensaml.xml.security.keyinfo.NamedKeyInfoGeneratorManager;
+import org.opensaml.xml.security.keyinfo.provider.DEREncodedKeyValueProvider;
 import org.opensaml.xml.security.keyinfo.provider.DSAKeyValueProvider;
 import org.opensaml.xml.security.keyinfo.provider.InlineX509DataProvider;
 import org.opensaml.xml.security.keyinfo.provider.RSAKeyValueProvider;
@@ -726,7 +727,7 @@
     
     /**
      * Get a basic KeyInfo credential resolver which can process standard inline
-     * data - RSAKeyValue, DSAKeyValue, X509Data.
+     * data - RSAKeyValue, DSAKeyValue, DEREncodedKeyValue, X509Data.
      * 
      * @return a new KeyInfoCredentialResolver instance
      */
@@ -734,6 +735,7 @@
         List<KeyInfoProvider> providers = new ArrayList<KeyInfoProvider>();
         providers.add( new RSAKeyValueProvider() );
         providers.add( new DSAKeyValueProvider() );
+        providers.add( new DEREncodedKeyValueProvider() );
         providers.add( new InlineX509DataProvider() );
         return new BasicProviderKeyInfoCredentialResolver(providers);
     }

Modified: branches/REL_1/src/main/java/org/opensaml/xml/security/keyinfo/provider/InlineX509DataProvider.java
URL: http://svn.shibboleth.net/view/java-xmltooling/branches/REL_1/src/main/java/org/opensaml/xml/security/keyinfo/provider/InlineX509DataProvider.java?rev=777&r1=776&r2=777&view=diff
==============================================================================
--- branches/REL_1/src/main/java/org/opensaml/xml/security/keyinfo/provider/InlineX509DataProvider.java (original)
+++ branches/REL_1/src/main/java/org/opensaml/xml/security/keyinfo/provider/InlineX509DataProvider.java Fri Jan 18 16:21:58 2013
@@ -45,6 +45,7 @@
 import org.opensaml.xml.security.x509.X509Util;
 import org.opensaml.xml.signature.KeyValue;
 import org.opensaml.xml.signature.X509Data;
+import org.opensaml.xml.signature.X509Digest;
 import org.opensaml.xml.signature.X509IssuerSerial;
 import org.opensaml.xml.signature.X509SKI;
 import org.opensaml.xml.signature.X509SubjectName;
@@ -355,4 +356,33 @@
         }
         return null;
     } 
+
+    /**
+     * Find the certificate from the chain that matches one of the specified digests.
+     * 
+     * @param certs list of certificates to evaluate
+     * @param digests X509 digests to use as search criteria
+     * @return the matching certificate, or null
+     */
+    protected X509Certificate findCertFromDigest(List<X509Certificate> certs, List<X509Digest> digests) {
+        byte[] certValue;
+        byte[] xmlValue;
+        
+        for (X509Digest digest : digests) {
+            if (!DatatypeHelper.isEmpty(digest.getValue())) {
+                xmlValue = Base64.decode(digest.getValue());
+                for (X509Certificate cert : certs) {
+                    try {
+                        certValue = X509Util.getX509Digest(cert, digest.getAlgorithm());
+                        if (certValue != null && Arrays.equals(xmlValue, certValue)) {
+                            return cert;
+                        }
+                    } catch (SecurityException e) {
+                        // Ignore as no match.
+                    }
+                }
+            }
+        }
+        return null;
+    } 
 }

Modified: branches/REL_1/src/main/java/org/opensaml/xml/security/x509/X509Util.java
URL: http://svn.shibboleth.net/view/java-xmltooling/branches/REL_1/src/main/java/org/opensaml/xml/security/x509/X509Util.java?rev=777&r1=776&r2=777&view=diff
==============================================================================
--- branches/REL_1/src/main/java/org/opensaml/xml/security/x509/X509Util.java (original)
+++ branches/REL_1/src/main/java/org/opensaml/xml/security/x509/X509Util.java Fri Jan 18 16:21:58 2013
@@ -21,8 +21,11 @@
 import java.io.File;

[... 54 lines stripped ...]


More information about the commits mailing list