public abstract class Decryptor
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
protected EncryptionInfoBuilder |
builder |
static java.lang.String |
DEFAULT_PASSWORD |
static java.lang.String |
DEFAULT_POIFS_ENTRY |
Modifier | Constructor and Description |
---|---|
protected |
Decryptor(EncryptionInfoBuilder builder) |
Modifier and Type | Method and Description |
---|---|
protected int |
getBlockSizeInBytes() |
abstract java.io.InputStream |
getDataStream(DirectoryNode dir)
Return a stream with decrypted data.
|
java.io.InputStream |
getDataStream(NPOIFSFileSystem fs) |
java.io.InputStream |
getDataStream(POIFSFileSystem fs) |
static Decryptor |
getInstance(EncryptionInfo info) |
byte[] |
getIntegrityHmacKey() |
byte[] |
getIntegrityHmacValue() |
protected int |
getKeySizeInBytes() |
abstract long |
getLength()
Returns the length of the encrypted data that can be safely read with
getDataStream(org.apache.poi.poifs.filesystem.DirectoryNode) . |
javax.crypto.SecretKey |
getSecretKey() |
byte[] |
getVerifier() |
protected void |
setIntegrityHmacKey(byte[] integrityHmacKey) |
protected void |
setIntegrityHmacValue(byte[] integrityHmacValue) |
protected void |
setSecretKey(javax.crypto.SecretKey secretKey) |
protected void |
setVerifier(byte[] verifier) |
abstract boolean |
verifyPassword(java.lang.String password) |
public static final java.lang.String DEFAULT_PASSWORD
public static final java.lang.String DEFAULT_POIFS_ENTRY
protected final EncryptionInfoBuilder builder
protected Decryptor(EncryptionInfoBuilder builder)
public abstract java.io.InputStream getDataStream(DirectoryNode dir) throws java.io.IOException, java.security.GeneralSecurityException
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
dir
- the node to read fromjava.io.IOException
java.security.GeneralSecurityException
public abstract boolean verifyPassword(java.lang.String password) throws java.security.GeneralSecurityException
java.security.GeneralSecurityException
public abstract long getLength()
getDataStream(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 discarded
The length variable is initialized in getDataStream(org.apache.poi.poifs.filesystem.DirectoryNode)
,
an attempt to call getLength() prior to getDataStream() will result in IllegalStateException.
java.lang.IllegalStateException
- if getDataStream(org.apache.poi.poifs.filesystem.DirectoryNode)
was not calledpublic static Decryptor getInstance(EncryptionInfo info)
public java.io.InputStream getDataStream(NPOIFSFileSystem fs) throws java.io.IOException, java.security.GeneralSecurityException
java.io.IOException
java.security.GeneralSecurityException
public java.io.InputStream getDataStream(POIFSFileSystem fs) throws java.io.IOException, java.security.GeneralSecurityException
java.io.IOException
java.security.GeneralSecurityException
public byte[] getVerifier()
public javax.crypto.SecretKey getSecretKey()
public byte[] getIntegrityHmacKey()
public byte[] getIntegrityHmacValue()
protected void setSecretKey(javax.crypto.SecretKey secretKey)
protected void setVerifier(byte[] verifier)
protected void setIntegrityHmacKey(byte[] integrityHmacKey)
protected void setIntegrityHmacValue(byte[] integrityHmacValue)
protected int getBlockSizeInBytes()
protected int getKeySizeInBytes()
Copyright 2015 The Apache Software Foundation or its licensors, as applicable.