![]() |
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) | |
Public Member Functions inherited from GrayLib::cKeyExBase | |
| 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... | |
Public Attributes inherited from GrayLib::cKeyExBase | |
| 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