public class PdfPKCS7
extends java.lang.Object
Constructor | Description |
---|---|
PdfPKCS7(byte[] contentsKey,
byte[] certsKey,
java.lang.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,
java.lang.String provider) |
Use this constructor if you want to verify a signature.
|
PdfPKCS7(java.security.PrivateKey privKey,
java.security.cert.Certificate[] certChain,
java.lang.String hashAlgorithm,
java.lang.String provider,
ExternalDigest interfaceDigest,
boolean hasRSAdata) |
Assembles all the elements needed to create a signature, except for the data.
|
Modifier and Type | Method | Description |
---|---|---|
byte[] |
getAuthenticatedAttributeBytes(byte[] secondDigest,
byte[] ocsp,
java.util.Collection<byte[]> crlBytes,
MakeSignature.CryptoStandard sigtype) |
When using authenticatedAttributes the authentication process is different.
|
java.security.cert.Certificate[] |
getCertificates() |
Get all the X.509 certificates associated with this PKCS#7 object in no particular order.
|
java.util.Collection<java.security.cert.CRL> |
getCRLs() |
Get the X.509 certificate revocation lists associated with this PKCS#7 object
|
java.lang.String |
getDigestAlgorithm() |
Get the algorithm used to calculate the message digest, e.g.
|
java.lang.String |
getDigestAlgorithmOid() |
Getter for the ID of the digest algorithm, e.g.
|
java.lang.String |
getDigestEncryptionAlgorithmOid() |
Getter for the digest encryption algorithm
|
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,
TSAClient tsaClient,
byte[] ocsp,
java.util.Collection<byte[]> crlBytes,
MakeSignature.CryptoStandard sigtype) |
Gets the bytes for the PKCS7SignedData object.
|
java.lang.String |
getEncryptionAlgorithm() |
Returns the encryption algorithm
|
PdfName |
getFilterSubtype() |
Returns the filter subtype.
|
java.lang.String |
getHashAlgorithm() |
Returns the name of the digest algorithm, e.g.
|
java.lang.String |
getLocation() |
Getter for property location.
|
org.bouncycastle.cert.ocsp.BasicOCSPResp |
getOcsp() |
Gets the OCSP basic response if there is one.
|
java.lang.String |
getReason() |
Getter for property reason.
|
java.security.cert.Certificate[] |
getSignCertificateChain() |
Get the X.509 sign certificate chain associated with this PKCS#7 object.
|
java.util.Calendar |
getSignDate() |
Getter for property signDate.
|
java.security.cert.X509Certificate |
getSigningCertificate() |
Get the X.509 certificate actually used to sign the digest.
|
int |
getSigningInfoVersion() |
Get the version of the PKCS#7 "SignerInfo" object.
|
java.lang.String |
getSignName() |
Getter for property sigName.
|
java.util.Calendar |
getTimeStampDate() |
Gets the timestamp date
|
org.bouncycastle.tsp.TimeStampToken |
getTimeStampToken() |
Gets the timestamp token 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 |
setExternalDigest(byte[] digest,
byte[] RSAdata,
java.lang.String digestEncryptionAlgorithm) |
Sets the digest/signature to an external calculated value.
|
void |
setLocation(java.lang.String location) |
Setter for property location.
|
void |
setReason(java.lang.String reason) |
Setter for property reason.
|
void |
setSignaturePolicy(SignaturePolicyInfo signaturePolicy) |
|
void |
setSignaturePolicy(org.bouncycastle.asn1.esf.SignaturePolicyIdentifier signaturePolicy) |
|
void |
setSignDate(java.util.Calendar signDate) |
Setter for property signDate.
|
void |
setSignName(java.lang.String signName) |
Setter for property sigName.
|
void |
update(byte[] buf,
int off,
int len) |
Update the digest with the specified bytes.
|
boolean |
verify() |
Verify the digest.
|
boolean |
verifyTimestampImprint() |
Checks if the timestamp refers to this document.
|
public PdfPKCS7(java.security.PrivateKey privKey, java.security.cert.Certificate[] certChain, java.lang.String hashAlgorithm, java.lang.String provider, ExternalDigest interfaceDigest, boolean hasRSAdata) throws java.security.InvalidKeyException, java.security.NoSuchProviderException, java.security.NoSuchAlgorithmException
privKey
- the private keycertChain
- the certificate chaininterfaceDigest
- the interface digesthashAlgorithm
- the hash algorithmprovider
- the provider or null
for the default providerhasRSAdata
- true
if the sub-filter is adbe.pkcs7.sha1java.security.InvalidKeyException
- on errorjava.security.NoSuchProviderException
- on errorjava.security.NoSuchAlgorithmException
- on errorpublic PdfPKCS7(byte[] contentsKey, byte[] certsKey, java.lang.String provider)
contentsKey
- the /Contents keycertsKey
- the /Cert keyprovider
- the provider or null
for the default providerpublic PdfPKCS7(byte[] contentsKey, PdfName filterSubtype, java.lang.String provider)
contentsKey
- the /Contents keyfilterSubtype
- the filtersubtypeprovider
- the provider or null
for the default providerpublic void setSignaturePolicy(SignaturePolicyInfo signaturePolicy)
public void setSignaturePolicy(org.bouncycastle.asn1.esf.SignaturePolicyIdentifier signaturePolicy)
public java.lang.String getSignName()
public void setSignName(java.lang.String signName)
signName
- New value of property sigName.public java.lang.String getReason()
public void setReason(java.lang.String reason)
reason
- New value of property reason.public java.lang.String getLocation()
public void setLocation(java.lang.String location)
location
- New value of property location.public java.util.Calendar getSignDate()
public void setSignDate(java.util.Calendar signDate)
signDate
- New value of property signDate.public int getVersion()
public int getSigningInfoVersion()
public java.lang.String getDigestAlgorithmOid()
public java.lang.String getHashAlgorithm()
public java.lang.String getDigestEncryptionAlgorithmOid()
public java.lang.String getDigestAlgorithm()
public void setExternalDigest(byte[] digest, byte[] RSAdata, java.lang.String digestEncryptionAlgorithm)
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 be null
if the digest
is also null
. If the digest
is not null
then it may be "RSA" or "DSA"public void update(byte[] buf, int off, int len) throws java.security.SignatureException
buf
- the data bufferoff
- the offset in the data bufferlen
- the data lengthjava.security.SignatureException
- 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, TSAClient tsaClient, byte[] ocsp, java.util.Collection<byte[]> crlBytes, MakeSignature.CryptoStandard sigtype)
secondDigest
- the digest in the authenticatedAttributestsaClient
- TSAClient - null or an optional time stamp authority clientpublic byte[] getAuthenticatedAttributeBytes(byte[] secondDigest, byte[] ocsp, java.util.Collection<byte[]> crlBytes, MakeSignature.CryptoStandard sigtype)
getEncodedPKCS7(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);
secondDigest
- the content digestpublic boolean verify() throws java.security.GeneralSecurityException
true
if the signature checks out, false
otherwisejava.security.SignatureException
- on errorjava.security.GeneralSecurityException
public boolean verifyTimestampImprint() throws java.security.GeneralSecurityException
java.security.GeneralSecurityException
- on errorpublic java.security.cert.Certificate[] getCertificates()
public java.security.cert.Certificate[] getSignCertificateChain()
public java.security.cert.X509Certificate getSigningCertificate()
public java.util.Collection<java.security.cert.CRL> getCRLs()
public org.bouncycastle.cert.ocsp.BasicOCSPResp getOcsp()
public boolean isRevocationValid()
public boolean isTsp()
public org.bouncycastle.tsp.TimeStampToken getTimeStampToken()
public java.util.Calendar getTimeStampDate()
public PdfName getFilterSubtype()
public java.lang.String getEncryptionAlgorithm()
Copyright © 1998–2018. All rights reserved.