|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.itextpdf.text.pdf.security.PdfPKCS7
public class PdfPKCS7
This class does all the processing related to signing and verifying a PKCS#7 signature.
| Constructor Summary | |
|---|---|
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. |
|
| Method Summary | |
|---|---|
byte[] |
getAuthenticatedAttributeBytes(byte[] secondDigest,
java.util.Calendar signingTime,
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,
java.util.Calendar signingTime)
Gets the bytes for the PKCS7SignedData object. |
byte[] |
getEncodedPKCS7(byte[] secondDigest,
java.util.Calendar signingTime,
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 |
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. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
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 chaincrlList - the certificate revocation listhashAlgorithm - the hash algorithmprovider - the provider or null for the default providerhasRSAdata - true if the sub-filter is adbe.pkcs7.sha1
java.security.InvalidKeyException - on error
java.security.NoSuchProviderException - on error
java.security.NoSuchAlgorithmException - on error
public PdfPKCS7(byte[] contentsKey,
byte[] certsKey,
java.lang.String provider)
contentsKey - the /Contents keycertsKey - the /Cert keyprovider - the provider or null for the default provider
public PdfPKCS7(byte[] contentsKey,
PdfName filterSubtype,
java.lang.String provider)
contentsKey - the /Contents keytsp - set to true if there's a PAdES LTV time stamp.provider - the provider or null for the default provider| Method Detail |
|---|
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 length
java.security.SignatureException - on errorpublic byte[] getEncodedPKCS1()
public byte[] getEncodedPKCS7()
public byte[] getEncodedPKCS7(byte[] secondDigest,
java.util.Calendar signingTime)
null, none will be used.
secondDigest - the digest in the authenticatedAttributessigningTime - the signing time in the authenticatedAttributes
public byte[] getEncodedPKCS7(byte[] secondDigest,
java.util.Calendar signingTime,
TSAClient tsaClient,
byte[] ocsp,
java.util.Collection<byte[]> crlBytes,
MakeSignature.CryptoStandard sigtype)
secondDigest - the digest in the authenticatedAttributessigningTime - the signing time in the authenticatedAttributestsaClient - TSAClient - null or an optional time stamp authority client
public byte[] getAuthenticatedAttributeBytes(byte[] secondDigest,
java.util.Calendar signingTime,
byte[] ocsp,
java.util.Collection<byte[]> crlBytes,
MakeSignature.CryptoStandard sigtype)
getEncodedPKCS7(byte[],Calendar).
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 digestsigningTime - the signing time
public boolean verify()
throws java.security.SignatureException
true if the signature checks out, false otherwise
java.security.SignatureException - on error
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()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||