org.apache.poi.poifs.crypt
Class AgileDecryptor

java.lang.Object
  extended by org.apache.poi.poifs.crypt.Decryptor
      extended by org.apache.poi.poifs.crypt.AgileDecryptor

public class AgileDecryptor
extends Decryptor

Author:
Gary King

Field Summary
 
Fields inherited from class org.apache.poi.poifs.crypt.Decryptor
DEFAULT_PASSWORD
 
Constructor Summary
protected AgileDecryptor(EncryptionInfo info)
           
 
Method Summary
protected  byte[] generateIv(int algorithm, byte[] salt, byte[] blockKey)
           
 java.io.InputStream getDataStream(DirectoryNode dir)
          Return a stream with decrypted data.
 long getLength()
          Returns the length of the encytpted data that can be safely read with Decryptor.getDataStream(org.apache.poi.poifs.filesystem.DirectoryNode).
 boolean verifyPassword(java.lang.String password)
           
 
Methods inherited from class org.apache.poi.poifs.crypt.Decryptor
getBlockSize, getDataStream, getDataStream, getInstance, hashPassword
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AgileDecryptor

protected AgileDecryptor(EncryptionInfo info)
Method Detail

verifyPassword

public boolean verifyPassword(java.lang.String password)
                       throws java.security.GeneralSecurityException
Specified by:
verifyPassword in class Decryptor
Throws:
java.security.GeneralSecurityException

getDataStream

public java.io.InputStream getDataStream(DirectoryNode dir)
                                  throws java.io.IOException,
                                         java.security.GeneralSecurityException
Description copied from class: Decryptor
Return a stream with decrypted data.

Use Decryptor.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

Specified by:
getDataStream in class Decryptor
Parameters:
dir - the node to read from
Returns:
decrypted stream
Throws:
java.io.IOException
java.security.GeneralSecurityException

getLength

public long getLength()
Description copied from class: Decryptor
Returns the length of the encytpted data that can be safely read with Decryptor.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 Decryptor.getDataStream(org.apache.poi.poifs.filesystem.DirectoryNode), an attempt to call getLength() prior to getDataStream() will result in IllegalStateException.

Specified by:
getLength in class Decryptor
Returns:
length of the encrypted data

generateIv

protected byte[] generateIv(int algorithm,
                            byte[] salt,
                            byte[] blockKey)
                     throws java.security.NoSuchAlgorithmException
Throws:
java.security.NoSuchAlgorithmException


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