[xmlsectool] branch master updated: Refactor for testability.

Ian Young ian at iay.org.uk
Tue May 24 15:11:06 EDT 2016


This is an automated email from the git hooks/post-receive script.

iay pushed a commit to branch master
in repository xmlsectool.

The following commit(s) were added to refs/heads/master by this push:
       new  f88d614   Refactor for testability.
f88d614 is described below

commit f88d614cca0f52b3ef77dcf699169ad2431554f9
Author: Ian Young <ian at iay.org.uk>
AuthorDate: Tue May 24 20:11:00 2016 +0100

    Refactor for testability.
---
 .../java/net/shibboleth/tool/xmlsectool/XmlSecTool.java    | 14 +++++++++-----
 .../java/net/shibboleth/tool/xmlsectool/XSTJ51Test.java    | 12 +++++++-----
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/src/main/java/net/shibboleth/tool/xmlsectool/XmlSecTool.java b/src/main/java/net/shibboleth/tool/xmlsectool/XmlSecTool.java
index 6f3f3c6..af3f9da 100644
--- a/src/main/java/net/shibboleth/tool/xmlsectool/XmlSecTool.java
+++ b/src/main/java/net/shibboleth/tool/xmlsectool/XmlSecTool.java
@@ -42,6 +42,7 @@ import java.util.zip.GZIPInputStream;
 import java.util.zip.GZIPOutputStream;
 import java.util.zip.InflaterInputStream;
 
+import javax.annotation.Nonnull;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
@@ -74,6 +75,7 @@ import org.opensaml.core.config.InitializationException;
 import org.opensaml.core.config.InitializationService;
 import org.opensaml.security.credential.CredentialSupport;
 import org.opensaml.security.x509.BasicX509Credential;
+import org.opensaml.security.x509.X509Credential;
 import org.opensaml.security.x509.X509Support;
 import org.opensaml.xmlsec.SecurityConfigurationSupport;
 import org.opensaml.xmlsec.SignatureSigningConfiguration;
@@ -144,7 +146,8 @@ public final class XmlSecTool {
             }
 
             if (cli.doSign()) {
-                sign(cli, xml);
+                final X509Credential cred = getCredential(cli);
+                sign(cli, cred, xml);
             }
 
             if (cli.doSignatureVerify()) {
@@ -351,9 +354,11 @@ public final class XmlSecTool {
      * Signs a document.
      * 
      * @param cli command line arguments
+     * @param signingCredential credential to use for signing
      * @param xml document to be signed
      */
-    protected static void sign(final CommandLineArguments cli, final Document xml) {
+    protected static void sign(@Nonnull final CommandLineArguments cli,
+            @Nonnull final X509Credential signingCredential, @Nonnull final Document xml) {
         log.debug("Preparing to sign document");
         final Element documentRoot = xml.getDocumentElement();
         Element signatureElement = getSignatureElement(xml);
@@ -369,7 +374,6 @@ public final class XmlSecTool {
          *    * for RSA credentials, use an algorithm dependent on the digest algorithm chosen
          *    * fall back to a signature algorithm based on the signing credential type.
          */
-        final BasicX509Credential signingCredential = getCredential(cli);
         final SignatureSigningConfiguration securityConfig =
                 SecurityConfigurationSupport.getGlobalSignatureSigningConfiguration();
         String signatureAlgorithm = cli.getSignatureAlgorithm();
@@ -447,7 +451,7 @@ public final class XmlSecTool {
      * @param credential the credential
      */
     protected static void populateKeyInfo(final Document doc, final KeyInfo keyInfo,
-            final BasicX509Credential credential) {
+            final X509Credential credential) {
         if (credential.getKeyNames() != null) {
             for (final String name : credential.getKeyNames()) {
                 final KeyName keyName = new KeyName(doc, name);
@@ -863,7 +867,7 @@ public final class XmlSecTool {
      * 
      * @return the credentials
      */
-    protected static BasicX509Credential getCredential(final CommandLineArguments cli) {
+    protected static X509Credential getCredential(final CommandLineArguments cli) {
         final BasicX509Credential credential;
         if (cli.getCertificate() != null) {
             try {
diff --git a/src/test/java/net/shibboleth/tool/xmlsectool/XSTJ51Test.java b/src/test/java/net/shibboleth/tool/xmlsectool/XSTJ51Test.java
index 0b810d6..623cb40 100644
--- a/src/test/java/net/shibboleth/tool/xmlsectool/XSTJ51Test.java
+++ b/src/test/java/net/shibboleth/tool/xmlsectool/XSTJ51Test.java
@@ -8,6 +8,7 @@ import javax.xml.transform.dom.DOMSource;
 
 import org.opensaml.core.config.InitializationService;
 import org.opensaml.security.x509.BasicX509Credential;
+import org.opensaml.security.x509.X509Credential;
 import org.opensaml.xmlsec.signature.KeyInfo;
 import org.opensaml.xmlsec.signature.KeyValue;
 import org.testng.Assert;
@@ -29,6 +30,11 @@ public class XSTJ51Test extends BaseTest {
         // acquire an Elliptic Curve credential to sign with
         final File certFile = classRelativeFile("cert.crt");
         final File keyFile = classRelativeFile("key.key");
+        final X509Credential cred =
+                CredentialHelper.getFileBasedCredentials(keyFile.toString(), null, certFile.toString());
+        final PublicKey pk = cred.getPublicKey();
+        Assert.assertEquals(pk.getAlgorithm(), "EC");
+        Assert.assertTrue(pk instanceof java.security.interfaces.ECPublicKey);
 
         // build command-line arguments
         final String[] args = {
@@ -44,16 +50,12 @@ public class XSTJ51Test extends BaseTest {
         InitializationService.initialize();
 
         // check that the credential is of the right kind
-        final BasicX509Credential cred = XmlSecTool.getCredential(cli);
-        final PublicKey pk = cred.getPublicKey();
-        Assert.assertEquals(pk.getAlgorithm(), "EC");
-        Assert.assertTrue(pk instanceof java.security.interfaces.ECPublicKey);
 
         // acquire a document to sign
         final Document xml = readXMLDocument("in.xml");
         
         // perform signature operation
-        XmlSecTool.sign(cli,  xml);
+        XmlSecTool.sign(cli, cred, xml);
         
         // verify the signature using our own code for consistency
         XmlSecTool.verifySignature(cli, xml);

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list