Class PublicKeySecurityHandler
- java.lang.Object
-
- org.apache.pdfbox.pdmodel.encryption.SecurityHandler
-
- org.apache.pdfbox.pdmodel.encryption.PublicKeySecurityHandler
-
public final class PublicKeySecurityHandler extends SecurityHandler
This class implements the public key security handler described in the PDF specification.
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
FILTER
The filter name.private static java.lang.String
SUBFILTER4
private static java.lang.String
SUBFILTER5
-
Fields inherited from class org.apache.pdfbox.pdmodel.encryption.SecurityHandler
encryptionKey, keyLength
-
-
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 void
appendCertInfo(java.lang.StringBuilder extraInfo, org.bouncycastle.cms.KeyTransRecipientId ktRid, java.security.cert.X509Certificate certificate, org.bouncycastle.cert.X509CertificateHolder materialCert)
private org.bouncycastle.asn1.cms.KeyTransRecipientInfo
computeRecipientInfo(java.security.cert.X509Certificate x509certificate, byte[] abyte0)
private byte[][]
computeRecipientsField(byte[] seed)
private org.bouncycastle.asn1.ASN1Primitive
createDERForRecipient(byte[] in, java.security.cert.X509Certificate cert)
void
prepareDocumentForEncryption(PDDocument doc)
Prepare the document for encryption.private void
prepareEncryptionDictAES(PDEncryption encryptionDictionary, COSName aesVName, byte[][] recipients)
void
prepareForDecryption(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, 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:
prepareForDecryption
in classSecurityHandler
- 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:
prepareDocumentForEncryption
in classSecurityHandler
- 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.GeneralSecurityException
java.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.IOException
java.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.IOException
java.security.cert.CertificateEncodingException
java.security.InvalidKeyException
javax.crypto.BadPaddingException
javax.crypto.IllegalBlockSizeException
-
-