Package org.bouncycastle.crypto.kems
Class ECIESKeyEncapsulation
java.lang.Object
org.bouncycastle.crypto.kems.ECIESKeyEncapsulation
- All Implemented Interfaces:
KeyEncapsulation
The ECIES Key Encapsulation Mechanism (ECIES-KEM) from ISO 18033-2.
-
Constructor Summary
ConstructorsConstructorDescriptionSet up the ECIES-KEM.ECIESKeyEncapsulation
(DerivationFunction kdf, SecureRandom rnd, boolean cofactorMode, boolean oldCofactorMode, boolean singleHashMode) Set up the ECIES-KEM. -
Method Summary
Modifier and TypeMethodDescriptionprotected ECMultiplier
decrypt
(byte[] in, int keyLen) Decrypt an encapsulated session key.decrypt
(byte[] in, int inOff, int inLen, int keyLen) Decrypt an encapsulated session key.protected KeyParameter
deriveKey
(int keyLen, byte[] C, byte[] PEH) encrypt
(byte[] out, int keyLen) Generate and encapsulate a random session key.encrypt
(byte[] out, int outOff, int keyLen) Generate and encapsulate a random session key.void
init
(CipherParameters key) Initialise the ECIES-KEM.
-
Constructor Details
-
ECIESKeyEncapsulation
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 Details
-
init
Initialise the ECIES-KEM.- Specified by:
init
in interfaceKeyEncapsulation
- Parameters:
key
- the recipient's public (for encryption) or private (for decryption) key.- Throws:
IllegalArgumentException
-
encrypt
Generate and encapsulate a random session key.- Specified by:
encrypt
in interfaceKeyEncapsulation
- 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:
IllegalArgumentException
-
encrypt
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 interfaceKeyEncapsulation
- 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
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
-
deriveKey
-