You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by co...@apache.org on 2014/05/20 13:12:05 UTC
svn commit: r1596196 - in /santuario/xml-security-java/trunk/src:
main/java/org/apache/jcp/xml/dsig/internal/dom/
main/java/org/apache/xml/security/algorithms/
main/java/org/apache/xml/security/resource/
test/java/javax/xml/crypto/test/dsig/ test/java/...
Author: coheigea
Date: Tue May 20 11:12:04 2014
New Revision: 1596196
URL: http://svn.apache.org/r1596196
Log:
[SANTUARIO-389] - Add support + testing for SHA-224 digest algorithm
Modified:
santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMDigestMethod.java
santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXMLSignatureFactory.java
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/JCEMapper.java
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/MessageDigestAlgorithm.java
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/resource/config.xml
santuario/xml-security-java/trunk/src/test/java/javax/xml/crypto/test/dsig/SignatureDigestMethodTest.java
santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/dom/algorithms/DigestAlgorithmTest.java
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMDigestMethod.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMDigestMethod.java?rev=1596196&r1=1596195&r2=1596196&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMDigestMethod.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMDigestMethod.java Tue May 20 11:12:04 2014
@@ -40,6 +40,8 @@ import org.w3c.dom.Element;
public abstract class DOMDigestMethod extends BaseStructure
implements DigestMethod {
+ static final String SHA224 =
+ "http://www.w3.org/2001/04/xmldsig-more#sha224"; // see RFC 4051
static final String SHA384 =
"http://www.w3.org/2001/04/xmldsig-more#sha384"; // see RFC 4051
private DigestMethodParameterSpec params;
@@ -85,6 +87,8 @@ public abstract class DOMDigestMethod ex
String alg = DOMUtils.getAttributeValue(dmElem, "Algorithm");
if (alg.equals(DigestMethod.SHA1)) {
return new SHA1(dmElem);
+ } else if (alg.equals(SHA224)) {
+ return new SHA224(dmElem);
} else if (alg.equals(DigestMethod.SHA256)) {
return new SHA256(dmElem);
} else if (alg.equals(SHA384)) {
@@ -229,6 +233,24 @@ public abstract class DOMDigestMethod ex
return "SHA-1";
}
}
+
+ static final class SHA224 extends DOMDigestMethod {
+ SHA224(AlgorithmParameterSpec params)
+ throws InvalidAlgorithmParameterException {
+ super(params);
+ }
+ SHA224(Element dmElem) throws MarshalException {
+ super(dmElem);
+ }
+ @Override
+ public String getAlgorithm() {
+ return SHA224;
+ }
+ @Override
+ String getMessageDigestAlgorithm() {
+ return "SHA-224";
+ }
+ }
static final class SHA256 extends DOMDigestMethod {
SHA256(AlgorithmParameterSpec params)
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXMLSignatureFactory.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXMLSignatureFactory.java?rev=1596196&r1=1596195&r2=1596196&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXMLSignatureFactory.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXMLSignatureFactory.java Tue May 20 11:12:04 2014
@@ -225,6 +225,8 @@ public final class DOMXMLSignatureFactor
}
if (algorithm.equals(DigestMethod.SHA1)) {
return new DOMDigestMethod.SHA1(params);
+ } else if (algorithm.equals(DOMDigestMethod.SHA224)) {
+ return new DOMDigestMethod.SHA224(params);
} else if (algorithm.equals(DigestMethod.SHA256)) {
return new DOMDigestMethod.SHA256(params);
} else if (algorithm.equals(DOMDigestMethod.SHA384)) {
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/JCEMapper.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/JCEMapper.java?rev=1596196&r1=1596195&r2=1596196&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/JCEMapper.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/JCEMapper.java Tue May 20 11:12:04 2014
@@ -67,6 +67,10 @@ public class JCEMapper {
new Algorithm("SHA-1", "SHA-1", "MessageDigest")
);
algorithmsMap.put(
+ MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA224,
+ new Algorithm("SHA-224", "SHA-224", "MessageDigest")
+ );
+ algorithmsMap.put(
MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA256,
new Algorithm("SHA-256", "SHA-256", "MessageDigest")
);
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/MessageDigestAlgorithm.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/MessageDigestAlgorithm.java?rev=1596196&r1=1596195&r2=1596196&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/MessageDigestAlgorithm.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/MessageDigestAlgorithm.java Tue May 20 11:12:04 2014
@@ -40,6 +40,9 @@ public class MessageDigestAlgorithm exte
Constants.MoreAlgorithmsSpecNS + "md5";
/** Digest - Required SHA1*/
public static final String ALGO_ID_DIGEST_SHA1 = Constants.SignatureSpecNS + "sha1";
+ /** Message Digest - OPTIONAL SHA224*/
+ public static final String ALGO_ID_DIGEST_SHA224 =
+ Constants.MoreAlgorithmsSpecNS + "sha224";
/** Message Digest - RECOMMENDED SHA256*/
public static final String ALGO_ID_DIGEST_SHA256 =
EncryptionConstants.EncryptionSpecNS + "sha256";
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/resource/config.xml
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/resource/config.xml?rev=1596196&r1=1596195&r2=1596196&view=diff
==============================================================================
Binary files - no diff available.
Modified: santuario/xml-security-java/trunk/src/test/java/javax/xml/crypto/test/dsig/SignatureDigestMethodTest.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/test/java/javax/xml/crypto/test/dsig/SignatureDigestMethodTest.java?rev=1596196&r1=1596195&r2=1596196&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/test/java/javax/xml/crypto/test/dsig/SignatureDigestMethodTest.java (original)
+++ santuario/xml-security-java/trunk/src/test/java/javax/xml/crypto/test/dsig/SignatureDigestMethodTest.java Tue May 20 11:12:04 2014
@@ -54,7 +54,7 @@ public class SignatureDigestMethodTest e
private KeySelector kvks;
private CanonicalizationMethod withoutComments;
- private DigestMethod sha1, sha256, sha384, sha512, ripemd160;
+ private DigestMethod sha1, sha224, sha256, sha384, sha512, ripemd160;
private SignatureMethod rsaSha1;
private KeyInfo rsaki;
private XMLSignatureFactory fac;
@@ -94,6 +94,7 @@ public class SignatureDigestMethodTest e
withoutComments = fac.newCanonicalizationMethod
(CanonicalizationMethod.INCLUSIVE, (C14NMethodParameterSpec) null);
sha1 = fac.newDigestMethod(DigestMethod.SHA1, null);
+ sha224 = fac.newDigestMethod("http://www.w3.org/2001/04/xmldsig-more#sha224", null);
sha256 = fac.newDigestMethod(DigestMethod.SHA256, null);
sha384 = fac.newDigestMethod("http://www.w3.org/2001/04/xmldsig-more#sha384", null);
sha512 = fac.newDigestMethod(DigestMethod.SHA512, null);
@@ -114,6 +115,12 @@ public class SignatureDigestMethodTest e
test_create_signature_enveloping(rsaSha1, sha1, rsaki,
TestUtils.getPrivateKey("RSA"), kvks);
}
+
+ @org.junit.Test
+ public void testSHA224() throws Exception {
+ test_create_signature_enveloping(rsaSha1, sha224, rsaki,
+ TestUtils.getPrivateKey("RSA"), kvks);
+ }
@org.junit.Test
public void testSHA256() throws Exception {
@@ -121,7 +128,6 @@ public class SignatureDigestMethodTest e
TestUtils.getPrivateKey("RSA"), kvks);
}
-
@org.junit.Test
public void testSHA384() throws Exception {
test_create_signature_enveloping(rsaSha1, sha384, rsaki,
Modified: santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/dom/algorithms/DigestAlgorithmTest.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/dom/algorithms/DigestAlgorithmTest.java?rev=1596196&r1=1596195&r2=1596196&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/dom/algorithms/DigestAlgorithmTest.java (original)
+++ santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/dom/algorithms/DigestAlgorithmTest.java Tue May 20 11:12:04 2014
@@ -79,6 +79,24 @@ public class DigestAlgorithmTest extends
}
@org.junit.Test
+ public void testSHA224() throws Exception {
+ Document doc = XMLUtils.createDocumentBuilder(false).newDocument();
+
+ MessageDigestAlgorithm digestAlgorithm =
+ MessageDigestAlgorithm.getInstance(doc, MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA224);
+ assertEquals(MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA224, digestAlgorithm.getAlgorithmURI());
+
+ byte[] digest = digestAlgorithm.digest("test-string".getBytes());
+ assertNotNull(digest);
+ assertTrue(digest.length > 0);
+
+ // Now compare against a JDK MessageDigest Object
+ MessageDigest md = MessageDigest.getInstance("SHA-224");
+ byte[] digest2 = md.digest("test-string".getBytes());
+ assertTrue(Arrays.equals(digest, digest2));
+ }
+
+ @org.junit.Test
public void testSHA256() throws Exception {
Document doc = XMLUtils.createDocumentBuilder(false).newDocument();