org.w3c.dom.Element dom = fomToDom((Element)element.clone(), options);
org.w3c.dom.Document domdoc = dom.getOwnerDocument();
PrivateKey signingKey = options.getSigningKey();
X509Certificate cert = options.getCertificate();
IRI baseUri = element.getResolvedBaseUri();
XMLSignature sig = new XMLSignature(
domdoc,
(baseUri != null) ? baseUri.toString() : "",
XMLSignature.ALGO_ID_SIGNATURE_DSA);
dom.appendChild(sig.getElement());
Transforms transforms = new Transforms(domdoc);
transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
transforms.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);
sig.addDocument("", transforms, org.apache.xml.security.utils.Constants.ALGO_ID_DIGEST_SHA1);
String[] refs = options.getReferences();
for (String ref : refs) sig.addDocument(ref);
sig.addKeyInfo(cert);
sig.addKeyInfo(cert.getPublicKey());
sig.sign(signingKey);
return (T)domToFom(dom, options);
}