Class PdfPKCS7
java.lang.Object
com.itextpdf.text.pdf.security.PdfPKCS7
This class does all the processing related to signing
and verifying a PKCS#7 signature.
-
Constructor Summary
ConstructorsConstructorDescriptionUse this constructor if you want to verify a signature using the sub-filter adbe.x509.rsa_sha1.Use this constructor if you want to verify a signature.PdfPKCS7(PrivateKey privKey, Certificate[] certChain, String hashAlgorithm, String provider, ExternalDigest interfaceDigest, boolean hasRSAdata) Assembles all the elements needed to create a signature, except for the data. -
Method Summary
Modifier and TypeMethodDescriptionbyte[]getAuthenticatedAttributeBytes(byte[] secondDigest, byte[] ocsp, Collection<byte[]> crlBytes, MakeSignature.CryptoStandard sigtype) When using authenticatedAttributes the authentication process is different.Get all the X.509 certificates associated with this PKCS#7 object in no particular order.getCRLs()Get the X.509 certificate revocation lists associated with this PKCS#7 objectGet the algorithm used to calculate the message digest, e.g.Getter for the ID of the digest algorithm, e.g. "2.16.840.1.101.3.4.2.1"Getter for the digest encryption algorithmbyte[]Gets the bytes for the PKCS#1 object.byte[]Gets the bytes for the PKCS7SignedData object.byte[]getEncodedPKCS7(byte[] secondDigest) Gets the bytes for the PKCS7SignedData object.byte[]getEncodedPKCS7(byte[] secondDigest, TSAClient tsaClient, byte[] ocsp, Collection<byte[]> crlBytes, MakeSignature.CryptoStandard sigtype) Gets the bytes for the PKCS7SignedData object.Returns the encryption algorithmReturns the filter subtype.Returns the name of the digest algorithm, e.g.Getter for property location.org.bouncycastle.cert.ocsp.BasicOCSPRespgetOcsp()Gets the OCSP basic response if there is one.Getter for property reason.Get the X.509 sign certificate chain associated with this PKCS#7 object.Getter for property signDate.Get the X.509 certificate actually used to sign the digest.intGet the version of the PKCS#7 "SignerInfo" object.Getter for property sigName.Gets the timestamp dateorg.bouncycastle.tsp.TimeStampTokenGets the timestamp token if there is one.intGet the version of the PKCS#7 object.booleanChecks if OCSP revocation refers to the document signing certificate.booleanisTsp()Check if it's a PAdES-LTV time stamp.voidsetExternalDigest(byte[] digest, byte[] RSAdata, String digestEncryptionAlgorithm) Sets the digest/signature to an external calculated value.voidsetLocation(String location) Setter for property location.voidSetter for property reason.voidsetSignaturePolicy(SignaturePolicyInfo signaturePolicy) voidsetSignaturePolicy(org.bouncycastle.asn1.esf.SignaturePolicyIdentifier signaturePolicy) voidsetSignDate(Calendar signDate) Setter for property signDate.voidsetSignName(String signName) Setter for property sigName.voidupdate(byte[] buf, int off, int len) Update the digest with the specified bytes.booleanverify()Verify the digest.booleanChecks if the timestamp refers to this document.
-
Constructor Details
-
PdfPKCS7
public PdfPKCS7(PrivateKey privKey, Certificate[] certChain, String hashAlgorithm, String provider, ExternalDigest interfaceDigest, boolean hasRSAdata) throws InvalidKeyException, NoSuchProviderException, NoSuchAlgorithmException Assembles all the elements needed to create a signature, except for the data.- Parameters:
privKey- the private keycertChain- the certificate chainhashAlgorithm- the hash algorithmprovider- the provider ornullfor the default providerinterfaceDigest- the interface digesthasRSAdata-trueif the sub-filter is adbe.pkcs7.sha1- Throws:
InvalidKeyException- on errorNoSuchProviderException- on errorNoSuchAlgorithmException- on error
-
PdfPKCS7
Use this constructor if you want to verify a signature using the sub-filter adbe.x509.rsa_sha1.- Parameters:
contentsKey- the /Contents keycertsKey- the /Cert keyprovider- the provider ornullfor the default provider
-
PdfPKCS7
-
-
Method Details
-
setSignaturePolicy
-
setSignaturePolicy
public void setSignaturePolicy(org.bouncycastle.asn1.esf.SignaturePolicyIdentifier signaturePolicy) -
getSignName
-
setSignName
Setter for property sigName.- Parameters:
signName- New value of property sigName.
-
getReason
-
setReason
Setter for property reason.- Parameters:
reason- New value of property reason.
-
getLocation
-
setLocation
Setter for property location.- Parameters:
location- New value of property location.
-
getSignDate
-
setSignDate
Setter for property signDate.- Parameters:
signDate- New value of property signDate.
-
getVersion
public int getVersion()Get the version of the PKCS#7 object.- Returns:
- the version of the PKCS#7 object.
-
getSigningInfoVersion
public int getSigningInfoVersion()Get the version of the PKCS#7 "SignerInfo" object.- Returns:
- the version of the PKCS#7 "SignerInfo" object.
-
getDigestAlgorithmOid
Getter for the ID of the digest algorithm, e.g. "2.16.840.1.101.3.4.2.1" -
getHashAlgorithm
Returns the name of the digest algorithm, e.g. "SHA256".- Returns:
- the digest algorithm name, e.g. "SHA256"
-
getDigestEncryptionAlgorithmOid
Getter for the digest encryption algorithm -
getDigestAlgorithm
Get the algorithm used to calculate the message digest, e.g. "SHA1withRSA".- Returns:
- the algorithm used to calculate the message digest
-
setExternalDigest
Sets the digest/signature to an external calculated value.- Parameters:
digest- the digest. This is the actual signatureRSAdata- the extra data that goes into the data tag in PKCS#7digestEncryptionAlgorithm- the encryption algorithm. It may must benullif thedigestis alsonull. If thedigestis notnullthen it may be "RSA" or "DSA"
-
update
Update the digest with the specified bytes. This method is used both for signing and verifying- Parameters:
buf- the data bufferoff- the offset in the data bufferlen- the data length- Throws:
SignatureException- on error
-
getEncodedPKCS1
public byte[] getEncodedPKCS1()Gets the bytes for the PKCS#1 object.- Returns:
- a byte array
-
getEncodedPKCS7
public byte[] getEncodedPKCS7()Gets the bytes for the PKCS7SignedData object.- Returns:
- the bytes for the PKCS7SignedData object
-
getEncodedPKCS7
public byte[] getEncodedPKCS7(byte[] secondDigest) Gets the bytes for the PKCS7SignedData object. Optionally the authenticatedAttributes in the signerInfo can also be set. If either of the parameters isnull, none will be used.- Parameters:
secondDigest- the digest in the authenticatedAttributes- Returns:
- the bytes for the PKCS7SignedData object
-
getEncodedPKCS7
public byte[] getEncodedPKCS7(byte[] secondDigest, TSAClient tsaClient, byte[] ocsp, Collection<byte[]> crlBytes, MakeSignature.CryptoStandard sigtype) Gets the bytes for the PKCS7SignedData object. Optionally the authenticatedAttributes in the signerInfo can also be set, OR a time-stamp-authority client may be provided.- Parameters:
secondDigest- the digest in the authenticatedAttributestsaClient- TSAClient - null or an optional time stamp authority client- Returns:
- byte[] the bytes for the PKCS7SignedData object
- Since:
- 2.1.6
-
getAuthenticatedAttributeBytes
public byte[] getAuthenticatedAttributeBytes(byte[] secondDigest, byte[] ocsp, Collection<byte[]> crlBytes, MakeSignature.CryptoStandard sigtype) When using authenticatedAttributes the authentication process is different. The document digest is generated and put inside the attribute. The signing is done over the DER encoded authenticatedAttributes. This method provides that encoding and the parameters must be exactly the same as ingetEncodedPKCS7(byte[]).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);- Parameters:
secondDigest- the content digest- Returns:
- the byte array representation of the authenticatedAttributes ready to be signed
-
verify
Verify the digest.- Returns:
trueif the signature checks out,falseotherwise- Throws:
SignatureException- on errorGeneralSecurityException
-
verifyTimestampImprint
Checks if the timestamp refers to this document.- Returns:
- true if it checks false otherwise
- Throws:
GeneralSecurityException- on error- Since:
- 2.1.6
-
getCertificates
Get all the X.509 certificates associated with this PKCS#7 object in no particular order. Other certificates, from OCSP for example, will also be included.- Returns:
- the X.509 certificates associated with this PKCS#7 object
-
getSignCertificateChain
Get the X.509 sign certificate chain associated with this PKCS#7 object. Only the certificates used for the main signature will be returned, with the signing certificate first.- Returns:
- the X.509 certificates associated with this PKCS#7 object
- Since:
- 2.1.6
-
getSigningCertificate
Get the X.509 certificate actually used to sign the digest.- Returns:
- the X.509 certificate actually used to sign the digest
-
getCRLs
Get the X.509 certificate revocation lists associated with this PKCS#7 object- Returns:
- the X.509 certificate revocation lists associated with this PKCS#7 object
-
getOcsp
public org.bouncycastle.cert.ocsp.BasicOCSPResp getOcsp()Gets the OCSP basic response if there is one.- Returns:
- the OCSP basic response or null
- Since:
- 2.1.6
-
isRevocationValid
public boolean isRevocationValid()Checks if OCSP revocation refers to the document signing certificate.- Returns:
- true if it checks, false otherwise
- Since:
- 2.1.6
-
isTsp
public boolean isTsp()Check if it's a PAdES-LTV time stamp.- Returns:
- true if it's a PAdES-LTV time stamp, false otherwise
-
getTimeStampToken
public org.bouncycastle.tsp.TimeStampToken getTimeStampToken()Gets the timestamp token if there is one.- Returns:
- the timestamp token or null
- Since:
- 2.1.6
-
getTimeStampDate
-
getFilterSubtype
Returns the filter subtype. -
getEncryptionAlgorithm
Returns the encryption algorithm- Returns:
- the name of an encryption algorithm
-