Class Decryptor
java.lang.Object
org.docx4j.org.apache.poi.poifs.crypt.Decryptor
- Direct Known Subclasses:
AgileDecryptor,BinaryRC4Decryptor,CryptoAPIDecryptor,StandardDecryptor
public abstract class Decryptor
extends java.lang.Object
-
Field Summary
Fields Modifier and Type Field Description protected EncryptionInfoBuilderbuilderstatic java.lang.StringDEFAULT_PASSWORDstatic java.lang.StringDEFAULT_POIFS_ENTRY -
Constructor Summary
Constructors Modifier Constructor Description protectedDecryptor(EncryptionInfoBuilder builder) -
Method Summary
Modifier and Type Method Description protected intgetBlockSizeInBytes()abstract java.io.InputStreamgetDataStream(DirectoryNode dir)Return a stream with decrypted data.java.io.InputStreamgetDataStream(NPOIFSFileSystem fs)java.io.InputStreamgetDataStream(OPOIFSFileSystem fs)java.io.InputStreamgetDataStream(POIFSFileSystem fs)static DecryptorgetInstance(EncryptionInfo info)byte[]getIntegrityHmacKey()byte[]getIntegrityHmacValue()protected intgetKeySizeInBytes()abstract longgetLength()Returns the length of the encrypted data that can be safely read withgetDataStream(org.docx4j.org.apache.poi.poifs.filesystem.DirectoryNode).javax.crypto.SecretKeygetSecretKey()byte[]getVerifier()protected voidsetIntegrityHmacKey(byte[] integrityHmacKey)protected voidsetIntegrityHmacValue(byte[] integrityHmacValue)protected voidsetSecretKey(javax.crypto.SecretKey secretKey)protected voidsetVerifier(byte[] verifier)abstract booleanverifyPassword(java.lang.String password)
-
Field Details
-
DEFAULT_PASSWORD
public static final java.lang.String DEFAULT_PASSWORD- See Also:
- Constant Field Values
-
DEFAULT_POIFS_ENTRY
public static final java.lang.String DEFAULT_POIFS_ENTRY- See Also:
- Constant Field Values
-
builder
-
-
Constructor Details
-
Method Details
-
getDataStream
public abstract java.io.InputStream getDataStream(DirectoryNode dir) throws java.io.IOException, java.security.GeneralSecurityExceptionReturn 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:
java.io.IOExceptionjava.security.GeneralSecurityException
-
verifyPassword
public abstract boolean verifyPassword(java.lang.String password) throws java.security.GeneralSecurityException- Throws:
java.security.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:
java.lang.IllegalStateException- ifgetDataStream(org.docx4j.org.apache.poi.poifs.filesystem.DirectoryNode)was not called
-
getInstance
-
getDataStream
public java.io.InputStream getDataStream(NPOIFSFileSystem fs) throws java.io.IOException, java.security.GeneralSecurityException- Throws:
java.io.IOExceptionjava.security.GeneralSecurityException
-
getDataStream
public java.io.InputStream getDataStream(OPOIFSFileSystem fs) throws java.io.IOException, java.security.GeneralSecurityException- Throws:
java.io.IOExceptionjava.security.GeneralSecurityException
-
getDataStream
public java.io.InputStream getDataStream(POIFSFileSystem fs) throws java.io.IOException, java.security.GeneralSecurityException- Throws:
java.io.IOExceptionjava.security.GeneralSecurityException
-
getVerifier
public byte[] getVerifier() -
getSecretKey
public javax.crypto.SecretKey getSecretKey() -
getIntegrityHmacKey
public byte[] getIntegrityHmacKey() -
getIntegrityHmacValue
public byte[] getIntegrityHmacValue() -
setSecretKey
protected void setSecretKey(javax.crypto.SecretKey secretKey) -
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()
-