Package org.apache.poi.poifs.crypt
Class EncryptionInfo
- java.lang.Object
-
- org.apache.poi.poifs.crypt.EncryptionInfo
-
- All Implemented Interfaces:
GenericRecord
public class EncryptionInfo extends Object implements GenericRecord
Wrapper for the EncryptionInfo node of encrypted documents
-
-
Field Summary
Fields Modifier and Type Field Description static String
ENCRYPTION_INFO_ENTRY
Document entry name for encryption info xml descriptorstatic BitField
flagAES
A value that MUST be 1 if the protected content is an ECMA-376 document ECMA-376.static BitField
flagCryptoAPI
A flag that specifies whether CryptoAPI RC4 or ECMA-376 encryption ECMA-376 is used.static BitField
flagDocProps
A value that MUST be 0 if document properties are encrypted.static BitField
flagExternal
A value that MUST be 1 if extensible encryption is used.
-
Constructor Summary
Constructors Constructor Description EncryptionInfo(EncryptionInfo other)
EncryptionInfo(EncryptionMode encryptionMode)
Prepares for encryption, using the given Encryption Mode, and all other parameters as default.EncryptionInfo(EncryptionMode encryptionMode, CipherAlgorithm cipherAlgorithm, HashAlgorithm hashAlgorithm, int keyBits, int blockSize, ChainingMode chainingMode)
Constructs an EncryptionInfo from scratchEncryptionInfo(DirectoryNode dir)
Opens for decryptionEncryptionInfo(POIFSFileSystem fs)
Opens for decryptionEncryptionInfo(LittleEndianInput dis, EncryptionMode preferredEncryptionMode)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description EncryptionInfo
copy()
Decryptor
getDecryptor()
int
getEncryptionFlags()
EncryptionMode
getEncryptionMode()
Encryptor
getEncryptor()
Map<String,Supplier<?>>
getGenericProperties()
EncryptionHeader
getHeader()
EncryptionVerifier
getVerifier()
int
getVersionMajor()
int
getVersionMinor()
boolean
isDocPropsEncrypted()
void
setDecryptor(Decryptor decryptor)
void
setEncryptor(Encryptor encryptor)
void
setHeader(EncryptionHeader header)
void
setVerifier(EncryptionVerifier verifier)
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.poi.common.usermodel.GenericRecord
getGenericChildren, getGenericRecordType
-
-
-
-
Field Detail
-
ENCRYPTION_INFO_ENTRY
public static final String ENCRYPTION_INFO_ENTRY
Document entry name for encryption info xml descriptor- See Also:
- Constant Field Values
-
flagCryptoAPI
public static final BitField flagCryptoAPI
A flag that specifies whether CryptoAPI RC4 or ECMA-376 encryption ECMA-376 is used. It MUST be 1 unless flagExternal is 1. If flagExternal is 1, it MUST be 0.
-
flagDocProps
public static final BitField flagDocProps
A value that MUST be 0 if document properties are encrypted. The encryption of document properties is specified in section 2.3.5.4.
-
flagExternal
public static final BitField flagExternal
A value that MUST be 1 if extensible encryption is used. If this value is 1, the value of every other field in this structure MUST be 0.
-
flagAES
public static final BitField flagAES
A value that MUST be 1 if the protected content is an ECMA-376 document ECMA-376. If the fAES bit is 1, the fCryptoAPI bit MUST also be 1.
-
-
Constructor Detail
-
EncryptionInfo
public EncryptionInfo(POIFSFileSystem fs) throws IOException
Opens for decryption- Throws:
IOException
-
EncryptionInfo
public EncryptionInfo(DirectoryNode dir) throws IOException
Opens for decryption- Throws:
IOException
-
EncryptionInfo
public EncryptionInfo(LittleEndianInput dis, EncryptionMode preferredEncryptionMode) throws IOException
- Throws:
IOException
-
EncryptionInfo
public EncryptionInfo(EncryptionMode encryptionMode)
Prepares for encryption, using the given Encryption Mode, and all other parameters as default.
-
EncryptionInfo
public EncryptionInfo(EncryptionMode encryptionMode, CipherAlgorithm cipherAlgorithm, HashAlgorithm hashAlgorithm, int keyBits, int blockSize, ChainingMode chainingMode)
Constructs an EncryptionInfo from scratch- Parameters:
encryptionMode
- seeEncryptionMode
for values,EncryptionMode.cryptoAPI
is for internal use only, as its record basedcipherAlgorithm
- the cipher algorithmhashAlgorithm
- the hash algorithmkeyBits
- the bit count of the keyblockSize
- the size of a cipher blockchainingMode
- the chaining mode- Throws:
EncryptedDocumentException
- if the given parameters mismatch, e.g. only certain combinations of keyBits, blockSize are allowed for a givenCipherAlgorithm
-
EncryptionInfo
public EncryptionInfo(EncryptionInfo other)
-
-
Method Detail
-
getVersionMajor
public int getVersionMajor()
-
getVersionMinor
public int getVersionMinor()
-
getEncryptionFlags
public int getEncryptionFlags()
-
getHeader
public EncryptionHeader getHeader()
-
getVerifier
public EncryptionVerifier getVerifier()
-
getDecryptor
public Decryptor getDecryptor()
-
getEncryptor
public Encryptor getEncryptor()
-
setHeader
public void setHeader(EncryptionHeader header)
-
setVerifier
public void setVerifier(EncryptionVerifier verifier)
-
setDecryptor
public void setDecryptor(Decryptor decryptor)
-
setEncryptor
public void setEncryptor(Encryptor encryptor)
-
getEncryptionMode
public EncryptionMode getEncryptionMode()
-
isDocPropsEncrypted
public boolean isDocPropsEncrypted()
- Returns:
- true, if Document Summary / Summary are encrypted and stored in the
EncryptedStream
stream, otherwise the Summaries aren't encrypted and located in their usual streams
-
copy
public EncryptionInfo copy()
-
getGenericProperties
public Map<String,Supplier<?>> getGenericProperties()
- Specified by:
getGenericProperties
in interfaceGenericRecord
-
-