Class Decryptor
java.lang.Object
org.docx4j.org.apache.poi.poifs.crypt.Decryptor
- Direct Known Subclasses:
AgileDecryptor,BinaryRC4Decryptor,CryptoAPIDecryptor,StandardDecryptor
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final EncryptionInfoBuilderstatic final Stringstatic final String -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected intabstract InputStreamReturn a stream with decrypted data.static DecryptorgetInstance(EncryptionInfo info) byte[]byte[]protected intabstract longReturns the length of the encrypted data that can be safely read withgetDataStream(org.docx4j.org.apache.poi.poifs.filesystem.DirectoryNode).byte[]protected voidsetIntegrityHmacKey(byte[] integrityHmacKey) protected voidsetIntegrityHmacValue(byte[] integrityHmacValue) protected voidsetSecretKey(SecretKey secretKey) protected voidsetVerifier(byte[] verifier) abstract booleanverifyPassword(String password)
-
Field Details
-
DEFAULT_PASSWORD
- See Also:
-
DEFAULT_POIFS_ENTRY
- See Also:
-
builder
-
-
Constructor Details
-
Decryptor
-
-
Method Details
-
getDataStream
public abstract InputStream getDataStream(DirectoryNode dir) throws IOException, GeneralSecurityException Return a stream with decrypted data.Use
getLength()to get the size of that data that can be safely read from the stream. Just reading to the end of the input stream is not sufficient because there are normally padding bytes that must be discarded- Parameters:
dir- the node to read from- Returns:
- decrypted stream
- Throws:
IOExceptionGeneralSecurityException
-
verifyPassword
- Throws:
GeneralSecurityException
-
getLength
public abstract long getLength()Returns the length of the encrypted data that can be safely read withgetDataStream(org.docx4j.org.apache.poi.poifs.filesystem.DirectoryNode). Just reading to the end of the input stream is not sufficient because there are normally padding bytes that must be discardedThe length variable is initialized in
getDataStream(org.docx4j.org.apache.poi.poifs.filesystem.DirectoryNode), an attempt to call getLength() prior to getDataStream() will result in IllegalStateException.- Returns:
- length of the encrypted data
- Throws:
IllegalStateException- ifgetDataStream(org.docx4j.org.apache.poi.poifs.filesystem.DirectoryNode)was not called
-
getInstance
-
getDataStream
- Throws:
IOExceptionGeneralSecurityException
-
getDataStream
- Throws:
IOExceptionGeneralSecurityException
-
getDataStream
- Throws:
IOExceptionGeneralSecurityException
-
getVerifier
public byte[] getVerifier() -
getSecretKey
-
getIntegrityHmacKey
public byte[] getIntegrityHmacKey() -
getIntegrityHmacValue
public byte[] getIntegrityHmacValue() -
setSecretKey
-
setVerifier
protected void setVerifier(byte[] verifier) -
setIntegrityHmacKey
protected void setIntegrityHmacKey(byte[] integrityHmacKey) -
setIntegrityHmacValue
protected void setIntegrityHmacValue(byte[] integrityHmacValue) -
getBlockSizeInBytes
protected int getBlockSizeInBytes() -
getKeySizeInBytes
protected int getKeySizeInBytes()
-