org.apache.poi.poifs.crypt.cryptoapi
Class CryptoAPIDecryptor
java.lang.Object
org.apache.poi.poifs.crypt.Decryptor
org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor
public class CryptoAPIDecryptor
- extends Decryptor
Methods inherited from class org.apache.poi.poifs.crypt.Decryptor |
getBlockSizeInBytes, getDataStream, getDataStream, getDataStream, getInstance, getIntegrityHmacKey, getIntegrityHmacValue, getKeySizeInBytes, getSecretKey, getVerifier, setIntegrityHmacKey, setIntegrityHmacValue, setSecretKey, setVerifier |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
CryptoAPIDecryptor
protected CryptoAPIDecryptor(CryptoAPIEncryptionInfoBuilder builder)
verifyPassword
public boolean verifyPassword(java.lang.String password)
- Specified by:
verifyPassword
in class Decryptor
initCipherForBlock
public javax.crypto.Cipher initCipherForBlock(javax.crypto.Cipher cipher,
int block)
throws java.security.GeneralSecurityException
- Initializes a cipher object for a given block index for decryption
- Parameters:
cipher
- may be null, otherwise the given instance is reset to the new block indexblock
- the block index, e.g. the persist/slide id (hslf)
- Returns:
- a new cipher object, if cipher was null, otherwise the reinitialized cipher
- Throws:
java.security.GeneralSecurityException
initCipherForBlock
protected static javax.crypto.Cipher initCipherForBlock(javax.crypto.Cipher cipher,
int block,
EncryptionInfoBuilder builder,
javax.crypto.SecretKey skey,
int encryptMode)
throws java.security.GeneralSecurityException
- Throws:
java.security.GeneralSecurityException
generateSecretKey
protected static javax.crypto.SecretKey generateSecretKey(java.lang.String password,
EncryptionVerifier ver)
getDataStream
public java.io.InputStream getDataStream(DirectoryNode dir)
throws java.io.IOException,
java.security.GeneralSecurityException
- Decrypt the Document-/SummaryInformation and other optionally streams.
Opposed to other crypto modes, cryptoapi is record based and can't be used
to stream-decrypt a whole file
- Specified by:
getDataStream
in class Decryptor
- Parameters:
dir
- the node to read from
- Returns:
- decrypted stream
- Throws:
java.io.IOException
java.security.GeneralSecurityException
- See Also:
- 2.3.5.4 RC4 CryptoAPI Encrypted Summary Stream
getLength
public long getLength()
- Description copied from class:
Decryptor
- Returns the length of the encrypted 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:
- the length of the stream returned by
getDataStream(DirectoryNode)
Copyright 2016 The Apache Software Foundation or
its licensors, as applicable.