[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