Package eu.europa.esig.dss.validation
Class DefaultAdvancedSignature
java.lang.Object
eu.europa.esig.dss.validation.DefaultAdvancedSignature
- All Implemented Interfaces:
AdvancedSignature,Serializable
- Direct Known Subclasses:
CAdESSignature,JAdESSignature,XAdESSignature
public abstract class DefaultAdvancedSignature extends Object implements AdvancedSignature
A common implementation of
AdvancedSignature- See Also:
- Serialized Form
-
Field Summary
Fields Modifier and Type Field Description protected List<AdvancedSignature>counterSignaturesCached list of embedded counter signaturesprotected List<DSSDocument>detachedContentsIn case of a detached signature this is the signed document.protected ManifestFilemanifestFileIn case of a ASiC-E signature this is the found related manifest file.protected SignatureCertificateSourceofflineCertificateSourceCached offline signature certificate sourceprotected List<ReferenceValidation>referenceValidationsThis variable contains a list of reference validations (reference tag for XAdES or message-digest for CAdES)protected OfflineCRLSourcesignatureCRLSourceCached offline signature CRL sourceprotected SignatureCryptographicVerificationsignatureCryptographicVerificationThis variable contains the result of the signature mathematical validation.protected SignatureIdentifiersignatureIdentifierUnique signature identifierprotected OfflineOCSPSourcesignatureOCSPSourceCached offline signature OCSP sourceprotected SignaturePolicysignaturePolicyThe SignaturePolicy identifierprotected TimestampSourcesignatureTimestampSourceCached offline signature timestamp sourceprotected CertificateSourcesigningCertificateSourceThe certificate source of a signing certificateprotected List<String>structureValidationMessagesA list of error messages occurred during a structure validation -
Constructor Summary
Constructors Constructor Description DefaultAdvancedSignature() -
Method Summary
Modifier and Type Method Description voidaddExternalTimestamp(TimestampToken timestamp)This method allows to add an external timestamp.booleanareAllSelfSignedCertificates()Checks if all certificate chains present in the signature are self-signedbooleanequals(Object obj)voidfindSignatureScope(SignatureScopeFinder signatureScopeFinder)Runs SignatureScopeFinderList<TimestampToken>getAllTimestamps()Returns a list of all timestamps found in the signatureList<TimestampToken>getArchiveTimestamps()Returns the archive TimestampsCandidatesForSigningCertificategetCandidatesForSigningCertificate()ETSI TS 101 733 V2.2.1 (2013-04) 5.6.3 Signature Verification Process ...the public key from the first certificate identified in the sequence of certificate identifiers from SigningCertificate shall be the key used to verify the digital signature.List<CertificateToken>getCertificates()Returns an unmodifiable list of all certificate tokens encapsulated in the signatureListCertificateSourcegetCertificateSourcesExceptLastArchiveTimestamp()ListCertificateSourcegetCompleteCertificateSource()Gets a ListCertificateSource representing a merged source fromsignatureCertificateSourceand all included to the signature timestamp objectsListRevocationSource<CRL>getCompleteCRLSource()Gets a ListRevocationSource representing a merged source fromsignatureCRLSourseand all included to the signature timestamp objectsListRevocationSource<OCSP>getCompleteOCSPSource()Gets a ListRevocationSource representing a merged source fromsignatureOCSPSourseand all included to the signature timestamp objectsList<DSSDocument>getContainerContents()Returns container's contentList<TimestampToken>getContentTimestamps()Returns the content timestampsprotected ListCertificateSourcegetCounterSignaturesCertificateSource()Returns a merged certificate source for values incorporated within counter signaturesprotected ListRevocationSource<CRL>getCounterSignaturesCRLSource()Returns a merged CRL source for values incorporated within counter signaturesprotected ListRevocationSource<OCSP>getCounterSignaturesOCSPSource()Returns a merged OCSP source for values incorporated within counter signaturesList<DSSDocument>getDetachedContents()Returns detached contentsList<TimestampToken>getDocumentTimestamps()Returns a list of timestamps defined with the 'DocTimeStamp' type NOTE: applicable only for PAdESSignatureIdentifiergetDSSId()This method returns theSignatureIdentifier.StringgetId()This method returns the DSS unique signature id.ManifestFilegetManifestFile()This method returns a relatedManifestFilein the case of ASiC-E signature.AdvancedSignaturegetMasterSignature()Gets master signatureSignatureCryptographicVerificationgetSignatureCryptographicVerification()Gets signature's cryptographic validation resultStringgetSignatureFilename()This method returns the signature filename (useful for ASiC and multiple signature files)protected abstract SignatureIdentifierBuildergetSignatureIdentifierBuilder()Returns a builder to define and build a signature IdList<SignatureScope>getSignatureScopes()Returns a list of found SignatureScopes NOTE: the methodfindSignatureScope(signatureScopeFinder)shall be called beforeList<TimestampToken>getSignatureTimestamps()Returns the signature timestampsValidationContextgetSignatureValidationContext(CertificateVerifier certificateVerifier)This method validates the signing certificate and all timestamps.List<SignerRole>getSignerRoles()Returns the list of roles of the signer.CertificateTokengetSigningCertificateToken()This method returns the signing certificate token or null if there is no valid signing certificate.List<String>getStructureValidationResult()Returns a message if the structure validation failsList<TimestampToken>getTimestampsX1()Returns the time-stamp which is placed on the digital signature (XAdES example: ds:SignatureValue element), the signature time-stamp(s) present in the AdES-T form, the certification path references and the revocation status references.List<TimestampToken>getTimestampsX2()Returns the time-stamp which is computed over the concatenation of CompleteCertificateRefs and CompleteRevocationRefs elements (XAdES example).inthashCode()booleanhasLTAProfile()Checks if the LTA-level is present in the signaturebooleanhasLTProfile()Checks if the LT-level is present in the signaturebooleanhasTProfile()Checks if the T-level is present in the signaturebooleanisCounterSignature()Checks if the current signature is a counter signature (i.e. has a Master signature)booleanisDocHashOnlyValidation()Returns true if the validation of the signature has been performed only on Signer's Document Representation (SDR).booleanisHashOnlyValidation()Returns true if the validation of the signature has been performed only on Data To Be Signed Representation (DTBSR).voidprepareCounterSignatures(ValidationContext validationContext)This method adds to theValidationContextall counter signatures embedded into the current signature.voidprepareOfflineCertificateVerifier(CertificateVerifier certificateVerifier)This method prepares an offline CertificateVerifier.voidprepareTimestamps(ValidationContext validationContext)This method adds to theValidationContextall timestamps to be validated.voidresetCertificateSource()This method resets the source of certificates.voidresetRevocationSources()This method resets the sources of the revocation data.voidresetTimestampSource()This method resets the timestamp source.voidsetContainerContents(List<DSSDocument> containerContents)This method allows to set the archive container contents in the case of ASiC-S signature.voidsetDetachedContents(List<DSSDocument> detachedContents)This method allows to set the signed contents in the case of the detached signature.voidsetManifestFile(ManifestFile manifestFile)This method allows to set a manifest file in the case of ASiC-E signature.voidsetMasterSignature(AdvancedSignature masterSignature)This setter allows to indicate the master signature.voidsetSignatureFilename(String signatureFilename)This method allows to set the signature filename (useful in case of ASiC)voidsetSigningCertificateSource(CertificateSource signingCertificateSource)Set a certificate source which allows to find the signing certificate by kid or certificate's digestStringtoString()protected List<String>validateStructure()This method processes the structure validation of the signature.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface eu.europa.esig.dss.validation.AdvancedSignature
checkSignatureIntegrity, getCertificateSource, getCertifiedSignerRoles, getClaimedSignerRoles, getCommitmentTypeIndications, getContentType, getCounterSignatures, getCRLSource, getDAIdentifier, getDataFoundUpToLevel, getDataToBeSignedRepresentation, getDigestAlgorithm, getEncryptionAlgorithm, getMaskGenerationFunction, getMimeType, getOCSPSource, getReferenceValidations, getSignatureAlgorithm, getSignatureDigestReference, getSignatureForm, getSignaturePolicy, getSignaturePolicyStore, getSignatureProductionPlace, getSignatureValue, getSignedAssertions, getSigningTime, getTimestampSource
-
Field Details
-
detachedContents
In case of a detached signature this is the signed document. -
manifestFile
In case of a ASiC-E signature this is the found related manifest file. -
referenceValidations
This variable contains a list of reference validations (reference tag for XAdES or message-digest for CAdES) -
signatureCryptographicVerification
This variable contains the result of the signature mathematical validation. It is initialised when the methodcheckSignatureIntegrityis called. -
structureValidationMessages
A list of error messages occurred during a structure validation -
signingCertificateSource
The certificate source of a signing certificate -
offlineCertificateSource
Cached offline signature certificate source -
signatureCRLSource
Cached offline signature CRL source -
signatureOCSPSource
Cached offline signature OCSP source -
signatureTimestampSource
Cached offline signature timestamp source -
counterSignatures
Cached list of embedded counter signatures -
signaturePolicy
The SignaturePolicy identifier -
signatureIdentifier
Unique signature identifier
-
-
Constructor Details
-
DefaultAdvancedSignature
public DefaultAdvancedSignature()
-
-
Method Details
-
getSignatureIdentifierBuilder
Returns a builder to define and build a signature Id- Returns:
SignatureIdentifierBuilder
-
setSigningCertificateSource
Description copied from interface:AdvancedSignatureSet a certificate source which allows to find the signing certificate by kid or certificate's digest- Specified by:
setSigningCertificateSourcein interfaceAdvancedSignature- Parameters:
signingCertificateSource- the certificate source to resolve missing signing certificate
-
getSignatureFilename
Description copied from interface:AdvancedSignatureThis method returns the signature filename (useful for ASiC and multiple signature files)- Specified by:
getSignatureFilenamein interfaceAdvancedSignature- Returns:
- the signature filename
-
setSignatureFilename
Description copied from interface:AdvancedSignatureThis method allows to set the signature filename (useful in case of ASiC)- Specified by:
setSignatureFilenamein interfaceAdvancedSignature- Parameters:
signatureFilename-String
-
getDetachedContents
Description copied from interface:AdvancedSignatureReturns detached contents- Specified by:
getDetachedContentsin interfaceAdvancedSignature- Returns:
- in the case of the detached signature this is the
Listof signed contents.
-
setDetachedContents
Description copied from interface:AdvancedSignatureThis method allows to set the signed contents in the case of the detached signature.- Specified by:
setDetachedContentsin interfaceAdvancedSignature- Parameters:
detachedContents-ListofDSSDocumentrepresenting the signed detached contents.
-
getContainerContents
Description copied from interface:AdvancedSignatureReturns container's content- Specified by:
getContainerContentsin interfaceAdvancedSignature- Returns:
- in case of ASiC-S signature returns a list of an archive container documents
-
setContainerContents
Description copied from interface:AdvancedSignatureThis method allows to set the archive container contents in the case of ASiC-S signature.- Specified by:
setContainerContentsin interfaceAdvancedSignature- Parameters:
containerContents-ListofDSSDocumentrepresenting the archive container contents.
-
getManifestFile
Description copied from interface:AdvancedSignatureThis method returns a relatedManifestFilein the case of ASiC-E signature.- Specified by:
getManifestFilein interfaceAdvancedSignature- Returns:
- manifestFile
ManifestFile
-
setManifestFile
Description copied from interface:AdvancedSignatureThis method allows to set a manifest file in the case of ASiC-E signature.- Specified by:
setManifestFilein interfaceAdvancedSignature- Parameters:
manifestFile-ManifestFile
-
getDSSId
Description copied from interface:AdvancedSignatureThis method returns theSignatureIdentifier.- Specified by:
getDSSIdin interfaceAdvancedSignature- Returns:
- unique
SignatureIdentifier
-
getId
Description copied from interface:AdvancedSignatureThis method returns the DSS unique signature id. It allows to unambiguously identify each signature.- Specified by:
getIdin interfaceAdvancedSignature- Returns:
- The signature unique Id
-
getCompleteCertificateSource
Description copied from interface:AdvancedSignatureGets a ListCertificateSource representing a merged source fromsignatureCertificateSourceand all included to the signature timestamp objects- Specified by:
getCompleteCertificateSourcein interfaceAdvancedSignature- Returns:
ListCertificateSource
-
getCertificateSourcesExceptLastArchiveTimestamp
-
getCompleteCRLSource
Description copied from interface:AdvancedSignatureGets a ListRevocationSource representing a merged source fromsignatureCRLSourseand all included to the signature timestamp objects- Specified by:
getCompleteCRLSourcein interfaceAdvancedSignature- Returns:
ListRevocationSource
-
getCompleteOCSPSource
Description copied from interface:AdvancedSignatureGets a ListRevocationSource representing a merged source fromsignatureOCSPSourseand all included to the signature timestamp objects- Specified by:
getCompleteOCSPSourcein interfaceAdvancedSignature- Returns:
ListRevocationSource
-
getCounterSignaturesCertificateSource
Returns a merged certificate source for values incorporated within counter signatures- Returns:
ListCertificateSource
-
getCounterSignaturesCRLSource
Returns a merged CRL source for values incorporated within counter signatures- Returns:
- CRL
ListRevocationSource
-
getCounterSignaturesOCSPSource
Returns a merged OCSP source for values incorporated within counter signatures- Returns:
- OCSP
ListRevocationSource
-
resetCertificateSource
public void resetCertificateSource()This method resets the source of certificates. It must be called when any certificate is added to the KeyInfo or CertificateValues (XAdES), or 'xVals' (JAdES). NOTE: used in XAdES and JAdES -
resetRevocationSources
public void resetRevocationSources()This method resets the sources of the revocation data. It must be called when -LT level is created. NOTE: used in XAdES and JAdES -
resetTimestampSource
public void resetTimestampSource()This method resets the timestamp source. It must be called when -LT level is created. NOTE: used in XAdES and JAdES -
getCandidatesForSigningCertificate
ETSI TS 101 733 V2.2.1 (2013-04) 5.6.3 Signature Verification Process ...the public key from the first certificate identified in the sequence of certificate identifiers from SigningCertificate shall be the key used to verify the digital signature.- Specified by:
getCandidatesForSigningCertificatein interfaceAdvancedSignature- Returns:
CandidatesForSigningCertificate
-
prepareOfflineCertificateVerifier
Description copied from interface:AdvancedSignatureThis method prepares an offline CertificateVerifier. The instance is used to know if all required revocation data are present- Specified by:
prepareOfflineCertificateVerifierin interfaceAdvancedSignature- Parameters:
certificateVerifier- the configured CertificateVerifier with all external sources
-
getSignatureValidationContext
This method validates the signing certificate and all timestamps.- Parameters:
certificateVerifier-CertificateVerifier- Returns:
- signature validation context containing all certificates and revocation data used during the validation process.
-
getCertificates
Returns an unmodifiable list of all certificate tokens encapsulated in the signature- Specified by:
getCertificatesin interfaceAdvancedSignature- Returns:
- a list of certificate contained within the signature
- See Also:
AdvancedSignature.getCertificates()
-
setMasterSignature
Description copied from interface:AdvancedSignatureThis setter allows to indicate the master signature. It means that this is a countersignature.- Specified by:
setMasterSignaturein interfaceAdvancedSignature- Parameters:
masterSignature-AdvancedSignature
-
getMasterSignature
Description copied from interface:AdvancedSignatureGets master signature- Specified by:
getMasterSignaturein interfaceAdvancedSignature- Returns:
AdvancedSignature
-
isCounterSignature
public boolean isCounterSignature()Description copied from interface:AdvancedSignatureChecks if the current signature is a counter signature (i.e. has a Master signature)- Specified by:
isCounterSignaturein interfaceAdvancedSignature- Returns:
- TRUE if it is a counter signature, FALSE otherwise
-
getSignatureCryptographicVerification
Description copied from interface:AdvancedSignatureGets signature's cryptographic validation result- Specified by:
getSignatureCryptographicVerificationin interfaceAdvancedSignature- Returns:
- SignatureCryptographicVerification with all the information collected during the validation process.
-
getSignerRoles
Description copied from interface:AdvancedSignatureReturns the list of roles of the signer.- Specified by:
getSignerRolesin interfaceAdvancedSignature- Returns:
- list of the
SignerRoles
-
getSigningCertificateToken
Description copied from interface:AdvancedSignatureThis method returns the signing certificate token or null if there is no valid signing certificate. Note that to determinate the signing certificate the signature must be validated: the methodcheckSignatureIntegritymust be called.- Specified by:
getSigningCertificateTokenin interfaceAdvancedSignature- Returns:
CertificateToken
-
prepareTimestamps
Description copied from interface:AdvancedSignatureThis method adds to theValidationContextall timestamps to be validated.- Specified by:
prepareTimestampsin interfaceAdvancedSignature- Parameters:
validationContext-ValidationContextto which the timestamps must be added
-
prepareCounterSignatures
Description copied from interface:AdvancedSignatureThis method adds to theValidationContextall counter signatures embedded into the current signature.- Specified by:
prepareCounterSignaturesin interfaceAdvancedSignature- Parameters:
validationContext-ValidationContextto which the counter signature content must be added
-
getStructureValidationResult
Description copied from interface:AdvancedSignatureReturns a message if the structure validation fails- Specified by:
getStructureValidationResultin interfaceAdvancedSignature- Returns:
- a list of
Stringerror messages if validation fails, an empty list if structural validation succeeds
-
validateStructure
This method processes the structure validation of the signature.- Returns:
- list of
Stringerrors
-
findSignatureScope
Description copied from interface:AdvancedSignatureRuns SignatureScopeFinder- Specified by:
findSignatureScopein interfaceAdvancedSignature- Parameters:
signatureScopeFinder-SignatureScopeFinderto use
-
getSignatureScopes
Description copied from interface:AdvancedSignatureReturns a list of found SignatureScopes NOTE: the methodfindSignatureScope(signatureScopeFinder)shall be called before- Specified by:
getSignatureScopesin interfaceAdvancedSignature- Returns:
- a list of
SignatureScopes
-
getContentTimestamps
Description copied from interface:AdvancedSignatureReturns the content timestamps- Specified by:
getContentTimestampsin interfaceAdvancedSignature- Returns:
ListofTimestampToken
-
getSignatureTimestamps
Description copied from interface:AdvancedSignatureReturns the signature timestamps- Specified by:
getSignatureTimestampsin interfaceAdvancedSignature- Returns:
ListofTimestampToken
-
getTimestampsX1
Description copied from interface:AdvancedSignatureReturns the time-stamp which is placed on the digital signature (XAdES example: ds:SignatureValue element), the signature time-stamp(s) present in the AdES-T form, the certification path references and the revocation status references.- Specified by:
getTimestampsX1in interfaceAdvancedSignature- Returns:
ListofTimestampToken
-
getTimestampsX2
Description copied from interface:AdvancedSignatureReturns the time-stamp which is computed over the concatenation of CompleteCertificateRefs and CompleteRevocationRefs elements (XAdES example).- Specified by:
getTimestampsX2in interfaceAdvancedSignature- Returns:
ListofTimestampToken
-
getArchiveTimestamps
Description copied from interface:AdvancedSignatureReturns the archive Timestamps- Specified by:
getArchiveTimestampsin interfaceAdvancedSignature- Returns:
ListofTimestampTokens
-
getDocumentTimestamps
Description copied from interface:AdvancedSignatureReturns a list of timestamps defined with the 'DocTimeStamp' type NOTE: applicable only for PAdES- Specified by:
getDocumentTimestampsin interfaceAdvancedSignature- Returns:
ListofTimestampTokens
-
getAllTimestamps
Description copied from interface:AdvancedSignatureReturns a list of all timestamps found in the signature- Specified by:
getAllTimestampsin interfaceAdvancedSignature- Returns:
ListofTimestampTokens
-
addExternalTimestamp
Description copied from interface:AdvancedSignatureThis method allows to add an external timestamp. The given timestamp must be processed before.- Specified by:
addExternalTimestampin interfaceAdvancedSignature- Parameters:
timestamp- the timestamp token
-
hasTProfile
public boolean hasTProfile()Checks if the T-level is present in the signature- Returns:
- TRUE if the T-level is present, FALSE otherwise
-
hasLTProfile
public boolean hasLTProfile()Checks if the LT-level is present in the signature- Returns:
- TRUE if the LT-level is present, FALSE otherwise
-
areAllSelfSignedCertificates
public boolean areAllSelfSignedCertificates()Description copied from interface:AdvancedSignatureChecks if all certificate chains present in the signature are self-signed- Specified by:
areAllSelfSignedCertificatesin interfaceAdvancedSignature- Returns:
- TRUE if all certificates are self-signed, false otherwise
-
hasLTAProfile
public boolean hasLTAProfile()Checks if the LTA-level is present in the signature- Returns:
- TRUE if the LTA-level is present, FALSE otherwise
-
isDocHashOnlyValidation
public boolean isDocHashOnlyValidation()Description copied from interface:AdvancedSignatureReturns true if the validation of the signature has been performed only on Signer's Document Representation (SDR). (An SDR typically is built on a cryptographic hash of the Signer's Document)- Specified by:
isDocHashOnlyValidationin interfaceAdvancedSignature- Returns:
- true of it is DocHashOnly validation, false otherwise
-
isHashOnlyValidation
public boolean isHashOnlyValidation()Description copied from interface:AdvancedSignatureReturns true if the validation of the signature has been performed only on Data To Be Signed Representation (DTBSR). EN 319 102-1 v1.1.1 (4.2.8 Data to be signed representation (DTBSR)): The DTBS preparation component shall take the DTBSF and hash it according to the hash algorithm specified in the cryptographic suite. The result of this process is the DTBSR, which is then used to create the signature. NOTE: In order for the produced hash to be representative of the DTBSF, the hashing function has the property that it is computationally infeasible to find collisions for the expected signature lifetime. Should the hash function become weak in the future, additional security measures, such as applying time-stamp tokens, can be taken.- Specified by:
isHashOnlyValidationin interfaceAdvancedSignature- Returns:
- true of it is HashOnly validation, false otherwise
-
equals
-
hashCode
public int hashCode() -
toString
-