org.apache.poi.poifs.crypt.agile
Class AgileDecryptor
java.lang.Object
org.apache.poi.poifs.crypt.Decryptor
org.apache.poi.poifs.crypt.agile.AgileDecryptor
public class AgileDecryptor
- extends Decryptor
Decryptor implementation for Agile Encryption
|
Method Summary |
java.io.InputStream |
getDataStream(DirectoryNode dir)
|
long |
getLength()
|
protected static int |
getNextBlockSize(int inputLen,
int blockSize)
|
protected static byte[] |
hashInput(EncryptionInfoBuilder builder,
byte[] pwHash,
byte[] blockKey,
byte[] inputKey,
int cipherMode)
|
protected static javax.crypto.Cipher |
initCipherForBlock(javax.crypto.Cipher existing,
int block,
boolean lastChunk,
EncryptionInfoBuilder builder,
javax.crypto.SecretKey skey,
int encryptionMode)
|
boolean |
verifyPassword(java.security.KeyPair keyPair,
java.security.cert.X509Certificate x509)
instead of a password, it's also possible to decrypt via certificate. |
boolean |
verifyPassword(java.lang.String password)
set decryption password |
| 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 |
kVerifierInputBlock
protected static final byte[] kVerifierInputBlock
kHashedVerifierBlock
protected static final byte[] kHashedVerifierBlock
kCryptoKeyBlock
protected static final byte[] kCryptoKeyBlock
kIntegrityKeyBlock
protected static final byte[] kIntegrityKeyBlock
kIntegrityValueBlock
protected static final byte[] kIntegrityValueBlock
AgileDecryptor
protected AgileDecryptor(AgileEncryptionInfoBuilder builder)
verifyPassword
public boolean verifyPassword(java.lang.String password)
throws java.security.GeneralSecurityException
- set decryption password
- Specified by:
verifyPassword in class Decryptor
- Throws:
java.security.GeneralSecurityException
verifyPassword
public boolean verifyPassword(java.security.KeyPair keyPair,
java.security.cert.X509Certificate x509)
throws java.security.GeneralSecurityException
- instead of a password, it's also possible to decrypt via certificate.
Warning: this code is experimental and hasn't been validated
- Parameters:
keyPair - x509 -
- Returns:
- true, when the data can be successfully decrypted with the given private key
- Throws:
java.security.GeneralSecurityException- See Also:
- Agile encryption with certificates
getNextBlockSize
protected static int getNextBlockSize(int inputLen,
int blockSize)
hashInput
protected static byte[] hashInput(EncryptionInfoBuilder builder,
byte[] pwHash,
byte[] blockKey,
byte[] inputKey,
int cipherMode)
getDataStream
public java.io.InputStream getDataStream(DirectoryNode dir)
throws java.io.IOException,
java.security.GeneralSecurityException
- Specified by:
getDataStream in class Decryptor
- Throws:
java.io.IOException
java.security.GeneralSecurityException
getLength
public long getLength()
- Specified by:
getLength in class Decryptor
initCipherForBlock
protected static javax.crypto.Cipher initCipherForBlock(javax.crypto.Cipher existing,
int block,
boolean lastChunk,
EncryptionInfoBuilder builder,
javax.crypto.SecretKey skey,
int encryptionMode)
throws java.security.GeneralSecurityException
- Throws:
java.security.GeneralSecurityException