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 2011/01/24 12:31:02 UTC
svn commit: r1062736 [1/2] - in
/santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples:
keys/ transforms/
Author: coheigea
Date: Mon Jan 24 11:31:01 2011
New Revision: 1062736
URL: http://svn.apache.org/viewvc?rev=1062736&view=rev
Log:
[SANTUARIO-257] - More refactoring of the samples.
Modified:
santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/keys/CreateKeyInfo.java
santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/keys/RetrievePublicKeys.java
santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformChaining.java
santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformEnvelopedSignature.java
santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformNone.java
santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXPath.java
santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXPath2Filter.java
santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXPath2Filter2.java
santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXPathFilterCHGP.java
santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXPathHereFunc.java
santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXSLT.java
Modified: santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/keys/CreateKeyInfo.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/keys/CreateKeyInfo.java?rev=1062736&r1=1062735&r2=1062736&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/keys/CreateKeyInfo.java (original)
+++ santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/keys/CreateKeyInfo.java Mon Jan 24 11:31:01 2011
@@ -16,8 +16,6 @@
*/
package org.apache.xml.security.samples.keys;
-
-
import java.io.FileInputStream;
import java.math.BigInteger;
import java.security.KeyStore;
@@ -28,7 +26,6 @@ import org.apache.xml.security.keys.cont
import org.apache.xml.security.keys.content.keyvalues.RSAKeyValue;
import org.apache.xml.security.utils.XMLUtils;
-
/**
* Class CreateKeyInfo
*
@@ -37,45 +34,45 @@ import org.apache.xml.security.utils.XML
*/
public class CreateKeyInfo {
- /**
- * Method main
- *
- * @param unused
- * @throws Exception
- */
- public static void main(String unused[]) throws Exception {
-
- KeyStore ks = KeyStore.getInstance("JKS");
- FileInputStream fis = new FileInputStream(
- "data/org/apache/xml/security/samples/input/keystore.jks");
-
- ks.load(fis, "xmlsecurity".toCharArray());
-
- javax.xml.parsers.DocumentBuilderFactory dbf =
- javax.xml.parsers.DocumentBuilderFactory.newInstance();
-
- dbf.setNamespaceAware(true);
-
- javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
- org.w3c.dom.Document doc = db.newDocument();
- KeyInfo ki = new KeyInfo(doc);
-
- doc.appendChild(ki.getElement());
- ki.setId("myKI");
- ki.addKeyName("A simple key");
-
- X509Certificate cert = (X509Certificate) ks.getCertificate("test");
-
- ki.addKeyValue(cert.getPublicKey());
-
- X509Data x509Data = new X509Data(doc);
-
- ki.add(x509Data);
- x509Data.addCertificate(cert);
- x509Data.addSubjectName("Subject name");
- x509Data.addIssuerSerial("Subject nfsdfhs", 6786);
- ki.add(new RSAKeyValue(doc, new BigInteger("678"),
- new BigInteger("6870")));
- XMLUtils.outputDOMc14nWithComments(doc, System.out);
- }
+ /**
+ * Method main
+ *
+ * @param unused
+ * @throws Exception
+ */
+ public static void main(String unused[]) throws Exception {
+
+ KeyStore ks = KeyStore.getInstance("JKS");
+ FileInputStream fis = new FileInputStream(
+ "data/org/apache/xml/security/samples/input/keystore.jks");
+
+ ks.load(fis, "xmlsecurity".toCharArray());
+
+ javax.xml.parsers.DocumentBuilderFactory dbf =
+ javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+ dbf.setNamespaceAware(true);
+
+ javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+ org.w3c.dom.Document doc = db.newDocument();
+ KeyInfo ki = new KeyInfo(doc);
+
+ doc.appendChild(ki.getElement());
+ ki.setId("myKI");
+ ki.addKeyName("A simple key");
+
+ X509Certificate cert = (X509Certificate) ks.getCertificate("test");
+
+ ki.addKeyValue(cert.getPublicKey());
+
+ X509Data x509Data = new X509Data(doc);
+
+ ki.add(x509Data);
+ x509Data.addCertificate(cert);
+ x509Data.addSubjectName("Subject name");
+ x509Data.addIssuerSerial("Subject nfsdfhs", 6786);
+ ki.add(new RSAKeyValue(doc, new BigInteger("678"), new BigInteger("6870")));
+ XMLUtils.outputDOMc14nWithComments(doc, System.out);
+ }
+
}
Modified: santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/keys/RetrievePublicKeys.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/keys/RetrievePublicKeys.java?rev=1062736&r1=1062735&r2=1062736&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/keys/RetrievePublicKeys.java (original)
+++ santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/keys/RetrievePublicKeys.java Mon Jan 24 11:31:01 2011
@@ -17,8 +17,6 @@
*/
package org.apache.xml.security.samples.keys;
-
-
import java.io.File;
import java.security.PublicKey;
@@ -31,93 +29,85 @@ import org.apache.xml.security.utils.XML
import org.apache.xpath.XPathAPI;
import org.w3c.dom.Element;
-
/**
*
* @author $Author$
*/
public class RetrievePublicKeys {
- /**
- * Method main
- *
- * @param unused
- */
- public static void main(String unused[]) {
-
- javax.xml.parsers.DocumentBuilderFactory dbf =
- javax.xml.parsers.DocumentBuilderFactory.newInstance();
-
- dbf.setNamespaceAware(true);
-
- //J-
- String merlinsDir =
- "data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/";
- String ourDir =
- "data/org/apache/xml/security/temp/key/";
- String filenames[] = { merlinsDir +
- /* 0 */ "signature-keyname.xml",
- merlinsDir +
- /* 1 */ "signature-retrievalmethod-rawx509crt.xml",
- merlinsDir +
- /* 2 */ "signature-x509-crt-crl.xml",
- merlinsDir +
- /* 3 */ "signature-x509-crt.xml",
- merlinsDir +
- /* 4 */ "signature-x509-is.xml",
- merlinsDir +
- /* 5 */ "signature-x509-ski.xml",
- merlinsDir +
- /* 6 */ "signature-x509-sn.xml",
- ourDir +
- /* 7 */ "signature-retrievalmethod-x509data.xml",
- ourDir +
- /* 8 */ "signature-retrievalmethod-dsavalue.xml",
- ourDir +
- /* 9 */ "retrieval-from-same-doc.xml"
- };
- //J+
- int start = 0;
- int end = filenames.length;
- // int end = filenames.length;
- for (int filetoverify = start; filetoverify < end;
- filetoverify++) {
- String filename = filenames[filetoverify];
-
- System.out.println(
- "#########################################################");
- System.out.println("Try to verify " + filename);
-
- try {
- javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
- org.w3c.dom.Document doc =
- db.parse(new java.io.FileInputStream(filename));
- Element nscontext = SampleUtils.createDSctx(doc, "ds", Constants.SignatureSpecNS);
-
- Element kiElement = (Element) XPathAPI.selectSingleNode(doc,
- "//ds:KeyInfo[1]", nscontext);
- KeyInfo ki = new KeyInfo(kiElement,
- (new File(filename)).toURL().toString());
- StorageResolver storageResolver = new StorageResolver(
- new CertsInFilesystemDirectoryResolver(merlinsDir + "certs"));
-
- ki.addStorageResolver(storageResolver);
-
- PublicKey pk = ki.getPublicKey();
-
- System.out.println("PublicKey" + ((pk != null)
- ? " found:"
- : " not found!!!"));
-
- if (pk != null) {
- System.out.println(" Format: " + pk.getFormat());
- System.out.println(" Algorithm: " + pk.getAlgorithm());
+ /**
+ * Method main
+ *
+ * @param unused
+ */
+ public static void main(String unused[]) {
+ javax.xml.parsers.DocumentBuilderFactory dbf =
+ javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+ dbf.setNamespaceAware(true);
+
+ String merlinsDir =
+ "data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/";
+ String ourDir =
+ "data/org/apache/xml/security/temp/key/";
+ String filenames[] = { merlinsDir +
+ /* 0 */ "signature-keyname.xml",
+ merlinsDir +
+ /* 1 */ "signature-retrievalmethod-rawx509crt.xml",
+ merlinsDir +
+ /* 2 */ "signature-x509-crt-crl.xml",
+ merlinsDir +
+ /* 3 */ "signature-x509-crt.xml",
+ merlinsDir +
+ /* 4 */ "signature-x509-is.xml",
+ merlinsDir +
+ /* 5 */ "signature-x509-ski.xml",
+ merlinsDir +
+ /* 6 */ "signature-x509-sn.xml",
+ ourDir +
+ /* 7 */ "signature-retrievalmethod-x509data.xml",
+ ourDir +
+ /* 8 */ "signature-retrievalmethod-dsavalue.xml",
+ ourDir +
+ /* 9 */ "retrieval-from-same-doc.xml"
+ };
+
+ int start = 0;
+ int end = filenames.length;
+ for (int filetoverify = start; filetoverify < end; filetoverify++) {
+ String filename = filenames[filetoverify];
+
+ System.out.println("#########################################################");
+ System.out.println("Try to verify " + filename);
+
+ try {
+ javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+ org.w3c.dom.Document doc =
+ db.parse(new java.io.FileInputStream(filename));
+ Element nscontext = SampleUtils.createDSctx(doc, "ds", Constants.SignatureSpecNS);
+
+ Element kiElement =
+ (Element) XPathAPI.selectSingleNode(doc, "//ds:KeyInfo[1]", nscontext);
+ KeyInfo ki = new KeyInfo(kiElement, (new File(filename)).toURI().toURL().toString());
+ StorageResolver storageResolver =
+ new StorageResolver(new CertsInFilesystemDirectoryResolver(merlinsDir + "certs"));
+
+ ki.addStorageResolver(storageResolver);
+
+ PublicKey pk = ki.getPublicKey();
+
+ System.out.println("PublicKey" + ((pk != null) ? " found:" : " not found!!!"));
+
+ if (pk != null) {
+ System.out.println(" Format: " + pk.getFormat());
+ System.out.println(" Algorithm: " + pk.getAlgorithm());
+ }
+
+ System.out.println(" Key: " + pk);
+ } catch (Exception ex) {
+ ex.printStackTrace();
}
-
- System.out.println(" Key: " + pk);
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- }
+ }
+ }
+
}
Modified: santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformChaining.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformChaining.java?rev=1062736&r1=1062735&r2=1062736&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformChaining.java (original)
+++ santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformChaining.java Mon Jan 24 11:31:01 2011
@@ -17,8 +17,6 @@
*/
package org.apache.xml.security.samples.transforms;
-
-
import org.apache.xml.security.signature.XMLSignatureInput;
import org.apache.xml.security.samples.SampleUtils;
import org.apache.xml.security.transforms.Transforms;
@@ -27,7 +25,6 @@ import org.apache.xml.security.utils.XML
import org.apache.xpath.XPathAPI;
import org.w3c.dom.Element;
-
/**
* This class demonstrates the use of a Transform for XSLT. The
* <CODE>xsl:stylesheet</CODE> is directly embedded in the <CODE>ds:Transform</CODE>,
@@ -38,70 +35,69 @@ import org.w3c.dom.Element;
*/
public class SampleTransformChaining {
- /**
- * Method main
- *
- * @param args
- * @throws Exception
- */
- public static void main(String args[]) throws Exception {
- //J-
- String inputStr =
- "<?xml version=\"1.0\"?>" + "\n"
- + "<Class>" + "\n"
- + " <BASE64>" + "\n"
- + " PGNvbnRhaW5lcj4KICAgPGU+SGVsbG8sIDwhLS0gY29tbWVudCAtLT4gd29ybGQhPC9lPgogICA8" + "\n"
- + " T3JkZXIgTmFtZT0nVElOQU1JRk9STUVTJyB4bWxucz0naHR0cDovL3NmZGZnLyc+CiAgICAgIDxG" + "\n"
- + " YW1pbHkgTmFtZT0nVElOQU1JREFFJz4KICAgICAgICAgPFNwZWNpZXMgU2NpZW50aWZpY19OYW1l" + "\n"
- + " PSdDcnlwdHVyZWxsdXMgYm91Y2FyZGknPlNsYXR5LWJyZWFzdGVkIFRpbmFtb3UuPC9TcGVjaWVz" + "\n"
- + " PgogICAgICA8L0ZhbWlseT4KICAgPC9PcmRlcj4KICAgPE9yZGVyIE5hbWU9J1BPRElDSVBFRElG" + "\n"
- + " T1JNRVMnLz4KPC9jb250YWluZXI+Cg==" + "\n"
- + " </BASE64>" + "\n"
- + "<Signature Id='SignatureToBeOmitted' xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
- + " <SignedInfo>" + "\n"
- + " <Reference URI=''>" + "\n"
- + " <Transforms>" + "\n"
- + " <Transform Algorithm='http://www.w3.org/TR/1999/REC-xpath-19991116'>\n"
- + " <!-- Exclude all signatures -->\n"
- + " <ds:XPath xmlns:ds='http://www.w3.org/2000/09/xmldsig#'>\n"
- + " ancestor::BASE64"
- + " </ds:XPath>\n"
- + " </Transform>\n"
- + " <Transform Algorithm='http://www.w3.org/2000/09/xmldsig#base64' />\n"
- + " <Transform Algorithm='http://www.w3.org/TR/1999/REC-xpath-19991116'>\n"
- + " <ds:XPath xmlns:ds='http://www.w3.org/2000/09/xmldsig#'>\n"
- + " not(self::container) "
- + " </ds:XPath>\n"
- + " </Transform>\n"
- + " <Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315' />\n"
- + " </Transforms>" + "\n"
- + " </Reference>" + "\n"
- + " </SignedInfo>" + "\n"
- + " </Signature>"
- + "</Class>" + "\n"
- ;
- //J+
- javax.xml.parsers.DocumentBuilderFactory dbf =
- javax.xml.parsers.DocumentBuilderFactory.newInstance();
-
- dbf.setNamespaceAware(true);
-
- javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
- org.w3c.dom.Document doc =
- db.parse(new java.io.ByteArrayInputStream(inputStr.getBytes()));
-
- // catch the ds:Transforms
- Element nscontext = SampleUtils.createDSctx(doc, "ds", Constants.SignatureSpecNS);
-
- Element transformsElement = (Element) XPathAPI.selectSingleNode(doc,
- "//ds:Transforms", nscontext);
- Transforms transforms = new Transforms(transformsElement, "memory://");
- XMLSignatureInput input = new XMLSignatureInput(doc);
-
- // execute Transforms
- XMLSignatureInput result = transforms.performTransforms(input);
-
- // output result
- System.out.println(new String(result.getBytes()));
- }
+ /**
+ * Method main
+ *
+ * @param args
+ * @throws Exception
+ */
+ public static void main(String args[]) throws Exception {
+ String inputStr =
+ "<?xml version=\"1.0\"?>" + "\n"
+ + "<Class>" + "\n"
+ + " <BASE64>" + "\n"
+ + " PGNvbnRhaW5lcj4KICAgPGU+SGVsbG8sIDwhLS0gY29tbWVudCAtLT4gd29ybGQhPC9lPgogICA8" + "\n"
+ + " T3JkZXIgTmFtZT0nVElOQU1JRk9STUVTJyB4bWxucz0naHR0cDovL3NmZGZnLyc+CiAgICAgIDxG" + "\n"
+ + " YW1pbHkgTmFtZT0nVElOQU1JREFFJz4KICAgICAgICAgPFNwZWNpZXMgU2NpZW50aWZpY19OYW1l" + "\n"
+ + " PSdDcnlwdHVyZWxsdXMgYm91Y2FyZGknPlNsYXR5LWJyZWFzdGVkIFRpbmFtb3UuPC9TcGVjaWVz" + "\n"
+ + " PgogICAgICA8L0ZhbWlseT4KICAgPC9PcmRlcj4KICAgPE9yZGVyIE5hbWU9J1BPRElDSVBFRElG" + "\n"
+ + " T1JNRVMnLz4KPC9jb250YWluZXI+Cg==" + "\n"
+ + " </BASE64>" + "\n"
+ + "<Signature Id='SignatureToBeOmitted' xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
+ + " <SignedInfo>" + "\n"
+ + " <Reference URI=''>" + "\n"
+ + " <Transforms>" + "\n"
+ + " <Transform Algorithm='http://www.w3.org/TR/1999/REC-xpath-19991116'>\n"
+ + " <!-- Exclude all signatures -->\n"
+ + " <ds:XPath xmlns:ds='http://www.w3.org/2000/09/xmldsig#'>\n"
+ + " ancestor::BASE64"
+ + " </ds:XPath>\n"
+ + " </Transform>\n"
+ + " <Transform Algorithm='http://www.w3.org/2000/09/xmldsig#base64' />\n"
+ + " <Transform Algorithm='http://www.w3.org/TR/1999/REC-xpath-19991116'>\n"
+ + " <ds:XPath xmlns:ds='http://www.w3.org/2000/09/xmldsig#'>\n"
+ + " not(self::container) "
+ + " </ds:XPath>\n"
+ + " </Transform>\n"
+ + " <Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315' />\n"
+ + " </Transforms>" + "\n"
+ + " </Reference>" + "\n"
+ + " </SignedInfo>" + "\n"
+ + " </Signature>"
+ + "</Class>" + "\n"
+ ;
+ javax.xml.parsers.DocumentBuilderFactory dbf =
+ javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+ dbf.setNamespaceAware(true);
+
+ javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+ org.w3c.dom.Document doc =
+ db.parse(new java.io.ByteArrayInputStream(inputStr.getBytes()));
+
+ // catch the ds:Transforms
+ Element nscontext = SampleUtils.createDSctx(doc, "ds", Constants.SignatureSpecNS);
+
+ Element transformsElement =
+ (Element) XPathAPI.selectSingleNode(doc, "//ds:Transforms", nscontext);
+ Transforms transforms = new Transforms(transformsElement, "memory://");
+ XMLSignatureInput input = new XMLSignatureInput(doc);
+
+ // execute Transforms
+ XMLSignatureInput result = transforms.performTransforms(input);
+
+ // output result
+ System.out.println(new String(result.getBytes()));
+ }
+
}
Modified: santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformEnvelopedSignature.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformEnvelopedSignature.java?rev=1062736&r1=1062735&r2=1062736&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformEnvelopedSignature.java (original)
+++ santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformEnvelopedSignature.java Mon Jan 24 11:31:01 2011
@@ -17,8 +17,6 @@
*/
package org.apache.xml.security.samples.transforms;
-
-
import org.apache.xml.security.signature.XMLSignatureInput;
import org.apache.xml.security.samples.SampleUtils;
import org.apache.xml.security.transforms.Transforms;
@@ -28,7 +26,6 @@ import org.apache.xpath.XPathAPI;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
-
/**
* This class demonstrates the use of a Transform forEnveloped Signature.
*
@@ -37,62 +34,62 @@ import org.w3c.dom.Node;
*/
public class SampleTransformEnvelopedSignature {
- /**
- * Method main
- *
- * @param args
- * @throws Exception
- */
- public static void main(String args[]) throws Exception {
- //J-
- String inputStr =
- "<?xml version=\"1.0\"?>" + "\n"
- + "<Document xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
- + " <Data attr='attrValue'>text in Data</Data>" + "\n"
- + "<Signature Id='SignatureToBeOmitted' xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
- + " <SignedInfo>" + "\n"
- + " <Reference>" + "\n"
- + " <Transforms>" + "\n"
- // + " <Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments' />" + "\n"
- + " <Transform Algorithm='http://www.w3.org/2000/09/xmldsig#enveloped-signature' />" + "\n"
- + " <Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments' />" + "\n"
- + " </Transforms>" + "\n"
- + " </Reference>" + "\n"
- + " </SignedInfo>" + "\n"
- + " </Signature>"
- + " <Signature Id='VisibleSignature' xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
- + " <SignedInfo xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
- + " <Reference xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
- + " <Transforms xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
- + " <Transform Algorithm='http://www.w3.org/2000/09/xmldsig#enveloped-signature' />" + "\n"
- + " <Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments' />" + "\n"
- + " </Transforms>" + "\n"
- + " </Reference>" + "\n"
- + " </SignedInfo>" + "\n"
- + " </Signature>" + "\n"
- + "</Document>" + "\n"
- ;
- //J+
- javax.xml.parsers.DocumentBuilderFactory dbf =
- javax.xml.parsers.DocumentBuilderFactory.newInstance();
-
- dbf.setNamespaceAware(true);
-
- javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
- org.w3c.dom.Document doc =
- db.parse(new java.io.ByteArrayInputStream(inputStr.getBytes()));
- Element nscontext = SampleUtils.createDSctx(doc, "ds", Constants.SignatureSpecNS);
-
- Element transformsElem = (Element) XPathAPI.selectSingleNode(
- doc, "//ds:Signature[@Id='SignatureToBeOmitted']//ds:Transforms",
- nscontext);
- Transforms transforms = new Transforms(transformsElem, "memory://");
- XMLSignatureInput input = new XMLSignatureInput((Node) doc);
-
- // input.setCanonicalizerURI(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
-
- XMLSignatureInput result = transforms.performTransforms(input);
-
- System.out.println(new String(result.getBytes()));
- }
+ /**
+ * Method main
+ *
+ * @param args
+ * @throws Exception
+ */
+ public static void main(String args[]) throws Exception {
+ String inputStr =
+ "<?xml version=\"1.0\"?>" + "\n"
+ + "<Document xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
+ + " <Data attr='attrValue'>text in Data</Data>" + "\n"
+ + "<Signature Id='SignatureToBeOmitted' xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
+ + " <SignedInfo>" + "\n"
+ + " <Reference>" + "\n"
+ + " <Transforms>" + "\n"
+ // + " <Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments' />" + "\n"
+ + " <Transform Algorithm='http://www.w3.org/2000/09/xmldsig#enveloped-signature' />" + "\n"
+ + " <Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments' />" + "\n"
+ + " </Transforms>" + "\n"
+ + " </Reference>" + "\n"
+ + " </SignedInfo>" + "\n"
+ + " </Signature>"
+ + " <Signature Id='VisibleSignature' xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
+ + " <SignedInfo xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
+ + " <Reference xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
+ + " <Transforms xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
+ + " <Transform Algorithm='http://www.w3.org/2000/09/xmldsig#enveloped-signature' />" + "\n"
+ + " <Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments' />" + "\n"
+ + " </Transforms>" + "\n"
+ + " </Reference>" + "\n"
+ + " </SignedInfo>" + "\n"
+ + " </Signature>" + "\n"
+ + "</Document>" + "\n"
+ ;
+ javax.xml.parsers.DocumentBuilderFactory dbf =
+ javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+ dbf.setNamespaceAware(true);
+
+ javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+ org.w3c.dom.Document doc =
+ db.parse(new java.io.ByteArrayInputStream(inputStr.getBytes()));
+ Element nscontext = SampleUtils.createDSctx(doc, "ds", Constants.SignatureSpecNS);
+
+ Element transformsElem =
+ (Element) XPathAPI.selectSingleNode(
+ doc, "//ds:Signature[@Id='SignatureToBeOmitted']//ds:Transforms", nscontext
+ );
+ Transforms transforms = new Transforms(transformsElem, "memory://");
+ XMLSignatureInput input = new XMLSignatureInput((Node) doc);
+
+ // input.setCanonicalizerURI(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+
+ XMLSignatureInput result = transforms.performTransforms(input);
+
+ System.out.println(new String(result.getBytes()));
+ }
+
}
Modified: santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformNone.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformNone.java?rev=1062736&r1=1062735&r2=1062736&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformNone.java (original)
+++ santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformNone.java Mon Jan 24 11:31:01 2011
@@ -17,13 +17,10 @@
*/
package org.apache.xml.security.samples.transforms;
-
-
import org.apache.xml.security.signature.XMLSignatureInput;
import org.apache.xml.security.transforms.Transform;
import org.apache.xml.security.transforms.TransformSpi;
-
/**
* Implements a null transform which leaved the input unmodified.
*
@@ -31,42 +28,40 @@ import org.apache.xml.security.transform
*/
public class SampleTransformNone extends TransformSpi {
- /** {@link org.apache.commons.logging} logging facility */
+ /** {@link org.apache.commons.logging} logging facility */
static org.apache.commons.logging.Log log =
- org.apache.commons.logging.LogFactory.getLog(
- SampleTransformNone.class.getName());
+ org.apache.commons.logging.LogFactory.getLog(SampleTransformNone.class.getName());
+
+ /** Field implementedTransformURI */
+ public static final String implementedTransformURI =
+ "http://www.xmlsecurity.org/NS/Transforms#none";
+
+ static {
+ org.apache.xml.security.Init.init();
+ }
+
+ /**
+ * Method engineGetURI
+ *
+ *
+ */
+ protected String engineGetURI() {
+ return SampleTransformNone.implementedTransformURI;
+ }
+
+ public boolean wantsOctetStream () { return true; }
+ public boolean wantsNodeSet () { return true; }
+ public boolean returnsOctetStream () { return true; }
+ public boolean returnsNodeSet () { return true; }
+
+ /**
+ * Method enginePerformTransform
+ *
+ * @param input
+ *
+ */
+ protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input, Transform _transformObject) {
+ return input;
+ }
- /** Field implementedTransformURI */
- public static final String implementedTransformURI =
- "http://www.xmlsecurity.org/NS/Transforms#none";
-
- /**
- * Method engineGetURI
- *
- *
- */
- protected String engineGetURI() {
- return SampleTransformNone.implementedTransformURI;
- }
-
- //J-
- public boolean wantsOctetStream () { return true; }
- public boolean wantsNodeSet () { return true; }
- public boolean returnsOctetStream () { return true; }
- public boolean returnsNodeSet () { return true; }
- //J+
-
- /**
- * Method enginePerformTransform
- *
- * @param input
- *
- */
- protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input, Transform _transformObject) {
- return input;
- }
-
- static {
- org.apache.xml.security.Init.init();
- }
}
Modified: santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXPath.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXPath.java?rev=1062736&r1=1062735&r2=1062736&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXPath.java (original)
+++ santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXPath.java Mon Jan 24 11:31:01 2011
@@ -17,12 +17,9 @@
*/
package org.apache.xml.security.samples.transforms;
-
-
import org.apache.xml.security.signature.XMLSignatureInput;
import org.apache.xml.security.transforms.Transforms;
-
/**
* This class demonstrates the use of a Transform for XSLT. The
* <CODE>xsl:stylesheet</CODE> is directly embedded in the <CODE>ds:Transform</CODE>,
@@ -33,68 +30,67 @@ import org.apache.xml.security.transform
*/
public class SampleTransformXPath {
- /**
- * Method main
- *
- * @param args
- * @throws Exception
- */
- public static void main(String args[]) throws Exception {
- //J-
- String transformStr =
- "<?xml version='1.0'?>\n"
- + "<Transforms xmlns='http://www.w3.org/2000/09/xmldsig#'>\n"
- + "<Transform Algorithm='http://www.w3.org/TR/1999/REC-xpath-19991116'>\n"
- // + " <ds:XPath xmlns:match='http://sfdfg/'>(self::match:Order | self::text()[string(parent::e)=\"Hello, world!\"])</ds:XPath>\n"
- // + " <ds:XPath>//@*</ds:XPath>\n"
- + " <!-- Exclude all signatures -->\n"
- // + " <ds:XPath xmlns:ds='http://www.w3.org/2000/09/xmldsig#'>not(ancestor-or-self::ds:Signature)</ds:XPath>\n"
- + " <ds:XPath xmlns:ds='http://www.w3.org/2000/09/xmldsig#'>self::text()[ancestor-or-self::node()=/Class/e[1]]</ds:XPath>\n"
- + "</Transform>\n"
- + "</Transforms>\n"
- ;
-
- String inputStr =
- "<?xml version=\"1.0\"?>" + "\n"
- + "<Class>" + "\n"
- + " <e>Hello, <!-- comment --> world!</e>" + "\n"
- + " <Order Name='TINAMIFORMES' xmlns='http://sfdfg/'>" + "\n"
- + " <Family Name='TINAMIDAE'>" + "\n"
- + " <Species Scientific_Name='Crypturellus boucardi'>Slaty-breasted Tinamou.</Species>" + "\n"
- + " </Family>" + "\n"
- + " </Order>" + "\n"
- + " <Order Name='PODICIPEDIFORMES'/>" + "\n"
- + "<Signature Id='SignatureToBeOmitted' xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
- + " <SignedInfo>" + "\n"
- + " <Reference>" + "\n"
- + " <Transforms>" + "\n"
- + " <Transform Algorithm='http://www.w3.org/2000/09/xmldsig#enveloped-signature' />" + "\n"
-// + " <Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments' />" + "\n"
- + " </Transforms>" + "\n"
- + " </Reference>" + "\n"
- + " </SignedInfo>" + "\n"
- + " </Signature>"
- + "</Class>" + "\n"
- ;
- //J+
- javax.xml.parsers.DocumentBuilderFactory dbf =
- javax.xml.parsers.DocumentBuilderFactory.newInstance();
-
- dbf.setNamespaceAware(true);
-
- javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
- org.w3c.dom.Document doc =
- db.parse(new java.io.ByteArrayInputStream(transformStr.getBytes()));
-
- String BaseURI = null;
- Transforms transforms = new Transforms(doc.getDocumentElement(), BaseURI);
-
- XMLSignatureInput input = new XMLSignatureInput(inputStr.getBytes());
-
- // input.setCanonicalizerURI(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
-
- XMLSignatureInput result = transforms.performTransforms(input);
-
- System.out.println(new String(result.getBytes()));
- }
+ /**
+ * Method main
+ *
+ * @param args
+ * @throws Exception
+ */
+ public static void main(String args[]) throws Exception {
+ String transformStr =
+ "<?xml version='1.0'?>\n"
+ + "<Transforms xmlns='http://www.w3.org/2000/09/xmldsig#'>\n"
+ + "<Transform Algorithm='http://www.w3.org/TR/1999/REC-xpath-19991116'>\n"
+ // + " <ds:XPath xmlns:match='http://sfdfg/'>(self::match:Order | self::text()[string(parent::e)=\"Hello, world!\"])</ds:XPath>\n"
+ // + " <ds:XPath>//@*</ds:XPath>\n"
+ + " <!-- Exclude all signatures -->\n"
+ // + " <ds:XPath xmlns:ds='http://www.w3.org/2000/09/xmldsig#'>not(ancestor-or-self::ds:Signature)</ds:XPath>\n"
+ + " <ds:XPath xmlns:ds='http://www.w3.org/2000/09/xmldsig#'>self::text()[ancestor-or-self::node()=/Class/e[1]]</ds:XPath>\n"
+ + "</Transform>\n"
+ + "</Transforms>\n"
+ ;
+
+ String inputStr =
+ "<?xml version=\"1.0\"?>" + "\n"
+ + "<Class>" + "\n"
+ + " <e>Hello, <!-- comment --> world!</e>" + "\n"
+ + " <Order Name='TINAMIFORMES' xmlns='http://sfdfg/'>" + "\n"
+ + " <Family Name='TINAMIDAE'>" + "\n"
+ + " <Species Scientific_Name='Crypturellus boucardi'>Slaty-breasted Tinamou.</Species>" + "\n"
+ + " </Family>" + "\n"
+ + " </Order>" + "\n"
+ + " <Order Name='PODICIPEDIFORMES'/>" + "\n"
+ + "<Signature Id='SignatureToBeOmitted' xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
+ + " <SignedInfo>" + "\n"
+ + " <Reference>" + "\n"
+ + " <Transforms>" + "\n"
+ + " <Transform Algorithm='http://www.w3.org/2000/09/xmldsig#enveloped-signature' />" + "\n"
+ // + " <Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments' />" + "\n"
+ + " </Transforms>" + "\n"
+ + " </Reference>" + "\n"
+ + " </SignedInfo>" + "\n"
+ + " </Signature>"
+ + "</Class>" + "\n"
+ ;
+ javax.xml.parsers.DocumentBuilderFactory dbf =
+ javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+ dbf.setNamespaceAware(true);
+
+ javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+ org.w3c.dom.Document doc =
+ db.parse(new java.io.ByteArrayInputStream(transformStr.getBytes()));
+
+ String BaseURI = null;
+ Transforms transforms = new Transforms(doc.getDocumentElement(), BaseURI);
+
+ XMLSignatureInput input = new XMLSignatureInput(inputStr.getBytes());
+
+ // input.setCanonicalizerURI(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+
+ XMLSignatureInput result = transforms.performTransforms(input);
+
+ System.out.println(new String(result.getBytes()));
+ }
+
}
Modified: santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXPath2Filter.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXPath2Filter.java?rev=1062736&r1=1062735&r2=1062736&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXPath2Filter.java (original)
+++ santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXPath2Filter.java Mon Jan 24 11:31:01 2011
@@ -16,8 +16,6 @@
*/
package org.apache.xml.security.samples.transforms;
-
-
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
@@ -36,7 +34,6 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
-
/**
* Sample for the <I>XML Signature XPath Filter v2.0</I>
*
@@ -46,173 +43,161 @@ import org.w3c.dom.NodeList;
*/
public class SampleTransformXPath2Filter {
- /**
- * Method main
- *
- * @param args
- * @throws Exception
- */
- public static void main(String args[]) throws Exception {
-
- org.apache.xml.security.Init.init();
-
- boolean verbose = true;
-
- create("withComments.xml", true, verbose);
- System.out.println();
- System.out.println();
- System.out.println();
- create("omitComments.xml", false, verbose);
- System.out.println();
- System.out.println();
- System.out.println();
- check("withComments.xml");
- }
-
- /**
- * Method create
- *
- * @param filename
- * @param withComments
- * @param verbose
- * @throws Exception
- */
- public static void create(
- String filename, boolean withComments, boolean verbose)
- throws Exception {
-
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-
- dbf.setNamespaceAware(true);
-
- DocumentBuilder db = dbf.newDocumentBuilder();
- //J-
- String inputDoc =
-"<Document>\n" +
-" <ToBeSigned>\n" +
-" <!-- comment -->\n" +
-" <Data />\n" +
-" <NotToBeSigned>\n" +
-" <ReallyToBeSigned>\n" +
-" <!-- comment -->\n" +
-" <Data />\n" +
-" </ReallyToBeSigned>\n" +
-" </NotToBeSigned>\n" +
-" </ToBeSigned>\n" +
-" <ToBeSigned>\n" +
-" <Data />\n" +
-" <NotToBeSigned>\n" +
-" <Data />\n" +
-" </NotToBeSigned>\n" +
-" </ToBeSigned>\n" +
-"</Document>";
- //J+
- Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
- XMLSignature sig = new XMLSignature(doc, null,
- XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
-
- doc.getDocumentElement().appendChild(sig.getElement());
- doc.getDocumentElement().appendChild(doc.createTextNode("\n"));
-
- Transforms transforms = new Transforms(doc);
-
- String filters[][] = {{XPath2FilterContainer.INTERSECT, "//ToBeSigned"},
- {XPath2FilterContainer.SUBTRACT, "//NotToBeSigned"},
- {XPath2FilterContainer.UNION, "//ReallyToBeSigned"}};
- //J-
-
- transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER, XPath2FilterContainer.newInstances(doc, filters));
- if (withComments) {
- transforms.addTransform(Transforms.TRANSFORM_C14N_WITH_COMMENTS);
- }
-
- /*
- XPath2FilterContainer x = XPath2FilterContainer.newInstanceSubtract(doc, "here()/ancestor::ds:Signature[1]");
- x.setXPathNamespaceContext("ds", Constants.SignatureSpecNS);
- transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER, x.getElement());
- */
- //J+
- sig.addDocument("#xpointer(/)", transforms);
-
- String secretKey = "secret";
-
- sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
- + "\" are used for signing ("
- + secretKey.length() + " octets)");
- sig.sign(sig.createSecretKey(secretKey.getBytes()));
-
- Canonicalizer c14n =
- Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
- byte[] full = c14n.canonicalizeSubtree(doc);
- FileOutputStream fos = new FileOutputStream(filename);
-
- try {
- fos.write(full);
- } finally {
- fos.close();
- }
-
- if (verbose) {
- System.out.println(
- "-------------------------------------------------------------");
- System.out.println("Input to the transforms is");
- System.out.println(
+ /**
+ * Method main
+ *
+ * @param args
+ * @throws Exception
+ */
+ public static void main(String args[]) throws Exception {
+
+ org.apache.xml.security.Init.init();
+
+ boolean verbose = true;
+
+ create("withComments.xml", true, verbose);
+ System.out.println();
+ System.out.println();
+ System.out.println();
+ create("omitComments.xml", false, verbose);
+ System.out.println();
+ System.out.println();
+ System.out.println();
+ check("withComments.xml");
+ }
+
+ /**
+ * Method create
+ *
+ * @param filename
+ * @param withComments
+ * @param verbose
+ * @throws Exception
+ */
+ public static void create(
+ String filename, boolean withComments, boolean verbose
+ ) throws Exception {
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+ dbf.setNamespaceAware(true);
+
+ DocumentBuilder db = dbf.newDocumentBuilder();
+ String inputDoc =
+ "<Document>\n" +
+ " <ToBeSigned>\n" +
+ " <!-- comment -->\n" +
+ " <Data />\n" +
+ " <NotToBeSigned>\n" +
+ " <ReallyToBeSigned>\n" +
+ " <!-- comment -->\n" +
+ " <Data />\n" +
+ " </ReallyToBeSigned>\n" +
+ " </NotToBeSigned>\n" +
+ " </ToBeSigned>\n" +
+ " <ToBeSigned>\n" +
+ " <Data />\n" +
+ " <NotToBeSigned>\n" +
+ " <Data />\n" +
+ " </NotToBeSigned>\n" +
+ " </ToBeSigned>\n" +
+ "</Document>";
+ Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+ XMLSignature sig = new XMLSignature(doc, null, XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+ doc.getDocumentElement().appendChild(sig.getElement());
+ doc.getDocumentElement().appendChild(doc.createTextNode("\n"));
+
+ Transforms transforms = new Transforms(doc);
+
+ String filters[][] = {{XPath2FilterContainer.INTERSECT, "//ToBeSigned"},
+ {XPath2FilterContainer.SUBTRACT, "//NotToBeSigned"},
+ {XPath2FilterContainer.UNION, "//ReallyToBeSigned"}};
+
+ transforms.addTransform(
+ Transforms.TRANSFORM_XPATH2FILTER, XPath2FilterContainer.newInstances(doc, filters)
+ );
+ if (withComments) {
+ transforms.addTransform(Transforms.TRANSFORM_C14N_WITH_COMMENTS);
+ }
+
+ sig.addDocument("#xpointer(/)", transforms);
+
+ String secretKey = "secret";
+
+ sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+ + "\" are used for signing (" + secretKey.length() + " octets)");
+ sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+ Canonicalizer c14n =
+ Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+ byte[] full = c14n.canonicalizeSubtree(doc);
+ FileOutputStream fos = new FileOutputStream(filename);
+
+ try {
+ fos.write(full);
+ } finally {
+ fos.close();
+ }
+
+ if (verbose) {
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println("Input to the transforms is");
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println(
+ new String(sig.getSignedInfo().item(0).getContentsBeforeTransformation().getBytes())
+ );
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println("The signed octets (output of the transforms) are ");
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println(
+ new String(sig.getSignedInfo().item(0).getTransformsOutput().getBytes())
+ );
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println("The document is ");
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println(new String(full));
+ System.out.println(
+ "-------------------------------------------------------------");
+ }
+
+ JavaUtils.writeBytesToFilename(
+ "xfilter2.html", sig.getSignedInfo().item(0).getHTMLRepresentation().getBytes()
+ );
+ }
+
+ /**
+ * Method check
+ *
+ * @param filename
+ * @throws Exception
+ */
+ public static void check(String filename) throws Exception {
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+ dbf.setNamespaceAware(true);
+
+ DocumentBuilder db = dbf.newDocumentBuilder();
+ Document doc = db.parse(new FileInputStream(filename));
+ NodeList sigs = doc.getElementsByTagNameNS(Constants.SignatureSpecNS, Constants._TAG_SIGNATURE);
+
+ XMLSignature sig =
+ new XMLSignature((Element)sigs.item(0), new File(filename).toURI().toURL().toString());
+ boolean check = sig.checkSignatureValue(sig.createSecretKey("secret".getBytes()));
+
+ System.out.println(
"-------------------------------------------------------------");
- System.out
- .println(new String(sig.getSignedInfo().item(0).getContentsBeforeTransformation()
- .getBytes()));
- System.out.println(
+ System.out.println("Verification of " + filename + ": " + check);
+ System.out.println(
"-------------------------------------------------------------");
- System.out
- .println("The signed octets (output of the transforms) are ");
- System.out.println(
+ System.out.println(new String(sig.getSignedInfo().item(0).getTransformsOutput().getBytes()));
+ System.out.println(
"-------------------------------------------------------------");
- System.out
- .println(new String(sig.getSignedInfo().item(0)
- .getTransformsOutput().getBytes()));
- System.out.println(
- "-------------------------------------------------------------");
- System.out.println("The document is ");
- System.out.println(
- "-------------------------------------------------------------");
- System.out.println(new String(full));
- System.out.println(
- "-------------------------------------------------------------");
- }
-
- JavaUtils.writeBytesToFilename("xfilter2.html",
- sig.getSignedInfo().item(0).getHTMLRepresentation().getBytes());
- }
-
- /**
- * Method check
- *
- * @param filename
- * @throws Exception
- */
- public static void check(String filename) throws Exception {
-
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-
- dbf.setNamespaceAware(true);
-
- DocumentBuilder db = dbf.newDocumentBuilder();
- Document doc = db.parse(new FileInputStream(filename));
- NodeList sigs = doc.getElementsByTagNameNS(Constants.SignatureSpecNS, Constants._TAG_SIGNATURE);
-
- XMLSignature sig = new XMLSignature((Element)sigs.item(0), new File(filename).toURL().toString());
- boolean check = sig.checkSignatureValue(sig.createSecretKey("secret".getBytes()));
-
- System.out.println(
- "-------------------------------------------------------------");
- System.out.println("Verification of " + filename + ": " + check);
- System.out.println(
- "-------------------------------------------------------------");
- System.out
- .println(new String(sig.getSignedInfo().item(0)
- .getTransformsOutput().getBytes()));
- System.out.println(
- "-------------------------------------------------------------");
-
- }
+ }
+
}
Modified: santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXPath2Filter2.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXPath2Filter2.java?rev=1062736&r1=1062735&r2=1062736&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXPath2Filter2.java (original)
+++ santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXPath2Filter2.java Mon Jan 24 11:31:01 2011
@@ -17,8 +17,6 @@
package org.apache.xml.security.samples.transforms;
-
-
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
@@ -42,175 +40,163 @@ import org.w3c.dom.NodeList;
* Sample for the <I>XML Signature XPath Filter v2.0</I>
*
* @author $Author$
- * @see <A HREF="http://www.w3.org/TR/xmldsig-filter2/">XPath Filter v2.0 (TR)</
-A>
- * @see <A HREF=http://www.w3.org/Signature/Drafts/xmldsig-xfilter2/">XPath Filt
-er v2.0 (editors copy)</A>
+ * @see <A HREF="http://www.w3.org/TR/xmldsig-filter2/">XPath Filter v2.0 (TR)</A>
+ * @see <A HREF=http://www.w3.org/Signature/Drafts/xmldsig-xfilter2/">
+ * XPath Filter v2.0 (editors copy)</A>
*/
-
public class SampleTransformXPath2Filter2 {
- /**
- * Method main
- *
- * @param args
- * @throws Exception
- */
- public static void main(String args[]) throws Exception {
-
- org.apache.xml.security.Init.init();
-
- boolean verbose = true;
-
- create("withComments.xml", true, verbose);
- System.out.println();
- System.out.println();
- System.out.println();
- create("omitComments.xml", false, verbose);
- System.out.println();
- System.out.println();
- System.out.println();
- check("withComments.xml");
- }
-
- /**
- * Method create
- *
- * @param filename
- * @param withComments
- * @param verbose
- * @throws Exception
- */
- public static void create(
- String filename, boolean withComments, boolean verbose)
- throws Exception {
-
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-
- dbf.setNamespaceAware(true);
-
- DocumentBuilder db = dbf.newDocumentBuilder();
- //J-
- String inputDoc = "<A><UNSIGNED><B><SIGNED><MORE_SIGNED_STUFF/></SIGNED><C><UNSIGNED/></C></B><D><UNSIGNED/></D><UNSIGNED><E><SIGNED><MORE_SIGNED_STUFF/></SIGNED></E><UNSIGNED><F><G><H/></G></F></UNSIGNED></UNSIGNED></UNSIGNED></A>";
-
- //J+
- Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
- XMLSignature sig = new XMLSignature(doc, null,
- XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
-
- doc.getDocumentElement().appendChild(sig.getElement());
- sig.getElement().setAttributeNS(Constants.NamespaceSpecNS, "xmlns:" + ElementProxy.getDefaultPrefix(Transforms.TRANSFORM_XPATH2FILTER), Transforms.TRANSFORM_XPATH2FILTER);
- doc.getDocumentElement().appendChild(doc.createTextNode("\n"));
-
- Transforms transforms = new Transforms(doc);
- //J-
-
- transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
- XPath2FilterContainer.newInstanceIntersect(doc, "//E").getElement());
-
- transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
- XPath2FilterContainer.newInstanceUnion(doc, "//B").getElement());
- transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
- XPath2FilterContainer.newInstanceSubtract(doc, "//C").getElement());
-
- transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
- XPath2FilterContainer.newInstanceUnion(doc, "//F").getElement());
- transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
- XPath2FilterContainer.newInstanceSubtract(doc, "//G").getElement());
- transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
- XPath2FilterContainer.newInstanceUnion(doc, "//H").getElement());
-
-
- /*
- XPath2FilterContainer x = XPath2FilterContainer.newInstanceSubtract(doc, "here()/ancestor::ds:Signature[1]");
- x.setXPathNamespaceContext("ds", Constants.SignatureSpecNS);
- transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER, x.getElement());
- if (withComments) {
- transforms.addTransform(Transforms.TRANSFORM_C14N_WITH_COMMENTS);
- }
- */
- //J+
- sig.addDocument("", transforms);
-
- String secretKey = "secret";
-
- sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
- + "\" are used for signing ("
- + secretKey.length() + " octets)");
- sig.sign(sig.createSecretKey(secretKey.getBytes()));
-
- Canonicalizer c14n =
- Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
- byte[] full = c14n.canonicalizeSubtree(doc);
- FileOutputStream fos = new FileOutputStream(filename);
-
- try {
- fos.write(full);
- } finally {
- fos.close();
- }
-
- if (verbose) {
- System.out.println(
- "-------------------------------------------------------------");
- System.out.println("Input to the transforms is");
- System.out.println(
- "-------------------------------------------------------------");
- System.out
- .println(new String(sig.getSignedInfo().item(0).getContentsBeforeTransformation()
- .getBytes()));
- System.out.println(
- "-------------------------------------------------------------");
- System.out
+ /**
+ * Method main
+ *
+ * @param args
+ * @throws Exception
+ */
+ public static void main(String args[]) throws Exception {
+
+ org.apache.xml.security.Init.init();
+
+ boolean verbose = true;
+
+ create("withComments.xml", true, verbose);
+ System.out.println();
+ System.out.println();
+ System.out.println();
+ create("omitComments.xml", false, verbose);
+ System.out.println();
+ System.out.println();
+ System.out.println();
+ check("withComments.xml");
+ }
+
+ /**
+ * Method create
+ *
+ * @param filename
+ * @param withComments
+ * @param verbose
+ * @throws Exception
+ */
+ public static void create(
+ String filename, boolean withComments, boolean verbose
+ ) throws Exception {
+
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+ dbf.setNamespaceAware(true);
+
+ DocumentBuilder db = dbf.newDocumentBuilder();
+ String inputDoc = "<A><UNSIGNED><B><SIGNED><MORE_SIGNED_STUFF/></SIGNED><C><UNSIGNED/></C></B><D><UNSIGNED/></D><UNSIGNED><E><SIGNED><MORE_SIGNED_STUFF/></SIGNED></E><UNSIGNED><F><G><H/></G></F></UNSIGNED></UNSIGNED></UNSIGNED></A>";
+
+ Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+ XMLSignature sig = new XMLSignature(doc, null, XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+ doc.getDocumentElement().appendChild(sig.getElement());
+ sig.getElement().setAttributeNS(
+ Constants.NamespaceSpecNS,
+ "xmlns:" + ElementProxy.getDefaultPrefix(Transforms.TRANSFORM_XPATH2FILTER),
+ Transforms.TRANSFORM_XPATH2FILTER
+ );
+ doc.getDocumentElement().appendChild(doc.createTextNode("\n"));
+
+ Transforms transforms = new Transforms(doc);
+
+ transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+ XPath2FilterContainer.newInstanceIntersect(doc, "//E").getElement());
+
+ transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+ XPath2FilterContainer.newInstanceUnion(doc, "//B").getElement());
+ transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+ XPath2FilterContainer.newInstanceSubtract(doc, "//C").getElement());
+
+ transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+ XPath2FilterContainer.newInstanceUnion(doc, "//F").getElement());
+ transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+ XPath2FilterContainer.newInstanceSubtract(doc, "//G").getElement());
+ transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+ XPath2FilterContainer.newInstanceUnion(doc, "//H").getElement());
+
+ sig.addDocument("", transforms);
+
+ String secretKey = "secret";
+
+ sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+ + "\" are used for signing (" + secretKey.length() + " octets)");
+ sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+ Canonicalizer c14n =
+ Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+ byte[] full = c14n.canonicalizeSubtree(doc);
+ FileOutputStream fos = new FileOutputStream(filename);
+
+ try {
+ fos.write(full);
+ } finally {
+ fos.close();
+ }
+
+ if (verbose) {
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println("Input to the transforms is");
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println(
+ new String(sig.getSignedInfo().item(0).getContentsBeforeTransformation().getBytes())
+ );
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out
.println("The signed octets (output of the transforms) are ");
- System.out.println(
- "-------------------------------------------------------------");
- System.out
- .println(new String(sig.getSignedInfo().item(0)
- .getTransformsOutput().getBytes()));
- System.out.println(
- "-------------------------------------------------------------");
- System.out.println("The document is ");
- System.out.println(
- "-------------------------------------------------------------");
- System.out.println(new String(full));
- System.out.println(
- "-------------------------------------------------------------");
- }
- }
-
- /**
- * Method check
- *
- * @param filename
- * @throws Exception
- */
- public static void check(String filename) throws Exception {
-
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-
- dbf.setNamespaceAware(true);
-
- DocumentBuilder db = dbf.newDocumentBuilder();
- Document doc = db.parse(new FileInputStream(filename));
- NodeList sigs = doc.getElementsByTagNameNS(Constants.SignatureSpecNS, Constants._TAG_SIGNATURE);
-
- XMLSignature sig = new XMLSignature((Element)sigs.item(0), new File(filename).toURL().toString());
- boolean check = sig.checkSignatureValue(sig.createSecretKey("secret".getBytes()));
-
- System.out.println(
- "-------------------------------------------------------------");
- System.out.println("Verification of " + filename + ": " + check);
- System.out.println(
- "-------------------------------------------------------------");
- System.out
- .println(new String(sig.getSignedInfo().item(0)
- .getTransformsOutput().getBytes()));
- System.out.println(
- "-------------------------------------------------------------");
-
- JavaUtils.writeBytesToFilename("1.html", sig.getSignedInfo().item(0).getHTMLRepresentation().getBytes());
-
- }
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println(
+ new String(sig.getSignedInfo().item(0).getTransformsOutput().getBytes())
+ );
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println("The document is ");
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println(new String(full));
+ System.out.println(
+ "-------------------------------------------------------------");
+ }
+ }
+
+ /**
+ * Method check
+ *
+ * @param filename
+ * @throws Exception
+ */
+ public static void check(String filename) throws Exception {
+
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+ dbf.setNamespaceAware(true);
+
+ DocumentBuilder db = dbf.newDocumentBuilder();
+ Document doc = db.parse(new FileInputStream(filename));
+ NodeList sigs = doc.getElementsByTagNameNS(Constants.SignatureSpecNS, Constants._TAG_SIGNATURE);
+
+ XMLSignature sig =
+ new XMLSignature((Element)sigs.item(0), new File(filename).toURI().toURL().toString());
+ boolean check = sig.checkSignatureValue(sig.createSecretKey("secret".getBytes()));
+
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println("Verification of " + filename + ": " + check);
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println(new String(sig.getSignedInfo().item(0).getTransformsOutput().getBytes()));
+ System.out.println(
+ "-------------------------------------------------------------");
+
+ JavaUtils.writeBytesToFilename(
+ "1.html", sig.getSignedInfo().item(0).getHTMLRepresentation().getBytes()
+ );
+ }
+
}
Modified: santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXPathFilterCHGP.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXPathFilterCHGP.java?rev=1062736&r1=1062735&r2=1062736&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXPathFilterCHGP.java (original)
+++ santuario/xml-security-java/trunk/samples/org/apache/xml/security/samples/transforms/SampleTransformXPathFilterCHGP.java Mon Jan 24 11:31:01 2011
@@ -16,8 +16,6 @@
*/
package org.apache.xml.security.samples.transforms;
-
-
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
@@ -35,7 +33,6 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
-
/**
* Sample for the <I>XML Signature XPath Filter v2.0</I>
*
@@ -45,221 +42,199 @@ import org.w3c.dom.NodeList;
*/
public class SampleTransformXPathFilterCHGP {
- /**
- * Method main
- *
- * @param args
- * @throws Exception
- */
- public static void main(String args[]) throws Exception {
-
- org.apache.xml.security.Init.init();
-
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-
- dbf.setNamespaceAware(true);
-
- DocumentBuilder db = dbf.newDocumentBuilder();
-
- // String inputDoc = "<A><U><B><S><S><S></S><S><S></S><S></S></S><S></S></S><S><S></S></S></S><C><U><U><U><U></U><U><U></U><U></U></U><U></U></U><U><U></U></U></U></U></C></B><D><U></U></D><U><E><S><S><S></S><S><S></S><S></S></S><S></S></S><S><S></S></S></S></E><U><F><G><H/></G></F></U></U></U></A>";
- // String inputDoc = "<A><U><B><S></S><C><U></U></C></B><D><U></U></D><U><E><S></S></E><U><F><G><H/></G></F></U></U></U></A>";
- String inputDoc =
- "<A xmlns:foo=\"http://foo.bar/\">\n<U>\n<U>\n<U>\n<U>\n<U>\n<B foo:attr=\"attr\">\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<C>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</
U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</C>\n</B>\n<D>\n<U/>\n</D>\n<U>\n<E>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n</E>\n<U>\n<F>\n<G>\n<H/>\n<G>\n<H/>\n</G>\n</G>\n</F>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</A>\n";
- Document doc;
-
- doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
-
- SampleTransformXPathFilterCHGP.outApache(doc);
-
- doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
-
- SampleTransformXPathFilterCHGP.outXFilter2(doc);
- }
-
- /**
- * Method outApache
- *
- * @param doc
- * @throws Exception
- */
- static void outApache(Document doc) throws Exception {
-
- XMLSignature sig = new XMLSignature(doc, null,
- XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
-
- doc.getDocumentElement().appendChild(sig.getElement());
-
- Transforms transforms = new Transforms(doc);
- String includeButSearchStr = "//B | //E | //F | //H";
- String excludeButSearchStr = "//G";
-
- // String excludeStr = "//C | //D | //ds:Signature";
- String excludeStr =
- "//C | //D | here()/ancestor::ds:Signature[1] | //@x:attr";
- boolean includeSlashPolicy = XPathFilterCHGPContainer.ExcludeSlash;
- XPathFilterCHGPContainer xpathContainer =
- XPathFilterCHGPContainer.getInstance(doc, includeSlashPolicy,
- includeButSearchStr,
- excludeButSearchStr, excludeStr);
-
- xpathContainer.setXPathNamespaceContext("ds", Constants.SignatureSpecNS);
- xpathContainer.setXPathNamespaceContext("x", "http://foo.bar/");
- transforms.addTransform(Transforms.TRANSFORM_XPATHFILTERCHGP,
- xpathContainer.getElement());
- sig.addDocument("", transforms);
-
- String secretKey = "secret";
-
- sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
- + "\" are used for signing ("
- + secretKey.length() + " octets)");
- sig.sign(sig.createSecretKey(secretKey.getBytes()));
-
- Canonicalizer c14n =
- Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
- byte[] full = c14n.canonicalizeSubtree(doc);
-
- System.out.println(
- "-------------------------------------------------------------");
- System.out.println("The signed octets (output of the transforms) are ");
- System.out.println(
- "-------------------------------------------------------------");
- System.out
- .println(new String(sig.getSignedInfo().item(0).getTransformsOutput()
- .getBytes()));
- System.out.println(
- "-------------------------------------------------------------");
- System.out.println("The document is ");
- System.out.println(
- "-------------------------------------------------------------");
- System.out.println(new String(full));
- System.out.println(
- "-------------------------------------------------------------");
-
- Element sE =
- (Element) doc.getElementsByTagNameNS(Constants.SignatureSpecNS,
- Constants._TAG_SIGNATURE).item(0);
- XMLSignature sigVer = new XMLSignature(sE, null);
- boolean verify =
- sigVer.checkSignatureValue(sigVer
- .createSecretKey("secret".getBytes()));
-
- System.out.println("verify: " + verify);
- }
-
- /**
- * Method outXFilter2
- *
- * @param doc
- * @throws Exception
- */
- static void outXFilter2(Document doc) throws Exception {
-
- XMLSignature sig = new XMLSignature(doc, null,
- XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
-
- doc.getDocumentElement().appendChild(sig.getElement());
-
- Transforms transforms = new Transforms(doc);
-
- transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
- XPath2FilterContainer.newInstanceIntersect(doc,
- "//E").getElement());
- transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
- XPath2FilterContainer.newInstanceUnion(doc,
- "//B").getElement());
- transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
- XPath2FilterContainer.newInstanceSubtract(doc,
- "//C").getElement());
- transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
- XPath2FilterContainer.newInstanceUnion(doc,
- "//F").getElement());
- transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
- XPath2FilterContainer.newInstanceSubtract(doc,
- "//G").getElement());
- transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
- XPath2FilterContainer.newInstanceUnion(doc,
- "//H").getElement());
- transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
- XPath2FilterContainer.newInstanceSubtract(doc,
- "//@x:attr").getElement());
- transforms.setXPathNamespaceContext("xmlns:x", "http://foo.bar/");
- transforms
- .setXPathNamespaceContext(Transforms
- .getDefaultPrefix(Transforms.TRANSFORM_XPATH2FILTER), Transforms
- .TRANSFORM_XPATH2FILTER);
- sig.addDocument("", transforms);
-
- String secretKey = "secret";
-
- sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
- + "\" are used for signing ("
- + secretKey.length() + " octets)");
- sig.sign(sig.createSecretKey(secretKey.getBytes()));
-
- Canonicalizer c14n =
- Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
- byte[] full = c14n.canonicalizeSubtree(doc);
-
- System.out.println(
- "-------------------------------------------------------------");
- System.out.println("The signed octets (output of the transforms) are ");
- System.out.println(
- "-------------------------------------------------------------");
- System.out
- .println(new String(sig.getSignedInfo().item(0).getTransformsOutput()
- .getBytes()));
- System.out.println(
- "-------------------------------------------------------------");
- System.out.println("The document is ");
- System.out.println(
- "-------------------------------------------------------------");
- System.out.println(new String(full));
- System.out.println(
- "-------------------------------------------------------------");
-
- Element sE =
- (Element) doc.getElementsByTagNameNS(Constants.SignatureSpecNS,
- Constants._TAG_SIGNATURE).item(0);
- XMLSignature sigVer = new XMLSignature(sE, null);
- boolean verify =
- sigVer.checkSignatureValue(sigVer
- .createSecretKey("secret".getBytes()));
-
- System.out.println("verify: " + verify);
- }
-
- /**
- * Method check
- *
- * @param filename
- * @throws Exception
- */
- public static void check(String filename) throws Exception {
-
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-
- dbf.setNamespaceAware(true);
-
- DocumentBuilder db = dbf.newDocumentBuilder();
- Document doc = db.parse(new FileInputStream(filename));
- NodeList sigs = doc.getElementsByTagNameNS(Constants.SignatureSpecNS,
- Constants._TAG_SIGNATURE);
- XMLSignature sig =
- new XMLSignature((Element) sigs.item(0),
- new File(filename).toURL().toString());
- boolean check =
- sig.checkSignatureValue(sig.createSecretKey("secret".getBytes()));
-
- System.out.println(
- "-------------------------------------------------------------");
- System.out.println("Verification of " + filename + ": " + check);
- System.out.println(
- "-------------------------------------------------------------");
- System.out
- .println(new String(sig.getSignedInfo().item(0).getTransformsOutput()
- .getBytes()));
- System.out.println(
- "-------------------------------------------------------------");
- }
+ /**
+ * Method main
+ *
+ * @param args
+ * @throws Exception
+ */
+ public static void main(String args[]) throws Exception {
+
+ org.apache.xml.security.Init.init();
+
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+ dbf.setNamespaceAware(true);
+
+ DocumentBuilder db = dbf.newDocumentBuilder();
+
+ // String inputDoc = "<A><U><B><S><S><S></S><S><S></S><S></S></S><S></S></S><S><S></S></S></S><C><U><U><U><U></U><U><U></U><U></U></U><U></U></U><U><U></U></U></U></U></C></B><D><U></U></D><U><E><S><S><S></S><S><S></S><S></S></S><S></S></S><S><S></S></S></S></E><U><F><G><H/></G></F></U></U></U></A>";
+ // String inputDoc = "<A><U><B><S></S><C><U></U></C></B><D><U></U></D><U><E><S></S></E><U><F><G><H/></G></F></U></U></U></A>";
+ String inputDoc =
+ "<A xmlns:foo=\"http://foo.bar/\">\n<U>\n<U>\n<U>\n<U>\n<U>\n<B foo:attr=\"attr\">\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<C>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\
n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</C>\n</B>\n<D>\n<U/>\n</D>\n<U>\n<E>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n</E>\n<U>\n<F>\n<G>\n<H/>\n<G>\n<H/>\n</G>\n</G>\n</F>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</A>\n";
+ Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+
+ SampleTransformXPathFilterCHGP.outApache(doc);
+
+ doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+
+ SampleTransformXPathFilterCHGP.outXFilter2(doc);
+ }
+
+ /**
+ * Method outApache
+ *
+ * @param doc
+ * @throws Exception
+ */
+ static void outApache(Document doc) throws Exception {
+
+ XMLSignature sig = new XMLSignature(doc, null, XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+ doc.getDocumentElement().appendChild(sig.getElement());
+
+ Transforms transforms = new Transforms(doc);
+ String includeButSearchStr = "//B | //E | //F | //H";
+ String excludeButSearchStr = "//G";
+
+ // String excludeStr = "//C | //D | //ds:Signature";
+ String excludeStr =
+ "//C | //D | here()/ancestor::ds:Signature[1] | //@x:attr";
+ boolean includeSlashPolicy = XPathFilterCHGPContainer.ExcludeSlash;
+ XPathFilterCHGPContainer xpathContainer =
+ XPathFilterCHGPContainer.getInstance(doc, includeSlashPolicy,
+ includeButSearchStr,
+ excludeButSearchStr, excludeStr);
+
+ xpathContainer.setXPathNamespaceContext("ds", Constants.SignatureSpecNS);
+ xpathContainer.setXPathNamespaceContext("x", "http://foo.bar/");
+ transforms.addTransform(Transforms.TRANSFORM_XPATHFILTERCHGP, xpathContainer.getElement());
+ sig.addDocument("", transforms);
+
+ String secretKey = "secret";
+
+ sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+ + "\" are used for signing (" + secretKey.length() + " octets)");
+ sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+ Canonicalizer c14n =
+ Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+ byte[] full = c14n.canonicalizeSubtree(doc);
+
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println("The signed octets (output of the transforms) are ");
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println(new String(sig.getSignedInfo().item(0).getTransformsOutput().getBytes()));
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println("The document is ");
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println(new String(full));
+ System.out.println(
+ "-------------------------------------------------------------");
+
+ Element sE =
+ (Element) doc.getElementsByTagNameNS(Constants.SignatureSpecNS,
+ Constants._TAG_SIGNATURE).item(0);
+ XMLSignature sigVer = new XMLSignature(sE, null);
+ boolean verify =
+ sigVer.checkSignatureValue(sigVer.createSecretKey("secret".getBytes()));
+
+ System.out.println("verify: " + verify);
+ }
+
+ /**
+ * Method outXFilter2
+ *
+ * @param doc
+ * @throws Exception
+ */
+ static void outXFilter2(Document doc) throws Exception {
+
+ XMLSignature sig = new XMLSignature(doc, null, XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+ doc.getDocumentElement().appendChild(sig.getElement());
+
+ Transforms transforms = new Transforms(doc);
+
+ transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+ XPath2FilterContainer.newInstanceIntersect(doc, "//E").getElement());
+ transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+ XPath2FilterContainer.newInstanceUnion(doc, "//B").getElement());
+ transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+ XPath2FilterContainer.newInstanceSubtract(doc, "//C").getElement());
+ transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+ XPath2FilterContainer.newInstanceUnion(doc, "//F").getElement());
+ transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+ XPath2FilterContainer.newInstanceSubtract(doc, "//G").getElement());
+ transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+ XPath2FilterContainer.newInstanceUnion(doc, "//H").getElement());
+ transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+ XPath2FilterContainer.newInstanceSubtract(doc,
+ "//@x:attr").getElement());
+ transforms.setXPathNamespaceContext("xmlns:x", "http://foo.bar/");
+ transforms.setXPathNamespaceContext(
+ Transforms.getDefaultPrefix(
+ Transforms.TRANSFORM_XPATH2FILTER),
+ Transforms.TRANSFORM_XPATH2FILTER
+ );
+ sig.addDocument("", transforms);
+
+ String secretKey = "secret";
+
+ sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+ + "\" are used for signing (" + secretKey.length() + " octets)");
+ sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+ Canonicalizer c14n =
+ Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+ byte[] full = c14n.canonicalizeSubtree(doc);
+
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println("The signed octets (output of the transforms) are ");
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println(new String(sig.getSignedInfo().item(0).getTransformsOutput().getBytes()));
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println("The document is ");
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println(new String(full));
+ System.out.println(
+ "-------------------------------------------------------------");
+
+ Element sE =
+ (Element) doc.getElementsByTagNameNS(Constants.SignatureSpecNS,
+ Constants._TAG_SIGNATURE).item(0);
+ XMLSignature sigVer = new XMLSignature(sE, null);
+ boolean verify =
+ sigVer.checkSignatureValue(sigVer.createSecretKey("secret".getBytes()));
+
+ System.out.println("verify: " + verify);
+ }
+
+ /**
+ * Method check
+ *
+ * @param filename
+ * @throws Exception
+ */
+ public static void check(String filename) throws Exception {
+
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+ dbf.setNamespaceAware(true);
+
+ DocumentBuilder db = dbf.newDocumentBuilder();
+ Document doc = db.parse(new FileInputStream(filename));
+ NodeList sigs = doc.getElementsByTagNameNS(Constants.SignatureSpecNS, Constants._TAG_SIGNATURE);
+ XMLSignature sig =
+ new XMLSignature((Element) sigs.item(0), new File(filename).toURI().toURL().toString());
+ boolean check =
+ sig.checkSignatureValue(sig.createSecretKey("secret".getBytes()));
+
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println("Verification of " + filename + ": " + check);
+ System.out.println(
+ "-------------------------------------------------------------");
+ System.out.println(new String(sig.getSignedInfo().item(0).getTransformsOutput().getBytes()));
+ System.out.println(
+ "-------------------------------------------------------------");
+ }
}