Package org.bouncycastle.crypto.kems

## Class ECIESKeyEncapsulation

- java.lang.Object
- - org.bouncycastle.crypto.kems.ECIESKeyEncapsulation

- All Implemented Interfaces:
    `KeyEncapsulation`

      public class ECIESKeyEncapsulation
      extends java.lang.Object
      implements KeyEncapsulation

  The ECIES Key Encapsulation Mechanism (ECIES-KEM) from ISO 18033-2.

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ECIESKeyEncapsulation​(DerivationFunction kdf, java.security.SecureRandom rnd)` | Set up the ECIES-KEM.
    `ECIESKeyEncapsulation​(DerivationFunction kdf, java.security.SecureRandom rnd, boolean cofactorMode, boolean oldCofactorMode, boolean singleHashMode)` | Set up the ECIES-KEM.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected ECMultiplier` | `createBasePointMultiplier()` |
    `CipherParameters` | `decrypt​(byte[] in, int keyLen)` | Decrypt an encapsulated session key.
    `CipherParameters` | `decrypt​(byte[] in, int inOff, int inLen, int keyLen)` | Decrypt an encapsulated session key.
    `protected KeyParameter` | `deriveKey​(int keyLen, byte[] C, byte[] PEH)` |
    `CipherParameters` | `encrypt​(byte[] out, int keyLen)` | Generate and encapsulate a random session key.
    `CipherParameters` | `encrypt​(byte[] out, int outOff, int keyLen)` | Generate and encapsulate a random session key.
    `void` | `init​(CipherParameters key)` | Initialise the ECIES-KEM.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ECIESKeyEncapsulation

          public ECIESKeyEncapsulation​(DerivationFunction kdf,
                                       java.security.SecureRandom rnd)

      Set up the ECIES-KEM.
      Parameters:
        `kdf` - the key derivation function to be used.
        `rnd` - the random source for the session key.

    - #### ECIESKeyEncapsulation

          public ECIESKeyEncapsulation​(DerivationFunction kdf,
                                       java.security.SecureRandom rnd,
                                       boolean cofactorMode,
                                       boolean oldCofactorMode,
                                       boolean singleHashMode)

      Set up the ECIES-KEM.
      Parameters:
        `kdf` - the key derivation function to be used.
        `rnd` - the random source for the session key.
        `cofactorMode` - if true use the new cofactor ECDH.
        `oldCofactorMode` - if true use the old cofactor ECDH.
        `singleHashMode` - if true use single hash mode.

  - ### Method Detail

    - #### init

          public void init​(CipherParameters key)
                    throws java.lang.IllegalArgumentException

      Initialise the ECIES-KEM.
      Specified by:
        `init` in interface `KeyEncapsulation`
      Parameters:
        `key` - the recipient's public (for encryption) or private (for decryption) key.
      Throws:
        `java.lang.IllegalArgumentException`

    - #### encrypt

          public CipherParameters encrypt​(byte[] out,
                                          int outOff,
                                          int keyLen)
                                   throws java.lang.IllegalArgumentException

      Generate and encapsulate a random session key.
      Specified by:
        `encrypt` in interface `KeyEncapsulation`
      Parameters:
        `out` - the output buffer for the encapsulated key.
        `outOff` - the offset for the output buffer.
        `keyLen` - the length of the session key.
      Returns:
        the random session key.
      Throws:
        `java.lang.IllegalArgumentException`

    - #### encrypt

          public CipherParameters encrypt​(byte[] out,
                                          int keyLen)

      Generate and encapsulate a random session key.
      Parameters:
        `out` - the output buffer for the encapsulated key.
        `keyLen` - the length of the session key.
      Returns:
        the random session key.

    - #### decrypt

          public CipherParameters decrypt​(byte[] in,
                                          int inOff,
                                          int inLen,
                                          int keyLen)
                                   throws java.lang.IllegalArgumentException

      Decrypt an encapsulated session key.
      Specified by:
        `decrypt` in interface `KeyEncapsulation`
      Parameters:
        `in` - the input buffer for the encapsulated key.
        `inOff` - the offset for the input buffer.
        `inLen` - the length of the encapsulated key.
        `keyLen` - the length of the session key.
      Returns:
        the session key.
      Throws:
        `java.lang.IllegalArgumentException`

    - #### decrypt

          public CipherParameters decrypt​(byte[] in,
                                          int keyLen)

      Decrypt an encapsulated session key.
      Parameters:
        `in` - the input buffer for the encapsulated key.
        `keyLen` - the length of the session key.
      Returns:
        the session key.

    - #### createBasePointMultiplier

          protected ECMultiplier createBasePointMultiplier()

    - #### deriveKey

          protected KeyParameter deriveKey​(int keyLen,
                                           byte[] C,
                                           byte[] PEH)