All, When using the DOM implementation you can request which elements of the X509 data you want to appear in the signature.
// add x509 data X509Data x509data = new X509Data(document); x509data.add(new XMLX509SubjectName(document, certificate)); x509data.add(new XMLX509IssuerSerial(document, certificate)); In the StAX implementation, we appear to be limited to the following public static final KeyIdentifier KeyIdentifier_KeyValue = new KeyIdentifier("KeyValue"); public static final KeyIdentifier KeyIdentifier_KeyName = new KeyIdentifier("KeyName"); public static final KeyIdentifier KeyIdentifier_IssuerSerial = new KeyIdentifier("IssuerSerial"); public static final KeyIdentifier KeyIdentifier_SkiKeyIdentifier = new KeyIdentifier("SkiKeyIdentifier"); public static final KeyIdentifier KeyIdentifier_X509KeyIdentifier = new KeyIdentifier("X509KeyIdentifier"); public static final KeyIdentifier KeyIdentifier_X509SubjectName = new KeyIdentifier("X509SubjectName"); public static final KeyIdentifier KeyIdentifier_NoKeyInfo = new KeyIdentifier("NoKeyInfo"); public static final KeyIdentifier KeyIdentifier_EncryptedKey = new KeyIdentifier("EncryptedKey"); In the StAX implementation, I can either choose KeyIdentifier_IssuerSerial or KeyIdentifier_X509SubutbjectName but not both as we could with the DOM code fragment above. The reason I ask is that we have a service provider who has stipulated a strict format for the signature to be used when signing and sending data to them <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/2001/04/xmldsig-more#rsa-sha256"/> <Reference URI=""> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <Transform Algorithm="http://www.w3.org/2006/12/xml-c14n11"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <DigestValue>xe/kONljHYOi5X1sw8AmgIjbHw/SX8zjAT98zpJahhI=</DigestValue> </Reference> </SignedInfo> <SignatureValue>7vdS9h04J/slnfUO1aoQ/RvbvWE=</SignatureValue> <KeyInfo> <X509Data> <X509SubjectName>CN=rsa0,OU=rtp,O=org,L=location,ST=Unknown,C=</X509SubjectName> <X509IssuerSerial> <X509IssuerName>CN=sign0, OU=rtp, O=org, L=location, ST=Unknown,C=</X509IssuerName> <X509SerialNumber>1328092436</X509SerialNumber> </X509IssuerSerial> </X509Data> </KeyInfo> </Signature> Regards Tony "FINASTRA" is the trade name of the FINASTRA group of companies. This email and any attachments have been scanned for known viruses using multiple scanners. This email message is intended for the named recipient only. It may be privileged and/or confidential. If you are not the named recipient of this email please notify us immediately and do not copy it or use it for any purpose, nor disclose its contents to any other person. This email does not constitute the commencement of legal relations between you and FINASTRA. Please refer to the executed contract between you and the relevant member of the FINASTRA group for the identity of the contracting party with which you are dealing.