org.apache.poi.poifs.crypt
Class Decryptor

java.lang.Object
  extended by org.apache.poi.poifs.crypt.Decryptor
Direct Known Subclasses:
AgileDecryptor, BinaryRC4Decryptor, CryptoAPIDecryptor, StandardDecryptor

public abstract class Decryptor
extends java.lang.Object


Field Summary
protected  EncryptionInfoBuilder builder
           
static java.lang.String DEFAULT_PASSWORD
           
static java.lang.String DEFAULT_POIFS_ENTRY
           
 
Constructor Summary
protected Decryptor(EncryptionInfoBuilder builder)
           
 
Method Summary
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(OPOIFSFileSystem 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)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

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

protected final EncryptionInfoBuilder builder
Constructor Detail

Decryptor

protected Decryptor(EncryptionInfoBuilder builder)
Method Detail

getDataStream

public abstract java.io.InputStream getDataStream(DirectoryNode dir)
                                           throws java.io.IOException,
                                                  java.security.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:
java.io.IOException
java.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 with 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.

Returns:
length of the encrypted data
Throws:
java.lang.IllegalStateException - if getDataStream(org.apache.poi.poifs.filesystem.DirectoryNode) was not called

getInstance

public static Decryptor getInstance(EncryptionInfo info)

getDataStream

public java.io.InputStream getDataStream(NPOIFSFileSystem fs)
                                  throws java.io.IOException,
                                         java.security.GeneralSecurityException
Throws:
java.io.IOException
java.security.GeneralSecurityException

getDataStream

public java.io.InputStream getDataStream(OPOIFSFileSystem fs)
                                  throws java.io.IOException,
                                         java.security.GeneralSecurityException
Throws:
java.io.IOException
java.security.GeneralSecurityException

getDataStream

public java.io.InputStream getDataStream(POIFSFileSystem fs)
                                  throws java.io.IOException,
                                         java.security.GeneralSecurityException
Throws:
java.io.IOException
java.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()


Copyright 2015 The Apache Software Foundation or its licensors, as applicable.