Class PublicKeySecurityHandler
- java.lang.Object
-
- org.apache.pdfbox.pdmodel.encryption.SecurityHandler<PublicKeyProtectionPolicy>
-
- org.apache.pdfbox.pdmodel.encryption.PublicKeySecurityHandler
-
public final class PublicKeySecurityHandler extends SecurityHandler<PublicKeyProtectionPolicy>
This class implements the public key security handler described in the PDF specification.
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringFILTERThe filter name.private static java.lang.StringSUBFILTER4private static java.lang.StringSUBFILTER5
-
Constructor Summary
Constructors Constructor Description PublicKeySecurityHandler()Constructor.PublicKeySecurityHandler(PublicKeyProtectionPolicy publicKeyProtectionPolicy)Constructor used for encryption.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidappendCertInfo(java.lang.StringBuilder extraInfo, org.bouncycastle.cms.KeyTransRecipientId ktRid, java.security.cert.X509Certificate certificate, org.bouncycastle.cert.X509CertificateHolder materialCert)private org.bouncycastle.asn1.cms.KeyTransRecipientInfocomputeRecipientInfo(java.security.cert.X509Certificate x509certificate, byte[] abyte0)private byte[][]computeRecipientsField(byte[] seed)private org.bouncycastle.asn1.ASN1PrimitivecreateDERForRecipient(byte[] in, java.security.cert.X509Certificate cert)voidprepareDocumentForEncryption(PDDocument doc)Prepare the document for encryption.private voidprepareEncryptionDictAES(PDEncryption encryptionDictionary, COSName aesVName, byte[][] recipients)voidprepareForDecryption(PDEncryption encryption, COSArray documentIDArray, DecryptionMaterial decryptionMaterial)Prepares everything to decrypt the document.-
Methods inherited from class org.apache.pdfbox.pdmodel.encryption.SecurityHandler
computeVersionNumber, decrypt, decryptStream, encryptDataRC4, encryptDataRC4, encryptStream, encryptString, getCurrentAccessPermission, getEncryptionKey, getKeyLength, getProtectionPolicy, hasProtectionPolicy, isAES, isDecryptMetadata, setAES, setCurrentAccessPermission, setCustomSecureRandom, setDecryptMetadata, setEncryptionKey, setKeyLength, setProtectionPolicy, setStreamFilterName, setStringFilterName
-
-
-
-
Field Detail
-
FILTER
public static final java.lang.String FILTER
The filter name.- See Also:
- Constant Field Values
-
SUBFILTER4
private static final java.lang.String SUBFILTER4
- See Also:
- Constant Field Values
-
SUBFILTER5
private static final java.lang.String SUBFILTER5
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
PublicKeySecurityHandler
public PublicKeySecurityHandler()
Constructor.
-
PublicKeySecurityHandler
public PublicKeySecurityHandler(PublicKeyProtectionPolicy publicKeyProtectionPolicy)
Constructor used for encryption.- Parameters:
publicKeyProtectionPolicy- The protection policy.
-
-
Method Detail
-
prepareForDecryption
public void prepareForDecryption(PDEncryption encryption, COSArray documentIDArray, DecryptionMaterial decryptionMaterial) throws java.io.IOException
Prepares everything to decrypt the document.- Specified by:
prepareForDecryptionin classSecurityHandler<PublicKeyProtectionPolicy>- Parameters:
encryption- encryption dictionary, can be retrieved viaPDDocument.getEncryption()documentIDArray- document id which is returned viaCOSDocument.getDocumentID()(not used by this handler)decryptionMaterial- Information used to decrypt the document.- Throws:
java.io.IOException- If there is an error accessing data. If verbose mode is enabled, the exception message will provide more details why the match wasn't successful.
-
appendCertInfo
private void appendCertInfo(java.lang.StringBuilder extraInfo, org.bouncycastle.cms.KeyTransRecipientId ktRid, java.security.cert.X509Certificate certificate, org.bouncycastle.cert.X509CertificateHolder materialCert)
-
prepareDocumentForEncryption
public void prepareDocumentForEncryption(PDDocument doc) throws java.io.IOException
Prepare the document for encryption.- Specified by:
prepareDocumentForEncryptionin classSecurityHandler<PublicKeyProtectionPolicy>- Parameters:
doc- The document that will be encrypted.- Throws:
java.io.IOException- If there is an error while encrypting.
-
prepareEncryptionDictAES
private void prepareEncryptionDictAES(PDEncryption encryptionDictionary, COSName aesVName, byte[][] recipients)
-
computeRecipientsField
private byte[][] computeRecipientsField(byte[] seed) throws java.security.GeneralSecurityException, java.io.IOException- Throws:
java.security.GeneralSecurityExceptionjava.io.IOException
-
createDERForRecipient
private org.bouncycastle.asn1.ASN1Primitive createDERForRecipient(byte[] in, java.security.cert.X509Certificate cert) throws java.io.IOException, java.security.GeneralSecurityException- Throws:
java.io.IOExceptionjava.security.GeneralSecurityException
-
computeRecipientInfo
private org.bouncycastle.asn1.cms.KeyTransRecipientInfo computeRecipientInfo(java.security.cert.X509Certificate x509certificate, byte[] abyte0) throws java.io.IOException, java.security.cert.CertificateEncodingException, java.security.InvalidKeyException, javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException- Throws:
java.io.IOExceptionjava.security.cert.CertificateEncodingExceptionjava.security.InvalidKeyExceptionjavax.crypto.BadPaddingExceptionjavax.crypto.IllegalBlockSizeException
-
-