Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
GrayLib::cECPGroupDef Class Referenceabstract

#include <cECPGroupDef.h>

Inherited by GrayLib::cECPGroup_NONE, GrayLib::cECPGroup_brainpoolP256r1, GrayLib::cECPGroup_brainpoolP384r1, GrayLib::cECPGroup_brainpoolP512r1, GrayLib::cECPGroup_secp192k1, GrayLib::cECPGroup_secp192r1, GrayLib::cECPGroup_secp224k1, GrayLib::cECPGroup_secp224r1, GrayLib::cECPGroup_secp256k1, GrayLib::cECPGroup_secp256r1, GrayLib::cECPGroup_secp384r1, GrayLib::cECPGroup_secp521r1, and GrayLib::cECPGroup_x25519.

Public Member Functions

 cECPGroupDef (ECPGroup_TYPE eECPGroupId=ECPGroup_NONE, const char *pszName="") noexcept
 
ECPGroup_TYPE get_HashCode () const noexcept
 
virtual HRESULT ModP (OUT cBigInteger &N) const
 
virtual void InjectParams (cECPGroupParams &g) const =0
 
 UNITTEST_FRIEND (cECPGroupDef)
 

Public Attributes

ECPGroup_TYPE m_eECPGroupId
 cECPGroupMgr TLS predefined NamedCurve identifier from TLS_EXT_supported_groups More...
 
const char * m_pszName
 Human-friendly name. More...
 

Static Protected Member Functions

static HRESULT GRAYCALL Mod_koblitz (cBigInteger &N, const cBigUnsigned::BLOCK_t *Rp, cBigUnsigned::BLOCK_ENUM_t nBlocksN, cBigUnsigned::BLOCK_ENUM_t nBlocksAdj, BIT_ENUM_t iBitsShift, cBigUnsigned::BLOCK_t mask)
 

Detailed Description

Predefined Curve information and optimized mod functions for use with cECPGroup. abstract base for ECPGroup_TYPE

Constructor & Destructor Documentation

◆ cECPGroupDef()

GrayLib::cECPGroupDef::cECPGroupDef ( ECPGroup_TYPE  eECPGroupId = ECPGroup_NONE,
const char *  pszName = "" 
)
inlinenoexcept

Member Function Documentation

◆ get_HashCode()

ECPGroup_TYPE GrayLib::cECPGroupDef::get_HashCode ( ) const
inlinenoexcept

◆ InjectParams()

virtual void GrayLib::cECPGroupDef::InjectParams ( cECPGroupParams g) const
pure virtual

◆ Mod_koblitz()

HRESULT GRAYCALL GrayLib::cECPGroupDef::Mod_koblitz ( cBigInteger N,
const cBigUnsigned::BLOCK_t Rp,
cBigUnsigned::BLOCK_ENUM_t  nBlocksN,
cBigUnsigned::BLOCK_ENUM_t  nBlocksAdj,
BIT_ENUM_t  iBitsShift,
cBigUnsigned::BLOCK_t  mask 
)
staticprotected

Fast quasi-reduction modulo P = 2^s - R, with R about 33 bits, used by the Koblitz curves. Write N as A0 + 2^224 A1, return A0 + R* A1. Actually do two passes, since R is big.

◆ ModP()

virtual HRESULT GrayLib::cECPGroupDef::ModP ( OUT cBigInteger N) const
inlinevirtual

optimized function for fast reduction mod P. e.g. Mod_x25519. replaces N.InitModulusU(N, this->m_P); P is hard coded/assumed/known.

◆ UNITTEST_FRIEND()

GrayLib::cECPGroupDef::UNITTEST_FRIEND ( cECPGroupDef  )

Member Data Documentation

◆ m_eECPGroupId

ECPGroup_TYPE GrayLib::cECPGroupDef::m_eECPGroupId

cECPGroupMgr TLS predefined NamedCurve identifier from TLS_EXT_supported_groups

◆ m_pszName

const char* GrayLib::cECPGroupDef::m_pszName

Human-friendly name.


The documentation for this class was generated from the following files: