Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cKeyExECDH.h
Go to the documentation of this file.
1 //
4 //
5 #ifndef _INC_cKeyExECDH_H
6 #define _INC_cKeyExECDH_H
7 
8 #include "cKeyExBase.h"
9 #include "../Key/cKeyECPPair.h"
10 
11 namespace GrayLib
12 {
14 
16  {
20 
21  public:
23 
28 
31 
32  static const BYTE k_ECP_TLS_NAMED_CURVE = 3;
33 
34  private:
35  static HRESULT ComputeSharedKey(cECPGroup& grp, OUT cBigInteger& z, const cECPPoint& Q, const cBigUnsigned& d, IRandomNoise* pRandom);
36 
37  public:
38  cKeyExECDH() noexcept
39  : m_bCompressed(false)
40  {
41  }
43  {
44  }
45 
52  //
53  virtual HRESULT MakeKeyExParams(BYTE* pOut, size_t nSizeOut, IRandomNoise* pRandom) override;
54 
55  //
61  //
62  virtual HRESULT ReadKeyEx(const BYTE* pBuffer, const BYTE* end) override;
63 
64  //
72  //
73  HRESULT GetECDHParams(const cKeyBase* pKey, bool bThierSide);
74 
75  //
81  //
83  //
84  HRESULT MakeKeyPublic(BYTE* pBuffer, size_t nSizeBuffer, IRandomNoise* pRandom);
85 
86  //
92  //
93  virtual HRESULT ReadKeyPublic(const BYTE* pBuffer, size_t nSizeBuffer) override;
94 
95  //
101  //
103  //
104  HRESULT MakeKeyExSecret(BYTE* pBuffer, size_t nSizeBuffer, IRandomNoise* pRandom);
105 
107  };
108 }
109 
110 #endif // _INC_cKeyExECDH_H
111 
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
Definition: cBigInteger.h:18
Definition: cBigUnsigned.h:22
Definition: cECPGroup.h:34
Definition: cECPGroupParams.h:41
Definition: cKeyBase.h:56
Definition: cKeyExBase.h:15
Definition: cKeyExECDH.h:16
cBigInteger m_z
shared secret
Definition: cKeyExECDH.h:26
UNITTEST_FRIEND(cKeyExECDH)
cECPPoint m_Q
our public value (public key)
Definition: cKeyExECDH.h:24
cECPPoint m_Vi
blinding value (for later)
Definition: cKeyExECDH.h:29
cECPGroup m_grp
elliptic curve used
Definition: cKeyExECDH.h:22
~cKeyExECDH()
Definition: cKeyExECDH.h:42
cKeyExECDH() noexcept
Definition: cKeyExECDH.h:38
bool m_bCompressed
format for point export in TLS messages. TLS_ECP_PF_COMPRESSED
Definition: cKeyExECDH.h:27
cECPPoint m_Vf
un-blinding value (for later)
Definition: cKeyExECDH.h:30
cECPPoint m_Qp
peer's public value (public key)
Definition: cKeyExECDH.h:25
Definition: cMesh.h:22
UNITTEST2_PREDEF(cQuadtree)
Definition: cRandom.h:19