Package org.apache.poi.poifs.crypt.dsig
Class SignatureConfig
java.lang.Object
org.apache.poi.poifs.crypt.dsig.SignatureConfig
This class bundles the configuration options used for the existing
signature facets.
Apart from the thread local members (e.g. opc-package) most values will probably be constant, so
it might be configured centrally (e.g. by spring)
-
Nested Class Summary
Nested Classes -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddCachedCertificate(String alias, byte[] x509Bytes) voidaddCachedCertificate(String alias, X509Certificate x509) Add certificate into keystore (cache) for further certificate chain lookupsvoidaddSignatureFacet(SignatureFacet signatureFacet) getCachedCertificateByPrinicipal(String principalName) static StringgetDigestMethodUri(HashAlgorithm digestAlgo) Converts the digest algorithm - currently only sha* and ripemd160 is supported.getKey()Deprecated.in POI 5.0.0 - will be handled by SignatureInfo internallyDeprecated.in POI 5.0.0 - useSignatureInfo.setOpcPackage(OPCPackage)insteadDeprecated.in POI 5.0.0 - will be handled by SignatureInfo internallystatic String[]Determine the possible classes for XMLSEC.Deprecated.in POI 5.0.0 - will be handled by SignatureInfo internallybyte[]byte[]byte[]Deprecated.in POI 5.0.0 - useSignatureInfo.getUriDereferencer()insteadbooleanbooleanbooleanbooleanbooleanbooleanbooleanbooleanbooleanMake sure the DN is encoded using the same order as present within the certificate.booleanvoidsetAllowCRLDownload(boolean allowCRLDownload) voidsetAllowMultipleSignatures(boolean allowMultipleSignatures) Activate multiple signaturesvoidsetCanonicalizationMethod(String canonicalizationMethod) voidsetCommitmentType(String commitmentType) Set the commitmentType, which is usually one of ...voidsetDigestAlgo(HashAlgorithm digestAlgo) voidsetExecutionTime(String executionTime) Sets the executionTime which is in standard format (SIGNATURE_TIME_FORMAT)voidsetExecutionTime(Date executionTime) voidsetIncludeEntireCertificateChain(boolean includeEntireCertificateChain) voidsetIncludeIssuerSerial(boolean includeIssuerSerial) voidsetIncludeKeyValue(boolean includeKeyValue) voidsetKey(PrivateKey key) voidsetKeyInfoFactory(KeyInfoFactory keyInfoFactory) Deprecated.in POI 5.0.0 - useSignatureInfo.setKeyInfoFactory(KeyInfoFactory)voidsetNamespacePrefixes(Map<String, String> namespacePrefixes) voidsetOpcPackage(OPCPackage opcPackage) Deprecated.in POI 5.0.0 - useSignatureInfo.setOpcPackage(OPCPackage)insteadvoidsetPackageSignatureId(String packageSignatureId) voidsetProvider(Provider provider) Deprecated.in POI 5.0.0 - useSignatureInfo.setProvider(Provider)voidsetProxyUrl(String proxyUrl) voidsetRevocationDataService(RevocationDataService revocationDataService) voidsetSecureValidation(boolean secureValidation) Enable or disable secure validation - default is enabled.voidsetSignatureDescription(String signatureDescription) voidsetSignatureFacets(List<SignatureFacet> signatureFacets) voidsetSignatureFactory(XMLSignatureFactory signatureFactory) Deprecated.in POI 5.0.0 - useSignatureInfo.setSignatureFactory(XMLSignatureFactory)voidsetSignatureImage(byte[] signatureImage) voidsetSignatureImageInvalid(byte[] signatureImageInvalid) voidsetSignatureImageSetupId(ClassID signatureImageSetupId) voidsetSignatureImageValid(byte[] signatureImageValid) voidsetSignatureMarshalListener(SignatureMarshalListener signatureMarshalListener) voidsetSignatureMethodFromUri(String signatureMethodUri) Set the digest algorithm based on the method uri.voidsetSignaturePolicyService(SignaturePolicyService signaturePolicyService) voidsetSigningCertificateChain(List<X509Certificate> signingCertificateChain) voidsetTspDigestAlgo(HashAlgorithm tspDigestAlgo) voidsetTspHttpClient(TimeStampHttpClient tspHttpClient) voidsetTspOldProtocol(boolean tspOldProtocol) voidsetTspPass(String tspPass) voidsetTspRequestPolicy(String tspRequestPolicy) voidsetTspService(TimeStampService tspService) voidvoidsetTspUser(String tspUser) voidsetTspValidator(TimeStampServiceValidator tspValidator) voidsetUpdateConfigOnValidate(boolean updateConfigOnValidate) The signature config can be updated if a document is succesful validated.voidsetUriDereferencer(URIDereferencer uriDereferencer) Deprecated.in POI 5.0.0 - useSignatureInfo.setUriDereferencer(URIDereferencer)insteadvoidsetUserAgent(String userAgent) voidsetXadesCanonicalizationMethod(String xadesCanonicalizationMethod) voidsetXadesDigestAlgo(String xadesDigestAlgo) voidsetXadesDigestAlgo(HashAlgorithm xadesDigestAlgo) voidsetXadesIssuerNameNoReverseOrder(boolean xadesIssuerNameNoReverseOrder) voidsetXadesRole(String xadesRole) voidsetXadesSignatureId(String xadesSignatureId) voidsetXadesSignaturePolicyImplied(boolean xadesSignaturePolicyImplied)
-
Field Details
-
SIGNATURE_TIME_FORMAT
- See Also:
-
-
Constructor Details
-
SignatureConfig
public SignatureConfig()
-
-
Method Details
-
addSignatureFacet
- Parameters:
signatureFacet- the signature facet is appended to facet list
-
getSignatureFacets
- Returns:
- the list of facets, may be empty when the config object is not initialized
-
setSignatureFacets
- Parameters:
signatureFacets- the new list of facets
-
getDigestAlgo
- Returns:
- the main digest algorithm, defaults to sha256
-
setDigestAlgo
- Parameters:
digestAlgo- the main digest algorithm
-
getOpcPackage
Deprecated.in POI 5.0.0 - useSignatureInfo.setOpcPackage(OPCPackage)instead- Returns:
- the opc package to be used by this thread, stored as thread-local
-
setOpcPackage
Deprecated.in POI 5.0.0 - useSignatureInfo.setOpcPackage(OPCPackage)instead- Parameters:
opcPackage- the opc package to be handled by this thread, stored as thread-local
-
getKey
- Returns:
- the private key
-
setKey
- Parameters:
key- the private key
-
getSigningCertificateChain
- Returns:
- the certificate chain, index 0 is usually the certificate matching the private key
-
setSigningCertificateChain
- Parameters:
signingCertificateChain- the certificate chain, index 0 should be the certificate matching the private key
-
getExecutionTime
- Returns:
- the time at which the document is signed, also used for the timestamp service. defaults to now
-
setExecutionTime
- Parameters:
executionTime- sets the time at which the document ought to be signed
-
formatExecutionTime
- Returns:
- the formatted execution time (
SIGNATURE_TIME_FORMAT) - Since:
- POI 4.0.0
-
setExecutionTime
Sets the executionTime which is in standard format (SIGNATURE_TIME_FORMAT)- Parameters:
executionTime- the execution time- Since:
- POI 4.0.0
-
getSignaturePolicyService
- Returns:
- the service to be used for XAdES-EPES properties. There's no default implementation
-
setSignaturePolicyService
- Parameters:
signaturePolicyService- the service to be used for XAdES-EPES properties
-
getUriDereferencer
Deprecated.in POI 5.0.0 - useSignatureInfo.getUriDereferencer()instead- Returns:
- the dereferencer used for Reference/@URI attributes, defaults to
OOXMLURIDereferencer
-
setUriDereferencer
@Deprecated @Removal(version="5.0.0") public void setUriDereferencer(URIDereferencer uriDereferencer) Deprecated.in POI 5.0.0 - useSignatureInfo.setUriDereferencer(URIDereferencer)instead- Parameters:
uriDereferencer- the dereferencer used for Reference/@URI attributes
-
getSignatureDescription
- Returns:
- Gives back the human-readable description of what the citizen will be signing. The default value is "Office OpenXML Document".
-
setSignatureDescription
- Parameters:
signatureDescription- the human-readable description of what the citizen will be signing.
-
getSignatureImage
public byte[] getSignatureImage() -
getSignatureImageValid
public byte[] getSignatureImageValid() -
getSignatureImageInvalid
public byte[] getSignatureImageInvalid() -
getSignatureImageSetupId
-
setSignatureImageSetupId
-
setSignatureImage
public void setSignatureImage(byte[] signatureImage) -
setSignatureImageValid
public void setSignatureImageValid(byte[] signatureImageValid) -
setSignatureImageInvalid
public void setSignatureImageInvalid(byte[] signatureImageInvalid) -
getCanonicalizationMethod
- Returns:
- the default canonicalization method, defaults to INCLUSIVE
-
setCanonicalizationMethod
- Parameters:
canonicalizationMethod- the default canonicalization method
-
getPackageSignatureId
- Returns:
- The signature Id attribute value used to create the XML signature. Defaults to "idPackageSignature"
-
setPackageSignatureId
- Parameters:
packageSignatureId- The signature Id attribute value used to create the XML signature. Anullvalue will trigger an automatically generated signature Id.
-
getTspUrl
- Returns:
- the url of the timestamp provider (TSP)
-
setTspUrl
- Parameters:
tspUrl- the url of the timestamp provider (TSP)
-
isTspOldProtocol
public boolean isTspOldProtocol()- Returns:
- if true, uses timestamp-request/response mimetype, if false, timestamp-query/reply mimetype
-
setTspOldProtocol
public void setTspOldProtocol(boolean tspOldProtocol) - Parameters:
tspOldProtocol- defines the timestamp-protocol mimetype- See Also:
-
getTspDigestAlgo
- Returns:
- the hash algorithm to be used for the timestamp entry. Defaults to the hash algorithm of the main entry
-
setTspDigestAlgo
- Parameters:
tspDigestAlgo- the algorithm to be used for the timestamp entry. ifnull, the hash algorithm of the main entry
-
getProxyUrl
- Returns:
- the proxy url to be used for all communications. Currently this affects the timestamp service
-
setProxyUrl
- Parameters:
proxyUrl- the proxy url to be used for all communications. Currently this affects the timestamp service
-
getTspService
- Returns:
- the timestamp service. Defaults to
TSPTimeStampService
-
setTspService
- Parameters:
tspService- the timestamp service
-
getTspHttpClient
- Returns:
- the http client used for timestamp server connections
- Since:
- POI 5.2.1
-
setTspHttpClient
- Parameters:
tspHttpClient- the http client used for timestamp server connections- Since:
- POI 5.2.1
-
getTspUser
- Returns:
- the user id for the timestamp service - currently only basic authorization is supported
-
setTspUser
- Parameters:
tspUser- the user id for the timestamp service - currently only basic authorization is supported
-
getTspPass
- Returns:
- the password for the timestamp service
-
setTspPass
- Parameters:
tspPass- the password for the timestamp service
-
getTspValidator
- Returns:
- the validator for the timestamp service (certificate)
-
setTspValidator
- Parameters:
tspValidator- the validator for the timestamp service (certificate)
-
getRevocationDataService
- Returns:
- the optional revocation data service used for XAdES-C and XAdES-X-L.
When
nullthe signature will be limited to XAdES-T only.
-
setRevocationDataService
- Parameters:
revocationDataService- the optional revocation data service used for XAdES-C and XAdES-X-L. Whennullthe signature will be limited to XAdES-T only.
-
getXadesDigestAlgo
- Returns:
- hash algorithm used for XAdES. Defaults to the
getDigestAlgo()
-
setXadesDigestAlgo
- Parameters:
xadesDigestAlgo- hash algorithm used for XAdES. Whennull, defaults togetDigestAlgo()
-
setXadesDigestAlgo
- Parameters:
xadesDigestAlgo- hash algorithm used for XAdES. Whennull, defaults togetDigestAlgo()- Since:
- POI 4.0.0
-
getUserAgent
- Returns:
- the user agent used for http communication (e.g. to the TSP)
-
setUserAgent
- Parameters:
userAgent- the user agent used for http communication (e.g. to the TSP)
-
getTspRequestPolicy
- Returns:
- the asn.1 object id for the tsp request policy.
Defaults to
1.3.6.1.4.1.13762.3
-
setTspRequestPolicy
- Parameters:
tspRequestPolicy- the asn.1 object id for the tsp request policy.
-
isIncludeEntireCertificateChain
public boolean isIncludeEntireCertificateChain()- Returns:
- true, if the whole certificate chain is included in the signature. When false, only the signer cert will be included
-
setIncludeEntireCertificateChain
public void setIncludeEntireCertificateChain(boolean includeEntireCertificateChain) - Parameters:
includeEntireCertificateChain- if true, include the whole certificate chain. If false, only include the signer cert
-
isIncludeIssuerSerial
public boolean isIncludeIssuerSerial()- Returns:
- if true, issuer serial number is included
-
setIncludeIssuerSerial
public void setIncludeIssuerSerial(boolean includeIssuerSerial) - Parameters:
includeIssuerSerial- if true, issuer serial number is included
-
isIncludeKeyValue
public boolean isIncludeKeyValue()- Returns:
- if true, the key value of the public key (certificate) is included
-
setIncludeKeyValue
public void setIncludeKeyValue(boolean includeKeyValue) - Parameters:
includeKeyValue- if true, the key value of the public key (certificate) is included
-
getXadesRole
- Returns:
- the xades role element. If
nullthe claimed role element is omitted. Defaults tonull
-
setXadesRole
- Parameters:
xadesRole- the xades role element. Ifnullthe claimed role element is omitted.
-
getXadesSignatureId
- Returns:
- the Id for the XAdES SignedProperties element.
Defaults to
idSignedProperties
-
setXadesSignatureId
- Parameters:
xadesSignatureId- the Id for the XAdES SignedProperties element. Whennulldefaults toidSignedProperties
-
isXadesSignaturePolicyImplied
public boolean isXadesSignaturePolicyImplied()- Returns:
- when true, include the policy-implied block.
Defaults to
true
-
setXadesSignaturePolicyImplied
public void setXadesSignaturePolicyImplied(boolean xadesSignaturePolicyImplied) - Parameters:
xadesSignaturePolicyImplied- when true, include the policy-implied block
-
isXadesIssuerNameNoReverseOrder
public boolean isXadesIssuerNameNoReverseOrder()Make sure the DN is encoded using the same order as present within the certificate. This is an Office2010 work-around. Should be reverted back. XXX: not correct according to RFC 4514.- Returns:
- when true, the issuer DN is used instead of the issuer X500 principal
-
setXadesIssuerNameNoReverseOrder
public void setXadesIssuerNameNoReverseOrder(boolean xadesIssuerNameNoReverseOrder) - Parameters:
xadesIssuerNameNoReverseOrder- when true, the issuer DN instead of the issuer X500 prinicpal is used
-
getSignatureMarshalListener
- Returns:
- the event listener which is active while xml structure for the signature is created.
Defaults to
SignatureMarshalListener
-
setSignatureMarshalListener
- Parameters:
signatureMarshalListener- the event listener watching the xml structure generation for the signature
-
getNamespacePrefixes
- Returns:
- the map of namespace uri (key) to prefix (value)
-
setNamespacePrefixes
- Parameters:
namespacePrefixes- the map of namespace uri (key) to prefix (value)
-
getSignatureMethodUri
- Returns:
- the uri for the signature method, i.e. currently only rsa is supported, so it's the rsa variant of the main digest
-
getDigestMethodUri
- Returns:
- the uri for the main digest
-
getDigestMethodUri
Converts the digest algorithm - currently only sha* and ripemd160 is supported. MS Office only supports sha1, sha256, sha384, sha512.- Parameters:
digestAlgo- the digest algorithm- Returns:
- the uri for the given digest
-
setSignatureMethodFromUri
Set the digest algorithm based on the method uri. This is used when a signature was successful validated and the signature configuration is updated- Parameters:
signatureMethodUri- the method uri- Since:
- POI 4.0.0
-
setSignatureFactory
@Deprecated @Removal(version="5.0.0") public void setSignatureFactory(XMLSignatureFactory signatureFactory) Deprecated.in POI 5.0.0 - useSignatureInfo.setSignatureFactory(XMLSignatureFactory)- Parameters:
signatureFactory- the xml signature factory, saved as thread-local
-
getSignatureFactory
Deprecated.in POI 5.0.0 - will be handled by SignatureInfo internally- Returns:
- the xml signature factory (thread-local)
-
setKeyInfoFactory
Deprecated.in POI 5.0.0 - useSignatureInfo.setKeyInfoFactory(KeyInfoFactory)- Parameters:
keyInfoFactory- the key factory, saved as thread-local
-
getKeyInfoFactory
Deprecated.in POI 5.0.0 - will be handled by SignatureInfo internally- Returns:
- the key factory (thread-local)
-
setProvider
Deprecated.in POI 5.0.0 - useSignatureInfo.setProvider(Provider)Helper method to set provider- Parameters:
provider- the provider
-
getProvider
Deprecated.in POI 5.0.0 - will be handled by SignatureInfo internally- Returns:
- the cached provider or null if not set before
-
getProviderNames
Determine the possible classes for XMLSEC. The order is- the class pointed to by the system property "jsr105Provider"
- the Santuario xmlsec provider
- the JDK xmlsec provider
- Returns:
- a list of possible XMLSEC provider class names
-
getXadesCanonicalizationMethod
- Returns:
- the cannonicalization method for XAdES-XL signing.
Defaults to
EXCLUSIVE - See Also:
-
setXadesCanonicalizationMethod
- Parameters:
xadesCanonicalizationMethod- the cannonicalization method for XAdES-XL signing- See Also:
-
isUpdateConfigOnValidate
public boolean isUpdateConfigOnValidate()- Returns:
- true, if the signature config is to be updated based on the successful validated document
- Since:
- POI 4.0.0
-
setUpdateConfigOnValidate
public void setUpdateConfigOnValidate(boolean updateConfigOnValidate) The signature config can be updated if a document is succesful validated. This flag is used for activating this modifications. Defaults tofalse- Parameters:
updateConfigOnValidate- if true, update config on validate- Since:
- POI 4.0.0
-
isAllowMultipleSignatures
public boolean isAllowMultipleSignatures()- Returns:
- true, if multiple signatures can be attached
- Since:
- POI 4.1.0
-
setAllowMultipleSignatures
public void setAllowMultipleSignatures(boolean allowMultipleSignatures) Activate multiple signatures- Parameters:
allowMultipleSignatures- if true, the signature will be added, otherwise all existing signatures will be replaced by the current- Since:
- POI 4.1.0
-
isSecureValidation
public boolean isSecureValidation()- Returns:
- is secure validation enabled?
- Since:
- POI 5.2.0
-
setSecureValidation
public void setSecureValidation(boolean secureValidation) Enable or disable secure validation - default is enabled.Starting with xmlsec 2.3.0 larger documents with a lot of document parts started to fail, because a maximum of 30 references were hard-coded allowed for secure validation to succeed.
Secure validation has the following features:
- Limits the number of Transforms per Reference to a maximum of 5.
- Does not allow XSLT transforms.
- Does not allow a RetrievalMethod to reference another RetrievalMethod.
- Does not allow a Reference to call the ResolverLocalFilesystem or the ResolverDirectHTTP (references to local files and HTTP resources are forbidden).
- Limits the number of references per Manifest (SignedInfo) to a maximum of 30.
- MD5 is not allowed as a SignatureAlgorithm or DigestAlgorithm.
- Guarantees that the Dereferenced Element returned via Document.getElementById is unique by performing a tree-search.
- Does not allow DTDs
- Since:
- POI 5.2.0
- See Also:
-
getCommitmentType
-
setCommitmentType
Set the commitmentType, which is usually one of ...- "Created and approved this document"
- "Approved this document"
- "Created this document"
- ... or any other important sounding statement
-
addCRL
-
getCrlEntries
-
isAllowCRLDownload
public boolean isAllowCRLDownload() -
setAllowCRLDownload
public void setAllowCRLDownload(boolean allowCRLDownload) -
getKeyStore
- Returns:
- keystore with cached certificates
-
addCachedCertificate
Add certificate into keystore (cache) for further certificate chain lookups- Parameters:
alias- the alias, or null if alias is taken from common name attribute of certificatex509- the x509 certificate- Throws:
KeyStoreException
-
addCachedCertificate
public void addCachedCertificate(String alias, byte[] x509Bytes) throws KeyStoreException, CertificateException -
getCachedCertificateByPrinicipal
-