Class XAdESSignatureBuilder

  • All Implemented Interfaces:
    SignatureBuilder

    public abstract class XAdESSignatureBuilder
    extends XAdESBuilder
    implements SignatureBuilder
    This class implements all the necessary mechanisms to build each form of the XML signature.
    • Field Detail

      • built

        protected boolean built
        Indicates if the signature was already built. (Two steps building)
      • detachedDocument

        protected DSSDocument detachedDocument
        This is the reference to the original document to sign
      • DEFAULT_CANONICALIZATION_METHOD

        protected static final String DEFAULT_CANONICALIZATION_METHOD
        The default Canonicalization method. Will be used if another is not specified.
        See Also:
        Constant Field Values
      • keyInfoCanonicalizationMethod

        protected String keyInfoCanonicalizationMethod
      • signedInfoCanonicalizationMethod

        protected String signedInfoCanonicalizationMethod
      • signedPropertiesCanonicalizationMethod

        protected String signedPropertiesCanonicalizationMethod
      • deterministicId

        protected final String deterministicId
      • signatureDom

        protected Element signatureDom
      • keyInfoDom

        protected Element keyInfoDom
      • signedInfoDom

        protected Element signedInfoDom
      • signatureValueDom

        protected Element signatureValueDom
      • qualifyingPropertiesDom

        protected Element qualifyingPropertiesDom
      • signedPropertiesDom

        protected Element signedPropertiesDom
      • signedSignaturePropertiesDom

        protected Element signedSignaturePropertiesDom
      • signedDataObjectPropertiesDom

        protected Element signedDataObjectPropertiesDom
      • unsignedSignaturePropertiesDom

        protected Element unsignedSignaturePropertiesDom
    • Constructor Detail

      • XAdESSignatureBuilder

        public XAdESSignatureBuilder​(XAdESSignatureParameters params,
                                     DSSDocument detachedDocument,
                                     CertificateVerifier certificateVerifier)
        The default constructor for SignatureBuilder.
        Parameters:
        params - The set of parameters relating to the structure and process of the creation or extension of the electronic signature.
        detachedDocument - The original document to sign.
        certificateVerifier - the certificate verifier with its OCSPSource,...
    • Method Detail

      • getSignatureBuilder

        public static XAdESSignatureBuilder getSignatureBuilder​(XAdESSignatureParameters params,
                                                                DSSDocument document,
                                                                CertificateVerifier certificateVerifier)
        Creates the signature according to the packaging
        Parameters:
        params - The set of parameters relating to the structure and process of the creation or extension of the electronic signature.
        document - The original document to sign.
        certificateVerifier - the certificate verifier with its OCSPSource,...
        Returns:
        the signature builder linked to the packaging
      • build

        public byte[] build()
                     throws DSSException
        This is the main method which is called to build the XML signature
        Returns:
        A byte array is returned with XML that represents the canonicalized SignedInfo segment of signature. This data are used to define the SignatureValue element.
        Throws:
        DSSException - if an error occurred
      • incorporateFiles

        protected void incorporateFiles()
      • buildRootDocumentDom

        protected Document buildRootDocumentDom()
      • incorporateSignatureDom

        public void incorporateSignatureDom()
        This method creates a new instance of Signature element.
      • getParentNodeOfSignature

        protected Node getParentNodeOfSignature()
      • incorporateSignedInfo

        public void incorporateSignedInfo()
        This method incorporates the SignedInfo tag
          
           	<ds:SignedInfo>
         			<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
           		<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
           		...
           	</ds:SignedInfo>
          
         
      • incorporateKeyInfo

        protected void incorporateKeyInfo()
                                   throws DSSException
        Creates KeyInfo tag. NOTE: when trust anchor baseline profile policy is defined only the certificates previous to the trust anchor are included.
                
         		<ds:KeyInfo>
         			<ds:X509Data>
          			<ds:X509Certificate>
         					MIIB....
         				</ds:X509Certificate>
         				<ds:X509Certificate>
         					MIIB+...
         				</ds:X509Certificate>
         			</ds:X509Data>
         		</ds:KeyInfo>
         
         
                
         		<ds:KeyInfo>
         			<ds:X509Data>
          			<ds:X509Certificate>
         					MIIB....
         				</ds:X509Certificate>
         				<ds:X509Certificate>
         					MIIB+...
         				</ds:X509Certificate>
         			</ds:X509Data>
         		</ds:KeyInfo>
         
         
        Throws:
        DSSException - if an error occurred
      • incorporateObject

        protected void incorporateObject()
        This method incorporates the ds:Object tag
                
         		<ds:Object>
         			<xades:QualifyingProperties>
         				<xades:SignedProperties>
         					...
         				</xades:SignedProperties>
         			</xades:QualifyingProperties>
         		</ds:Object>
         
         
      • incorporateReferenceSignedProperties

        protected void incorporateReferenceSignedProperties()
        This method incorporates ds:References
                
         		<ds:Reference Type="http://uri.etsi.org/01903#SignedProperties" URI=
        	"#xades-id-A43023AFEB149830C242377CC941360F">
        			<ds:Transforms>
        				<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
        			</ds:Transforms>
        			<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
        			<ds:DigestValue>uijX/nvuu8g10ZVEklEnYatvFe8=</ds:DigestValue>
        		</ds:Reference>
         
         
      • incorporateReferenceKeyInfo

        protected void incorporateReferenceKeyInfo()
        Method incorporates KeyInfo ds:References.
                
         		<ds:Reference URI="#keyInfo-id-A43023AFEB149830C242377CC941360F">
        			<ds:Transforms>
        				<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
        			</ds:Transforms>
        			<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
        			<ds:DigestValue>uijX/nvuu2g10ZVEklEnYatvFe4=</ds:DigestValue>
        		</ds:Reference>
         
         
      • transformReference

        protected abstract DSSDocument transformReference​(DSSReference reference)
        This method performs the reference transformation. Note that for the time being (4.3.0-RC) only two types of transformation are implemented: canonicalization Transforms.TRANSFORM_XPATH and can be applied only for SignaturePackaging.ENVELOPED.
        Parameters:
        reference - DSSReference to be transformed
        Returns:
        DSSDocument containing transformed reference's data
      • incorporateSignatureValue

        protected void incorporateSignatureValue()
        This method incorporates the signature value.
      • incorporateSignedProperties

        protected void incorporateSignedProperties()
        Creates the SignedProperties DOM object element.
         
         		<SignedProperties Id="xades-ide5c549340079fe19f3f90f03354a5965">
         
         
      • incorporateSignedSignatureProperties

        protected void incorporateSignedSignatureProperties()
        Creates the SignedSignatureProperties DOM object element.
         
         		<SignedSignatureProperties>
         		...
         		</SignedSignatureProperties>
         
         
      • addTimestamp

        protected void addTimestamp​(Element timestampElement,
                                    TimestampToken token)
        Adds the content of a timestamp into a given timestamp element
        Parameters:
        timestampElement -
      • getNodeToCanonicalize

        protected Node getNodeToCanonicalize​(Node node)