![]() |
Gray C++ Libraries
0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
|
#include <cKeyExECDH.h>
Public Member Functions | |
cKeyExECDH () noexcept | |
~cKeyExECDH () | |
virtual HRESULT | MakeKeyExParams (BYTE *pOut, size_t nSizeOut, IRandomNoise *pRandom) override |
virtual HRESULT | ReadKeyEx (const BYTE *pBuffer, const BYTE *end) override |
HRESULT | GetECDHParams (const cKeyBase *pKey, bool bThierSide) |
HRESULT | MakeKeyPublic (BYTE *pBuffer, size_t nSizeBuffer, IRandomNoise *pRandom) |
virtual HRESULT | ReadKeyPublic (const BYTE *pBuffer, size_t nSizeBuffer) override |
HRESULT | MakeKeyExSecret (BYTE *pBuffer, size_t nSizeBuffer, IRandomNoise *pRandom) |
UNITTEST_FRIEND (cKeyExECDH) | |
![]() | |
virtual | ~cKeyExBase () |
Public Attributes | |
cECPGroup | m_grp |
elliptic curve used More... | |
cECPPoint | m_Q |
our public value (public key) More... | |
cECPPoint | m_Qp |
peer's public value (public key) More... | |
cBigInteger | m_z |
shared secret More... | |
bool | m_bCompressed |
format for point export in TLS messages. TLS_ECP_PF_COMPRESSED More... | |
cECPPoint | m_Vi |
blinding value (for later) More... | |
cECPPoint | m_Vf |
un-blinding value (for later) More... | |
![]() | |
cBigUnsigned | m_X |
secret value (private key) More... | |
Static Public Attributes | |
static const BYTE | k_ECP_TLS_NAMED_CURVE = 3 |
id for ECCurveType's named_curve from RFC 4492 More... | |
Key exchange ECDH (ECP) isECDH() = SSL_KeyExchange_ECDHE_RSA, SSL_KeyExchange_ECDH_RSA, SSL_KeyExchange_ECDH_ECDSA, SSL_KeyExchange_ECDHE_PSK
|
inlinenoexcept |
|
inline |
Setup an ECDH context from an EC key. (Used by clients and servers in place of the ServerKeyEchange for static ECDH: import ECDH parameters from a certificate's EC key information.)
Get parameters from a keypair
|
overridevirtual |
Generate a public key and a TLS ServerKeyExchange payload. (First function used by a TLS server for ECDHE.)
Write the ECParameters record corresponding to a group (RFC 4492)
Implements GrayLib::cKeyExBase.
HRESULT GrayLib::cKeyExECDH::MakeKeyExSecret | ( | BYTE * | pBuffer, |
size_t | nSizeBuffer, | ||
IRandomNoise * | pRandom | ||
) |
Derive and export the shared secret. (Last function used by both TLS client en servers.)
Premaster secret Derive and export the shared secret
HRESULT GrayLib::cKeyExECDH::MakeKeyPublic | ( | BYTE * | pBuffer, |
size_t | nSizeBuffer, | ||
IRandomNoise * | pRandom | ||
) |
Generate a public key and a TLS ClientKeyExchange payload. (Second function used by a TLS client for ECDH(E).)
|
overridevirtual |
Parse and process a TLS ServerKeyExhange payload. (First function used by a TLS client for ECDHE.)
Set a group from a TLS ECParameters record. (RFC 4492) We expect at least three bytes (see below)
Implements GrayLib::cKeyExBase.
|
overridevirtual |
Parse and process a TLS ClientKeyExchange payload. (Second function used by a TLS server for ECDH(E).)
Parse and import the client's public value
Implements GrayLib::cKeyExBase.
GrayLib::cKeyExECDH::UNITTEST_FRIEND | ( | cKeyExECDH | ) |
|
static |
id for ECCurveType's named_curve from RFC 4492
bool GrayLib::cKeyExECDH::m_bCompressed |
format for point export in TLS messages. TLS_ECP_PF_COMPRESSED
cECPGroup GrayLib::cKeyExECDH::m_grp |
elliptic curve used
cECPPoint GrayLib::cKeyExECDH::m_Q |
our public value (public key)
cECPPoint GrayLib::cKeyExECDH::m_Qp |
peer's public value (public key)
cECPPoint GrayLib::cKeyExECDH::m_Vf |
un-blinding value (for later)
cECPPoint GrayLib::cKeyExECDH::m_Vi |
blinding value (for later)
cBigInteger GrayLib::cKeyExECDH::m_z |
shared secret