Crypto++ 8.7
Free C++ class library of cryptographic schemes
Static Public Member Functions | List of all members
ECIES< EC, HASH, COFACTOR_OPTION, DHAES_MODE, LABEL_OCTETS > Struct Template Reference

Elliptic Curve Integrated Encryption Scheme. More...

#include <eccrypto.h>

+ Inheritance diagram for ECIES< EC, HASH, COFACTOR_OPTION, DHAES_MODE, LABEL_OCTETS >:

Static Public Member Functions

static const char * StaticAlgorithmName ()
 

Additional Inherited Members

- Public Types inherited from DL_ES< DL_Keys_EC< EC >, DL_KeyAgreementAlgorithm_DH< EC::Point, NoCofactorMultiplication >, DL_KeyDerivationAlgorithm_P1363< EC::Point, true, P1363_KDF2< SHA1 > >, DL_EncryptionAlgorithm_Xor< HMAC< SHA1 >, true, false >, ECIES< EC > >
typedef PK_FinalTemplate< DL_DecryptorImpl< SchemeOptions > > Decryptor
 implements PK_Decryptor interface More...
 
typedef PK_FinalTemplate< DL_EncryptorImpl< SchemeOptions > > Encryptor
 implements PK_Encryptor interface More...
 
- Public Types inherited from DL_Keys_EC< EC >
typedef DL_PublicKey_EC< EC > PublicKey
 
typedef DL_PrivateKey_EC< EC > PrivateKey
 

Detailed Description

template<class EC, class HASH = SHA1, class COFACTOR_OPTION = NoCofactorMultiplication, bool DHAES_MODE = true, bool LABEL_OCTETS = false>
struct ECIES< EC, HASH, COFACTOR_OPTION, DHAES_MODE, LABEL_OCTETS >

Elliptic Curve Integrated Encryption Scheme.

Template Parameters
COFACTOR_OPTIONcofactor multiplication option
HASHHashTransformation derived class used for key derivation and MAC computation
DHAES_MODEflag indicating if the MAC includes additional context parameters such as u·V, v·U and label
LABEL_OCTETSflag indicating if the label size is specified in octets or bits

ECIES is an Elliptic Curve based Integrated Encryption Scheme (IES). The scheme combines a Key Encapsulation Method (KEM) with a Data Encapsulation Method (DEM) and a MAC tag. The scheme is IND-CCA2, which is a strong notion of security. You should prefer an Integrated Encryption Scheme over homegrown schemes.

If you desire an Integrated Encryption Scheme with Crypto++ 4.2 compatibility, then use the ECIES_P1363. If you desire an Integrated Encryption Scheme compatible with Bouncy Castle 1.54 and Botan 1.11 compatibility, then use the ECIES template class with NoCofactorMultiplication, DHAES_MODE=true and LABEL_OCTETS=false.

The default template parameters ensure compatibility with Bouncy Castle 1.54 and Botan 1.11. The combination of IncompatibleCofactorMultiplication and DHAES_MODE=true is recommended for best efficiency and security. SHA1 is used for compatibility reasons, but it can be changed if desired.

See also
DLIES, ECIES_P1363, Elliptic Curve Integrated Encryption Scheme (ECIES), Martínez, Encinas, and Ávila's A Survey of the Elliptic Curve Integrated Encryption Schemes
Since
Crypto++ 4.0, Crypto++ 5.7 for Bouncy Castle and Botan compatibility

Definition at line 608 of file eccrypto.h.

Member Function Documentation

◆ StaticAlgorithmName()

template<class EC , class HASH = SHA1, class COFACTOR_OPTION = NoCofactorMultiplication, bool DHAES_MODE = true, bool LABEL_OCTETS = false>
static const char * ECIES< EC, HASH, COFACTOR_OPTION, DHAES_MODE, LABEL_OCTETS >::StaticAlgorithmName ( )
inlinestatic

Definition at line 617 of file eccrypto.h.


The documentation for this struct was generated from the following file: