[utilities COMMIT] in /xmlsectool/trunk: doc/RELEASE-NOTES.txt src/main/java/edu/internet2/middleware/security/XmlSec...
noreply at shibboleth.net
noreply at shibboleth.net
Fri Mar 8 06:31:58 EST 2013
Author: iay
Date: Fri Mar 8 06:31:57 2013
New Revision: 342
URL: http://svn.shibboleth.net/view/utilities?rev=342&view=rev
Log:
[XSTJ-14] - allow specification of Digest and Signature algorithms when signing
Modified:
xmlsectool/trunk/doc/RELEASE-NOTES.txt
xmlsectool/trunk/src/main/java/edu/internet2/middleware/security/XmlSecTool.java
xmlsectool/trunk/src/main/java/edu/internet2/middleware/security/XmlSecToolCommandLineArguments.java
Modified: xmlsectool/trunk/doc/RELEASE-NOTES.txt
URL: http://svn.shibboleth.net/view/utilities/xmlsectool/trunk/doc/RELEASE-NOTES.txt?rev=342&r1=341&r2=342&view=diff
==============================================================================
--- xmlsectool/trunk/doc/RELEASE-NOTES.txt (original)
+++ xmlsectool/trunk/doc/RELEASE-NOTES.txt Fri Mar 8 06:31:57 2013
@@ -6,6 +6,7 @@
[XSTJ-17] - multiple errors in --help documentation
[XSTJ-16] - misleading error message on failed schema validation
[XSTJ-15] - XmlSecTool fails with String index out of range -1
+[XSTJ-14] - allow specification of Digest and Signature algorithms when signing
Changes in Release 1.1.4
=============================================
Modified: xmlsectool/trunk/src/main/java/edu/internet2/middleware/security/XmlSecTool.java
URL: http://svn.shibboleth.net/view/utilities/xmlsectool/trunk/src/main/java/edu/internet2/middleware/security/XmlSecTool.java?rev=342&r1=341&r2=342&view=diff
==============================================================================
--- xmlsectool/trunk/src/main/java/edu/internet2/middleware/security/XmlSecTool.java (original)
+++ xmlsectool/trunk/src/main/java/edu/internet2/middleware/security/XmlSecTool.java Fri Mar 8 06:31:57 2013
@@ -391,12 +391,38 @@
System.exit(RC_SIG);
}
+ /*
+ * Determine the signature algorithm:
+ *
+ * * if the CLI signatureAlgorithm has been used, it takes precedence.
+ * * for RSA credentials, use an algorithm dependent on the digest algorithm chosen
+ * * fall back to a signature algorithm based on the signing credential type.
+ */
BasicX509Credential signingCredential = getCredential(cli);
-
BasicSecurityConfiguration securityConfig = DefaultSecurityConfigurationBootstrap.buildDefaultConfig();
- String signatureAlgorithm = securityConfig.getSignatureAlgorithmURI(signingCredential);
+ String signatureAlgorithm = cli.getSignatureAlgorithm();
+ if (signatureAlgorithm == null) {
+ final String credentialAlgorithm = signingCredential.getPublicKey().getAlgorithm();
+ if ("RSA".equals(credentialAlgorithm)) {
+ signatureAlgorithm = cli.getDigest().getRsaAlgorithm();
+ } else {
+ signatureAlgorithm = securityConfig.getSignatureAlgorithmURI(signingCredential);
+ }
+ }
boolean hmac = SecurityHelper.isHMAC(signatureAlgorithm);
Integer hmacOutputLength = securityConfig.getSignatureHMACOutputLength();
+
+ /*
+ * Determine the digest algorithm:
+ *
+ * * if the CLI digestAlgorithm option has been used, it takes precedence.
+ * * fall back to the shorthand digest choice.
+ */
+ String digestAlgorithm = cli.getDigestAlgorithm();
+ if (digestAlgorithm == null) {
+ digestAlgorithm = cli.getDigest().getDigestAlgorithm();
+ }
+
String c14nAlgorithm = SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS;
try {
@@ -413,7 +439,7 @@
contentTransforms.addTransform(SignatureConstants.TRANSFORM_ENVELOPED_SIGNATURE);
contentTransforms.addTransform(SignatureConstants.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);
signature.addDocument(getSignatureReferenceUri(cli, documentRoot), contentTransforms,
- SignatureConstants.ALGO_ID_DIGEST_SHA1);
+ digestAlgorithm);
log.debug("Creating Signature DOM element");
signatureElement = signature.getElement();
Modified: xmlsectool/trunk/src/main/java/edu/internet2/middleware/security/XmlSecToolCommandLineArguments.java
URL: http://svn.shibboleth.net/view/utilities/xmlsectool/trunk/src/main/java/edu/internet2/middleware/security/XmlSecToolCommandLineArguments.java?rev=342&r1=341&r2=342&view=diff
==============================================================================
--- xmlsectool/trunk/src/main/java/edu/internet2/middleware/security/XmlSecToolCommandLineArguments.java (original)
+++ xmlsectool/trunk/src/main/java/edu/internet2/middleware/security/XmlSecToolCommandLineArguments.java Fri Mar 8 06:31:57 2013
@@ -23,9 +23,113 @@
import java.io.PrintStream;
import java.util.List;
+import org.apache.xml.security.algorithms.MessageDigestAlgorithm;
+import org.apache.xml.security.signature.XMLSignature;
+
/** Command line arguments for the {@link XmlSecTool} command line tool. */
public class XmlSecToolCommandLineArguments {
+ /**
[... 238 lines stripped ...]
More information about the commits
mailing list