[java-opensaml COMMIT] in /trunk: opensaml-security-api/src/main/java/org/opensaml/security/x509/X509Support.java ope...

noreply at shibboleth.net noreply at shibboleth.net
Thu Jan 31 21:19:23 EST 2013


Author: scantor
Date: Thu Jan 31 21:19:22 2013
New Revision: 3200

URL: http://svn.shibboleth.net/view/java-opensaml?rev=3200&view=rev
Log:
Port java-xmltooling r777

Added:
    trunk/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/keyinfo/impl/provider/DEREncodedKeyValueProvider.java   (with props)
Modified:
    trunk/opensaml-security-api/src/main/java/org/opensaml/security/x509/X509Support.java
    trunk/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/config/DefaultSecurityConfigurationBootstrap.java
    trunk/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/keyinfo/impl/provider/InlineX509DataProvider.java

Modified: trunk/opensaml-security-api/src/main/java/org/opensaml/security/x509/X509Support.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-security-api/src/main/java/org/opensaml/security/x509/X509Support.java?rev=3200&r1=3199&r2=3200&view=diff
==============================================================================
--- trunk/opensaml-security-api/src/main/java/org/opensaml/security/x509/X509Support.java (original)
+++ trunk/opensaml-security-api/src/main/java/org/opensaml/security/x509/X509Support.java Thu Jan 31 21:19:22 2013
@@ -23,8 +23,11 @@
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.security.GeneralSecurityException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
 import java.security.PrivateKey;
 import java.security.cert.CRLException;
+import java.security.cert.CertificateEncodingException;
 import java.security.cert.CertificateException;
 import java.security.cert.CertificateFactory;
 import java.security.cert.CertificateParsingException;
@@ -290,6 +293,28 @@
         } catch (IOException e) {
             getLogger().error("Unable to extract subject key identifier from certificate: ASN.1 parsing failed: " + e);
             return null;
+        }
+    }
+
+    /**
+     * Get the XML Signature-compliant digest of an X.509 certificate.
+     * 
+     * @param certificate an X.509 certificate
+     * @param jcaAlgorithm JCA algorithm identifier
+     * @return the raw digest of the certificate
+     * @throws SecurityException is algorithm is unsupported or encoding is not possible
+     */
+    @Nonnull public static byte[] getX509Digest(@Nonnull final X509Certificate certificate,
+            @Nonnull final String jcaAlgorithm) throws SecurityException {
+        try {
+            MessageDigest hasher = MessageDigest.getInstance(jcaAlgorithm);
+            return hasher.digest(certificate.getEncoded());
+        } catch (CertificateEncodingException e) {
+            getLogger().error("Unable to encode certificate for digest operation", e);
+            throw new SecurityException("Unable to encode certificate for digest operation", e);
+        } catch (NoSuchAlgorithmException e) {
+            getLogger().error("Algorithm {} is unsupported", jcaAlgorithm);
+            throw new SecurityException("Algorithm " + jcaAlgorithm + " is unsupported", e);
         }
     }
     

Modified: trunk/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/config/DefaultSecurityConfigurationBootstrap.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/config/DefaultSecurityConfigurationBootstrap.java?rev=3200&r1=3199&r2=3200&view=diff
==============================================================================
--- trunk/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/config/DefaultSecurityConfigurationBootstrap.java (original)
+++ trunk/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/config/DefaultSecurityConfigurationBootstrap.java Thu Jan 31 21:19:22 2013
@@ -29,6 +29,7 @@
 import org.opensaml.xmlsec.keyinfo.impl.BasicProviderKeyInfoCredentialResolver;
 import org.opensaml.xmlsec.keyinfo.impl.KeyInfoProvider;
 import org.opensaml.xmlsec.keyinfo.impl.X509KeyInfoGeneratorFactory;
+import org.opensaml.xmlsec.keyinfo.impl.provider.DEREncodedKeyValueProvider;
 import org.opensaml.xmlsec.keyinfo.impl.provider.DSAKeyValueProvider;
 import org.opensaml.xmlsec.keyinfo.impl.provider.InlineX509DataProvider;
 import org.opensaml.xmlsec.keyinfo.impl.provider.RSAKeyValueProvider;
@@ -126,6 +127,7 @@
         ArrayList<KeyInfoProvider> providers = new ArrayList<KeyInfoProvider>();
         providers.add( new RSAKeyValueProvider() );
         providers.add( new DSAKeyValueProvider() );
+        providers.add( new DEREncodedKeyValueProvider() );
         providers.add( new InlineX509DataProvider() );
         
         KeyInfoCredentialResolver resolver = new BasicProviderKeyInfoCredentialResolver(providers);

Modified: trunk/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/keyinfo/impl/provider/InlineX509DataProvider.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/keyinfo/impl/provider/InlineX509DataProvider.java?rev=3200&r1=3199&r2=3200&view=diff
==============================================================================

[... 99 lines stripped ...]


More information about the commits mailing list