Class 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 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)