org.apache.poi.poifs.crypt
Class Decryptor

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

public abstract class Decryptor
extends java.lang.Object


Field Summary
static java.lang.String DEFAULT_PASSWORD
           
 
Constructor Summary
Decryptor()
           
 
Method Summary
protected static int getBlockSize(int algorithm)
           
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)
           
abstract  long getLength()
          Returns the length of the encytpted data that can be safely read with getDataStream(org.apache.poi.poifs.filesystem.DirectoryNode).
protected  byte[] hashPassword(EncryptionInfo info, java.lang.String password)
           
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
Constructor Detail

Decryptor

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

getBlockSize

protected static int getBlockSize(int algorithm)

hashPassword

protected byte[] hashPassword(EncryptionInfo info,
                              java.lang.String password)
                       throws java.security.NoSuchAlgorithmException
Throws:
java.security.NoSuchAlgorithmException


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