Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.poi.poifs.crypt
Class EncryptionInfo

    java.lang.Object
      org.apache.poi.poifs.crypt.EncryptionInfo

All Implemented Interfaces:
  java.lang.Cloneable

    public class EncryptionInfo

extends java.lang.Object
implements java.lang.Cloneable

This class may require `poi-ooxml` to be on the classpath to load some `EncryptionMode`s.

See Also:
  `getBuilder(EncryptionMode)`

Field Summary
`static 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
`EncryptionInfo(DirectoryNode dir)` Opens for decryption
`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 scratch
`EncryptionInfo(LittleEndianInput dis, EncryptionMode preferredEncryptionMode)`
`EncryptionInfo(NPOIFSFileSystem fs)` Opens for decryption
`EncryptionInfo(OPOIFSFileSystem fs)` Opens for decryption
`EncryptionInfo(POIFSFileSystem fs)` Opens for decryption

Method Summary
`EncryptionInfo` | `clone()`
`protected static EncryptionInfoBuilder` | `getBuilder(EncryptionMode encryptionMode)` This method loads the builder class with reflection, which may generate a `ClassNotFoundException` if the class is not on the classpath.
`Decryptor` | `getDecryptor()`
`int` | `getEncryptionFlags()`
`EncryptionMode` | `getEncryptionMode()`
`Encryptor` | `getEncryptor()`
`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
`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### 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 java.io.IOException

  Opens for decryption

  Throws:
    `java.io.IOException`

### EncryptionInfo

    public EncryptionInfo(OPOIFSFileSystem fs)
                   throws java.io.IOException

  Opens for decryption

  Throws:
    `java.io.IOException`

### EncryptionInfo

    public EncryptionInfo(NPOIFSFileSystem fs)
                   throws java.io.IOException

  Opens for decryption

  Throws:
    `java.io.IOException`

### EncryptionInfo

    public EncryptionInfo(DirectoryNode dir)
                   throws java.io.IOException

  Opens for decryption

  Throws:
    `java.io.IOException`

### EncryptionInfo

    public EncryptionInfo(LittleEndianInput dis,
                          EncryptionMode preferredEncryptionMode)
                   throws java.io.IOException

Throws:
  `java.io.IOException`

### EncryptionInfo

    public EncryptionInfo(EncryptionMode encryptionMode)

  Prepares for encryption, using the given Encryption Mode, and all other parameters as default.

  See Also:
    `EncryptionInfo(EncryptionMode, CipherAlgorithm, HashAlgorithm, int, int, ChainingMode)`

### EncryptionInfo

    public EncryptionInfo(EncryptionMode encryptionMode,
                          CipherAlgorithm cipherAlgorithm,
                          HashAlgorithm hashAlgorithm,
                          int keyBits,
                          int blockSize,
                          ChainingMode chainingMode)

  Constructs an EncryptionInfo from scratch

  Parameters:
    `encryptionMode` - see `EncryptionMode` for values, `EncryptionMode.cryptoAPI` is for internal use only, as it's record based
    `cipherAlgorithm` -
    `hashAlgorithm` -
    `keyBits` -
    `blockSize` -
    `chainingMode` -
  Throws:
    `EncryptedDocumentException` - if the given parameters mismatch, e.g. only certain combinations of keyBits, blockSize are allowed for a given `CipherAlgorithm`

Method Detail

### getBuilder

    protected static EncryptionInfoBuilder getBuilder(EncryptionMode encryptionMode)
                                               throws java.lang.ClassNotFoundException,
                                                      java.lang.IllegalAccessException,
                                                      java.lang.InstantiationException

  This method loads the builder class with reflection, which may generate a `ClassNotFoundException` if the class is not on the classpath. For example, `AgileEncryptionInfoBuilder` is contained in the `poi-ooxml` package since the class makes use of some OOXML classes rather than using the `poi` package and plain XML DOM calls. As such, you may need to include `poi-ooxml` and `poi-ooxml-schemas` to load some encryption mode builders. See bug #60021 for more information. https://bz.apache.org/bugzilla/show_bug.cgi?id=60021

  Parameters:
    `encryptionMode` - the encryption mode
  Returns:
    an encryption info builder
  Throws:
    `java.lang.ClassNotFoundException`
    `java.lang.IllegalAccessException`
    `java.lang.InstantiationException`

### 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

### clone

    public EncryptionInfo clone()
                         throws java.lang.CloneNotSupportedException

  Overrides:
    `clone` in class `java.lang.Object`
  Throws:
    `java.lang.CloneNotSupportedException`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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