// signature generation processes require this step. XMLObject in
// JSR-105 models the optional Object element we briefly discussed
// before.
Document XML = dbf.newDocumentBuilder().parse(new File(XML_SOURCE));
Node invoice = XML.getDocumentElement();
XMLStructure content = new DOMStructure(invoice);
XMLObject obj = fac.newXMLObject(Collections.singletonList(content), "invoice", null, null);
// Step 4: Create the SignedInfo object.
SignedInfo si = fac.newSignedInfo(fac.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS, (C14NMethodParameterSpec) null),
fac.newSignatureMethod(SignatureMethod.DSA_SHA1, null), Collections.singletonList(ref));