Package com.itextpdf.kernel.mac
Class AbstractMacIntegrityProtector
java.lang.Object
com.itextpdf.kernel.mac.AbstractMacIntegrityProtector
Class responsible for integrity protection in encrypted documents, which uses MAC container.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final PdfDocumentprotected byte[]protected byte[]protected final MacProperties -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAbstractMacIntegrityProtector(PdfDocument document, MacProperties macProperties) CreatesAbstractMacIntegrityProtectorinstance from the providedMacProperties.protectedAbstractMacIntegrityProtector(PdfDocument document, PdfDictionary authDictionary) CreatesAbstractMacIntegrityProtectorinstance from the Auth dictionary. -
Method Summary
Modifier and TypeMethodDescriptionprotected IDERSequencecreateMacContainer(byte[] dataDigest, byte[] macKey, byte[] signature) Creates MAC container as ASN1 object based on data digest, MAC key and signature parameters.protected byte[]digestBytes(byte[] bytes) Digests provided bytes based on hash algorithm, specified for this class instance.protected byte[]digestBytes(InputStream inputStream) Digests provided input stream based on hash algorithm, specified for this class instance.protected static byte[]generateRandomBytes(int length) byte[]Gets KDF salt bytes, which are used during MAC key encryption.voidsetFileEncryptionKey(byte[] fileEncryptionKey) Sets file encryption key to be used during MAC calculation.voidsetKdfSalt(byte[] kdfSalt) Sets KDF salt bytes, to be used during MAC key encryption.voidValidates MAC container integrity.
-
Field Details
-
document
-
macProperties
-
kdfSalt
protected byte[] kdfSalt -
fileEncryptionKey
protected byte[] fileEncryptionKey
-
-
Constructor Details
-
AbstractMacIntegrityProtector
CreatesAbstractMacIntegrityProtectorinstance from the providedMacProperties.- Parameters:
-
document-PdfDocumentfor which integrity protection is required -
macProperties-MacPropertiesused to provide MAC algorithm properties
-
AbstractMacIntegrityProtector
CreatesAbstractMacIntegrityProtectorinstance from the Auth dictionary.- Parameters:
-
document-PdfDocumentfor which integrity protection is required -
authDictionary-PdfDictionaryrepresenting Auth dictionary in which MAC container is stored
-
-
Method Details
-
setFileEncryptionKey
public void setFileEncryptionKey(byte[] fileEncryptionKey) Sets file encryption key to be used during MAC calculation.- Parameters:
-
fileEncryptionKey-byte[]file encryption key bytes
-
getKdfSalt
public byte[] getKdfSalt()Gets KDF salt bytes, which are used during MAC key encryption.- Returns:
-
byte[]KDF salt bytes.
-
setKdfSalt
public void setKdfSalt(byte[] kdfSalt) Sets KDF salt bytes, to be used during MAC key encryption.- Parameters:
-
kdfSalt-byte[]KDF salt bytes.
-
validateMacToken
public void validateMacToken()Validates MAC container integrity. This method throwsPdfExceptionin case of any modifications, introduced to the document in question, after MAC container is integrated. -
digestBytes
protected byte[] digestBytes(byte[] bytes) throws NoSuchAlgorithmException, IOException, NoSuchProviderException Digests provided bytes based on hash algorithm, specified for this class instance.- Parameters:
-
bytes-byte[]to be digested - Returns:
- digested bytes.
- Throws:
-
NoSuchAlgorithmException- in case of digesting algorithm related exceptions -
IOException- in case of input-output related exceptions -
NoSuchProviderException- thrown when a particular security provider is requested but is not available in the environment
-
digestBytes
protected byte[] digestBytes(InputStream inputStream) throws NoSuchAlgorithmException, IOException, NoSuchProviderException Digests provided input stream based on hash algorithm, specified for this class instance.- Parameters:
-
inputStream-InputStreamto be digested - Returns:
- digested bytes.
- Throws:
-
NoSuchAlgorithmException- in case of digesting algorithm related exceptions -
IOException- in case of input-output related exceptions -
NoSuchProviderException- thrown when a particular security provider is requested but is not available in the environment
-
createMacContainer
protected IDERSequence createMacContainer(byte[] dataDigest, byte[] macKey, byte[] signature) throws GeneralSecurityException, IOException Creates MAC container as ASN1 object based on data digest, MAC key and signature parameters.- Parameters:
-
dataDigest- data digest asbyte[]to be used during MAC container creation -
macKey- MAC key asbyte[]to be used during MAC container creation -
signature- signature value asbyte[]to be used during MAC container creation - Returns:
-
MAC container as
IDERSequence. - Throws:
-
GeneralSecurityException- in case of security related exceptions -
IOException- in case of input-output related exceptions
-
generateRandomBytes
protected static byte[] generateRandomBytes(int length)
-