public class PdfPKCS7 extends Object
| Constructor and Description |
|---|
PdfPKCS7(byte[] contentsKey,
byte[] certsKey,
String provider)
Use this constructor if you want to verify a signature using the sub-filter adbe.x509.rsa_sha1.
|
PdfPKCS7(byte[] contentsKey,
PdfName filterSubtype,
String provider)
Use this constructor if you want to verify a signature.
|
PdfPKCS7(PrivateKey privKey,
Certificate[] certChain,
String hashAlgorithm,
String provider,
IExternalDigest interfaceDigest,
boolean hasEncapContent)
Assembles all the elements needed to create a signature, except for the data.
|
| Modifier and Type | Method and Description |
|---|---|
byte[] |
getAuthenticatedAttributeBytes(byte[] secondDigest,
PdfSigner.CryptoStandard sigtype,
Collection<byte[]> ocsp,
Collection<byte[]> crlBytes)
When using authenticatedAttributes the authentication process is different.
|
Certificate[] |
getCertificates()
Get all the X.509 certificates associated with this PKCS#7 object in no particular order.
|
Collection<CRL> |
getCRLs()
Get the X.509 certificate revocation lists associated with this PKCS#7 object
|
String |
getDigestAlgorithmName()
Returns the name of the digest algorithm, e.g.
|
String |
getDigestAlgorithmOid()
Getter for the ID of the digest algorithm, e.g.
|
byte[] |
getEncodedPKCS1()
Gets the bytes for the PKCS#1 object.
|
byte[] |
getEncodedPKCS7()
Gets the bytes for the PKCS7SignedData object.
|
byte[] |
getEncodedPKCS7(byte[] secondDigest)
Gets the bytes for the PKCS7SignedData object.
|
byte[] |
getEncodedPKCS7(byte[] secondDigest,
PdfSigner.CryptoStandard sigtype,
ITSAClient tsaClient,
Collection<byte[]> ocsp,
Collection<byte[]> crlBytes)
Gets the bytes for the PKCS7SignedData object.
|
PdfName |
getFilterSubtype()
Getter for the filter subtype.
|
String |
getLocation()
Getter for property location.
|
com.itextpdf.commons.bouncycastle.asn1.ocsp.IBasicOCSPResponse |
getOcsp()
Gets the OCSP basic response if there is one.
|
String |
getReason()
Getter for property reason.
|
String |
getSignatureAlgorithmName()
Returns the name of the signature algorithm only (disregarding the digest function, if any).
|
String |
getSignatureMechanismName()
Get the signature mechanism identifier, including both the digest function
and the signature algorithm, e.g.
|
String |
getSignatureMechanismOid()
Getter for the signature algorithm OID.
|
Certificate[] |
getSignCertificateChain()
Get the X.509 sign certificate chain associated with this PKCS#7 object.
|
Calendar |
getSignDate()
Getter for property signDate.
|
X509Certificate |
getSigningCertificate()
Get the X.509 certificate actually used to sign the digest.
|
int |
getSigningInfoVersion()
Get the version of the PKCS#7 "SignerInfo" object.
|
String |
getSignName()
Getter for property sigName.
|
Calendar |
getTimeStampDate()
Gets the timestamp date.
|
com.itextpdf.commons.bouncycastle.asn1.tsp.ITSTInfo |
getTimeStampTokenInfo()
Gets the timestamp token info if there is one.
|
int |
getVersion()
Get the version of the PKCS#7 object.
|
boolean |
isRevocationValid()
Checks if OCSP revocation refers to the document signing certificate.
|
boolean |
isTsp()
Check if it's a PAdES-LTV time stamp.
|
void |
setExternalSignatureValue(byte[] signatureValue,
byte[] signedMessageContent,
String signatureAlgorithm)
Sets the signature to an externally calculated value.
|
void |
setExternalSignatureValue(byte[] signatureValue,
byte[] signedMessageContent,
String signatureAlgorithm,
ISignatureMechanismParams signatureMechanismParams)
Sets the signature to an externally calculated value.
|
void |
setLocation(String location)
Setter for property location.
|
void |
setReason(String reason)
Setter for property reason.
|
void |
setSignaturePolicy(com.itextpdf.commons.bouncycastle.asn1.esf.ISignaturePolicyIdentifier signaturePolicy) |
void |
setSignaturePolicy(SignaturePolicyInfo signaturePolicy) |
void |
setSignDate(Calendar signDate)
Setter for property signDate.
|
void |
setSignName(String signName)
Setter for property sigName.
|
void |
update(byte[] buf,
int off,
int len)
Update the digest with the specified bytes.
|
boolean |
verifySignatureIntegrityAndAuthenticity()
Verifies that signature integrity is intact (or in other words that signed data wasn't modified)
by checking that embedded data digest corresponds to the calculated one.
|
boolean |
verifyTimestampImprint()
Checks if the timestamp refers to this document.
|
public PdfPKCS7(PrivateKey privKey, Certificate[] certChain, String hashAlgorithm, String provider, IExternalDigest interfaceDigest, boolean hasEncapContent) throws InvalidKeyException, NoSuchProviderException, NoSuchAlgorithmException
privKey - the private keycertChain - the certificate chaininterfaceDigest - the interface digesthashAlgorithm - the hash algorithmprovider - the provider or null for the default providerhasEncapContent - true if the sub-filter is adbe.pkcs7.sha1InvalidKeyException - on errorNoSuchProviderException - on errorNoSuchAlgorithmException - on errorpublic PdfPKCS7(byte[] contentsKey,
byte[] certsKey,
String provider)
contentsKey - the /Contents keycertsKey - the /Cert keyprovider - the provider or null for the default providerpublic void setSignaturePolicy(SignaturePolicyInfo signaturePolicy)
public void setSignaturePolicy(com.itextpdf.commons.bouncycastle.asn1.esf.ISignaturePolicyIdentifier signaturePolicy)
public String getSignName()
public void setSignName(String signName)
signName - New value of property sigName.public String getReason()
public void setReason(String reason)
reason - New value of property reason.public String getLocation()
public void setLocation(String location)
location - New value of property location.public Calendar getSignDate()
public void setSignDate(Calendar signDate)
signDate - New value of property signDate.public int getVersion()
public int getSigningInfoVersion()
public String getDigestAlgorithmOid()
public String getDigestAlgorithmName()
public String getSignatureMechanismOid()
public String getSignatureMechanismName()
public String getSignatureAlgorithmName()
public void setExternalSignatureValue(byte[] signatureValue,
byte[] signedMessageContent,
String signatureAlgorithm)
signatureValue - the signature valuesignedMessageContent - the extra data that goes into the data tag in PKCS#7signatureAlgorithm - the signature algorithm. It must be null if the
signatureValue is also null.
If the signatureValue is not null,
possible values include "RSA", "DSA", "ECDSA", "Ed25519" and "Ed448".public void setExternalSignatureValue(byte[] signatureValue,
byte[] signedMessageContent,
String signatureAlgorithm,
ISignatureMechanismParams signatureMechanismParams)
signatureValue - the signature valuesignedMessageContent - the extra data that goes into the data tag in PKCS#7signatureAlgorithm - the signature algorithm. It must be null if the
signatureValue is also null.
If the signatureValue is not null,
possible values include "RSA", "RSASSA-PSS", "DSA",
"ECDSA", "Ed25519" and "Ed448".signatureMechanismParams - parameters for the signature mechanism, if requiredpublic void update(byte[] buf,
int off,
int len)
throws SignatureException
buf - the data bufferoff - the offset in the data bufferlen - the data lengthSignatureException - on errorpublic byte[] getEncodedPKCS1()
public byte[] getEncodedPKCS7()
public byte[] getEncodedPKCS7(byte[] secondDigest)
null, none will be used.secondDigest - the digest in the authenticatedAttributespublic byte[] getEncodedPKCS7(byte[] secondDigest,
PdfSigner.CryptoStandard sigtype,
ITSAClient tsaClient,
Collection<byte[]> ocsp,
Collection<byte[]> crlBytes)
secondDigest - the digest in the authenticatedAttributessigtype - specifies the PKCS7 standard flavor to which created PKCS7SignedData object will adhere:
either basic CMS or CAdEStsaClient - TSAClient - null or an optional time stamp authority clientocsp - collection of DER-encoded BasicOCSPResponses for the certificate in the signature
certificates
chain, or null if OCSP revocation data is not to be added.crlBytes - collection of DER-encoded CRL for certificates from the signature certificates chain,
or null if CRL revocation data is not to be added.public byte[] getAuthenticatedAttributeBytes(byte[] secondDigest,
PdfSigner.CryptoStandard sigtype,
Collection<byte[]> ocsp,
Collection<byte[]> crlBytes)
getEncodedPKCS7(byte[]).
Note: do not pass in the full DER-encoded OCSPResponse object obtained from the responder, only the DER-encoded IBasicOCSPResponse value contained in the response data.
A simple example:
Calendar cal = Calendar.getInstance();
PdfPKCS7 pk7 = new PdfPKCS7(key, chain, null, "SHA1", null, false);
MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
byte[] buf = new byte[8192];
int n;
InputStream inp = sap.getRangeStream();
while ((n = inp.read(buf)) > 0) {
messageDigest.update(buf, 0, n);
}
byte[] hash = messageDigest.digest();
byte[] sh = pk7.getAuthenticatedAttributeBytes(hash, cal);
pk7.update(sh, 0, sh.length);
byte[] sg = pk7.getEncodedPKCS7(hash, cal);
secondDigest - the content digestsigtype - specifies the PKCS7 standard flavor to which created PKCS7SignedData object will adhere:
either basic CMS or CAdESocsp - collection of DER-encoded BasicOCSPResponses for the certificate in the signature
certificates
chain, or null if OCSP revocation data is not to be added.crlBytes - collection of DER-encoded CRL for certificates from the signature certificates chain,
or null if CRL revocation data is not to be added.public boolean verifySignatureIntegrityAndAuthenticity()
throws GeneralSecurityException
Even though signature can be authentic and signed data integrity can be intact,
one shall also always check that signed data is not only a part of PDF contents but is actually a complete PDF
file.
In order to check that given signature covers the current PdfDocument please
use SignatureUtil.signatureCoversWholeDocument(String) method.
true if the signature checks out, false otherwiseGeneralSecurityException - if this signature object is not initialized properly,
the passed-in signature is improperly encoded or of the wrong
type, if this signature algorithm is unable to
process the input data provided, if the public key is invalid or
if security provider or signature algorithm
are not recognized, etc.public boolean verifyTimestampImprint()
throws GeneralSecurityException
GeneralSecurityException - on errorpublic Certificate[] getCertificates()
public Certificate[] getSignCertificateChain()
public X509Certificate getSigningCertificate()
public Collection<CRL> getCRLs()
public com.itextpdf.commons.bouncycastle.asn1.ocsp.IBasicOCSPResponse getOcsp()
public boolean isRevocationValid()
public boolean isTsp()
public com.itextpdf.commons.bouncycastle.asn1.tsp.ITSTInfo getTimeStampTokenInfo()
public Calendar getTimeStampDate()
In case the signed document doesn't contain timestamp,
TimestampConstants.UNDEFINED_TIMESTAMP_DATE will be returned.
public PdfName getFilterSubtype()
Copyright © 1998–2023 Apryse Group NV. All rights reserved.