org.apache.poi.poifs.crypt.agile
Class AgileEncryptor
java.lang.Object
org.apache.poi.poifs.crypt.Encryptor
org.apache.poi.poifs.crypt.agile.AgileEncryptor
- All Implemented Interfaces:
- java.lang.Cloneable
public class AgileEncryptor
- extends Encryptor
- implements java.lang.Cloneable
Method Summary |
AgileEncryptor |
clone()
|
void |
confirmPassword(java.lang.String password)
|
void |
confirmPassword(java.lang.String password,
byte[] keySpec,
byte[] keySalt,
byte[] verifier,
byte[] verifierSalt,
byte[] integritySalt)
|
protected com.microsoft.schemas.office.x2006.encryption.EncryptionDocument |
createEncryptionDocument()
|
protected void |
createEncryptionInfoEntry(DirectoryNode dir,
java.io.File tmpFile)
|
java.io.OutputStream |
getDataStream(DirectoryNode dir)
Return a output stream for encrypted data. |
protected void |
marshallEncryptionDocument(com.microsoft.schemas.office.x2006.encryption.EncryptionDocument ed,
LittleEndianByteArrayOutputStream os)
|
protected void |
updateIntegrityHMAC(java.io.File tmpFile,
int oleStreamSize)
Generate an HMAC, as specified in [RFC2104], of the encrypted form of the data (message),
which the DataIntegrity element will verify by using the Salt generated in step 2 as the key. |
Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
AgileEncryptor
protected AgileEncryptor()
confirmPassword
public void confirmPassword(java.lang.String password)
- Specified by:
confirmPassword
in class Encryptor
confirmPassword
public void confirmPassword(java.lang.String password,
byte[] keySpec,
byte[] keySalt,
byte[] verifier,
byte[] verifierSalt,
byte[] integritySalt)
- Specified by:
confirmPassword
in class Encryptor
getDataStream
public java.io.OutputStream getDataStream(DirectoryNode dir)
throws java.io.IOException,
java.security.GeneralSecurityException
- Description copied from class:
Encryptor
- Return a output stream for encrypted data.
- Specified by:
getDataStream
in class Encryptor
- Parameters:
dir
- the node to write to
- Returns:
- encrypted stream
- Throws:
java.io.IOException
java.security.GeneralSecurityException
updateIntegrityHMAC
protected void updateIntegrityHMAC(java.io.File tmpFile,
int oleStreamSize)
throws java.security.GeneralSecurityException,
java.io.IOException
- Generate an HMAC, as specified in [RFC2104], of the encrypted form of the data (message),
which the DataIntegrity element will verify by using the Salt generated in step 2 as the key.
Note that the entire EncryptedPackage stream (1), including the StreamSize field, MUST be
used as the message.
Encrypt the HMAC as in step 3 by using a blockKey byte array consisting of the following bytes:
0xa0, 0x67, 0x7f, 0x02, 0xb2, 0x2c, 0x84, and 0x33.
- Throws:
java.security.GeneralSecurityException
java.io.IOException
createEncryptionDocument
protected com.microsoft.schemas.office.x2006.encryption.EncryptionDocument createEncryptionDocument()
marshallEncryptionDocument
protected void marshallEncryptionDocument(com.microsoft.schemas.office.x2006.encryption.EncryptionDocument ed,
LittleEndianByteArrayOutputStream os)
createEncryptionInfoEntry
protected void createEncryptionInfoEntry(DirectoryNode dir,
java.io.File tmpFile)
throws java.io.IOException,
java.security.GeneralSecurityException
- Throws:
java.io.IOException
java.security.GeneralSecurityException
clone
public AgileEncryptor clone()
throws java.lang.CloneNotSupportedException
- Overrides:
clone
in class Encryptor
- Throws:
java.lang.CloneNotSupportedException
Copyright 2017 The Apache Software Foundation or
its licensors, as applicable.