<Name id="1">Doe</Name>
<Address>900 N. Michigan Ave</Address>
<City>Chicago</City>
Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="
http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" />
</Transforms>
<DigestMethod Algorithm="
http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>76zcPvLBWmU4TOU1sOWkC4JDhoA=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>Kb/sxAEihzsGdglrn18vZiJDYoJtRVwLoAm6p7dj8h90ZN/O909+Wg==</SignatureValue>
KeyInfo>
<X509Data>
<X509Certificate>MIIDDjCCAssCBD9OHkgwCwYHKoZIzjgEAwUAMGwxEDAOBgNVBAYTB1Vua25vd24xEDAOBgNVBAgT B1Vua25vd24xEDAOBgNVBAcTB1Vua25vd24xEDAOBgNVBAoTB1Vua25vd24xEDAOBgNVBAsTB1Vu a25vd24xEDAOBgNVBAMTB1Vua25vd24wHhcNMDMwODI4MTUyMjQ4WhcNMDMxMTI2MTUyMjQ4WjBs MRAwDgYDVQQGEwdVbmtub3duMRAwDgYDVQQIEwdVbmtub3duMRAwDgYDVQQHEwdVbmtub3duMRAw DgYDVQQKEwdVbmtub3duMRAwDgYDVQQLEwdVbmtub3duMRAwDgYDVQQDEwdVbmtub3duMIIBuDCC ASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7 WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E +4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUC gYEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6Ewo FhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWf BpKLZl6Ae1UlZAFMO/7PSSoDgYUAAoGBAM3ggtd5Nk+c3yDnQWtejbjnKPMyxcWZq3zbgFeTsKz2 KuWHtX3kyYT75noYqwNHptP4tvW1S6ayNF1yKVWg/28XwT4KAMNj8dBJQ4K6xHcGP19SkfnGlBoh hniQ8m6r6E8CX87VrcXAA3NwyfqxvVqsic1haEeTnnjdij1jKPCyMAsGByqGSM44BAMFAAMwADAt AhUAhN8q+NKUhQNkM/4cTEHQvrl4xI0CFCbgfHawM6hvjAUWzcm2q231Jvfa</X509Certificate>
</X509Data>
<KeyValue>
<DSAKeyValue>
<P>/X9TgR11EilS30qcLuzk5/YRt1I870QAwx4/gLZRJmlFXUAiUftZPY1Y+r/F9bow9subVWzXgTuA HTRv8mZgt2uZUKWkn5/oBHsQIsJPu6nX/rfGG/g7V+fGqKYVDwT7g/bTxR7DAjVUE1oWkTL2dfOu K2HXKu/yIgMZndFIAcc=</P>
<Q>l2BQjxUjC8yykrmCouuEC/BYHPU=</Q>
<G>9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3 zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKL Zl6Ae1UlZAFMO/7PSSo=</G>
<Y>zeCC13k2T5zfIOdBa16NuOco8zLFxZmrfNuAV5OwrPYq5Ye1feTJhPvmehirA0em0/i29bVLprI0 XXIpVaD/bxfBPgoAw2Px0ElDgrrEdwY/X1KR+caUGiGGeJDybqvoTwJfztWtxcADc3DJ+rG9WqyJ zWFoR5OeeN2KPWMo8LI=</Y>
</DSAKeyValue>
</KeyValue>
</KeyInfo>
</Signature>
</Data>
String keystoreType = "JKS";
String keystoreFile = "keystore.jks";
String keystorePass = "xmlsecurity";
String privateKeyAlias = "test";
String privateKeyPass = "xmlsecurity";
String certificateAlias = "test";
File signatureFile = new File("signature.xml");
File signatureFile = new File("signature.xml");
KeyStore ks = KeyStore.getInstance(keystoreType);
FileInputStream fis = new FileInputStream(keystoreFile);
ks.load(fis, keystorePass.toCharArray
());
PrivateKey privateKey = (PrivateKey) ks.getKey(privateKeyAlias,
privateKeyPass.toCharArray());
javax.xml.parsers.DocumentBuilderFactory dbf =
javax.xml.parsers.DocumentBuilderFactory.newInstance();
javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
org.w3c.dom.Document doc = db.parse(signatureFile );
Element sourceElement =
doc.getDocumentElement();
String BaseURI = signatureFile.toURL().toString();
XMLSignature sig = new XMLSignature(doc, BaseURI ,
XMLSignature.ALGO_ID_SIGNATURE_DSA
);
sourceElement.appendChild(sig.getElement());
Transforms transforms = new Transforms(doc);
transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
transforms.addTransform
(Transforms.TRANSFORM_C14N_WITH_COMMENTS);
sig.addDocument("", transforms, Constants.ALGO_ID_DIGEST_SHA1);
X509Certificate cert =
(X509Certificate) ks.getCertificate(certificateAlias);
sig.addKeyInfo(cert);
sig.addKeyInfo(cert.getPublicKey());
System.out.println("Start signing");
sig.sign(privateKey);
System.out.println("Finished signing");
FileOutputStream f = new FileOutputStream(signatureFile);
XMLUtils.outputDOMc14nWithComments(doc, f);
