Class ECIESKeyEncapsulation

  • All Implemented Interfaces:
    KeyEncapsulation

    public class ECIESKeyEncapsulation
    extends Object
    implements KeyEncapsulation
    The ECIES Key Encapsulation Mechanism (ECIES-KEM) from ISO 18033-2.
    • Constructor Detail

      • ECIESKeyEncapsulation

        public ECIESKeyEncapsulation​(DerivationFunction kdf,
                                     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,
                                     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

      • 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 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:
        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)