Class PublicKeySecurityHandler

    • 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 class SecurityHandler
        Parameters:
        encryption - encryption dictionary, can be retrieved via PDDocument.getEncryption()
        documentIDArray - document id which is returned via COSDocument.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 class SecurityHandler
        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