ReactOS 0.4.17-dev-1005-g171e1de
ec_dispatch.c File Reference
#include "precomp.h"
Include dependency graph for ec_dispatch.c:

Go to the source code of this file.

Macros

#define SYMCRYPT_ECURVE_DISPATCH_TABLE_SIZE   (sizeof( SymCryptEcurveDispatchTable ))
 
#define SYMCRYPT_ECURVE_DISPATCH_TABLE_MASK   ((SYMCRYPT_ECURVE_DISPATCH_TABLE_SIZE / SYMCRYPT_ECURVE_FUNCTIONS_SIZE)-1)
 
#define SYMCRYPT_ECURVE_CALL(v)   (SymCryptEcurveDispatchTable[SYMCRYPT_FORCE_READ32(&(v)->type) & SYMCRYPT_ECURVE_DISPATCH_TABLE_MASK]).
 

Functions

 C_ASSERT ((SYMCRYPT_ECURVE_DISPATCH_TABLE_SIZE &(SYMCRYPT_ECURVE_DISPATCH_TABLE_SIZE - 1))==0)
 
 C_ASSERT (sizeof(((PCSYMCRYPT_ECURVE) 0) ->type)==4)
 
SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptEcpointSetZero (_In_ PCSYMCRYPT_ECURVE pCurve, _Out_ PSYMCRYPT_ECPOINT poDst, _Out_writes_bytes_opt_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
 
SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptEcpointSetDistinguishedPoint (_In_ PCSYMCRYPT_ECURVE pCurve, _Out_ PSYMCRYPT_ECPOINT poDst, _Out_writes_bytes_opt_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
 
SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptEcpointSetRandom (_In_ PCSYMCRYPT_ECURVE pCurve, _Out_ PSYMCRYPT_INT piScalar, _Out_ PSYMCRYPT_ECPOINT poDst, _Out_writes_bytes_opt_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
 
SYMCRYPT_DISABLE_CFG UINT32 SYMCRYPT_CALL SymCryptEcpointIsEqual (_In_ PCSYMCRYPT_ECURVE pCurve, _In_ PCSYMCRYPT_ECPOINT poSrc1, _In_ PCSYMCRYPT_ECPOINT poSrc2, UINT32 flags, _Out_writes_bytes_opt_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
 
SYMCRYPT_DISABLE_CFG UINT32 SYMCRYPT_CALL SymCryptEcpointIsZero (_In_ PCSYMCRYPT_ECURVE pCurve, _In_ PCSYMCRYPT_ECPOINT poSrc, _Out_writes_bytes_opt_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
 
SYMCRYPT_DISABLE_CFG UINT32 SYMCRYPT_CALL SymCryptEcpointOnCurve (_In_ PCSYMCRYPT_ECURVE pCurve, _In_ PCSYMCRYPT_ECPOINT poSrc, _Out_writes_bytes_opt_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
 
SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptEcpointAdd (_In_ PCSYMCRYPT_ECURVE pCurve, _In_ PCSYMCRYPT_ECPOINT poSrc1, _In_ PCSYMCRYPT_ECPOINT poSrc2, _Out_ PSYMCRYPT_ECPOINT poDst, UINT32 flags, _Out_writes_bytes_opt_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
 
SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptEcpointAddDiffNonZero (_In_ PCSYMCRYPT_ECURVE pCurve, _In_ PCSYMCRYPT_ECPOINT poSrc1, _In_ PCSYMCRYPT_ECPOINT poSrc2, _Out_ PSYMCRYPT_ECPOINT poDst, _Out_writes_bytes_opt_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
 
SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptEcpointDouble (_In_ PCSYMCRYPT_ECURVE pCurve, _In_ PCSYMCRYPT_ECPOINT poSrc, _Out_ PSYMCRYPT_ECPOINT poDst, UINT32 flags, _Out_writes_bytes_opt_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
 
SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptEcpointNegate (_In_ PCSYMCRYPT_ECURVE pCurve, _Inout_ PSYMCRYPT_ECPOINT poSrc, UINT32 mask, _Out_writes_bytes_opt_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
 
SYMCRYPT_DISABLE_CFG SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptEcpointScalarMul (_In_ PCSYMCRYPT_ECURVE pCurve, _In_ PCSYMCRYPT_INT piScalar, _In_opt_ PCSYMCRYPT_ECPOINT poSrc, UINT32 flags, _Out_ PSYMCRYPT_ECPOINT poDst, _Out_writes_bytes_opt_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
 
SYMCRYPT_DISABLE_CFG SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptEcpointMultiScalarMul (_In_ PCSYMCRYPT_ECURVE pCurve, _In_ PCSYMCRYPT_INT *piSrcScalarArray, _In_ PCSYMCRYPT_ECPOINT *poSrcEcpointArray, UINT32 nPoints, UINT32 flags, _Out_ PSYMCRYPT_ECPOINT poDst, _Out_writes_bytes_opt_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
 
SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptEcurveFillScratchSpaces (_Inout_ PSYMCRYPT_ECURVE pCurve)
 

Variables

const SYMCRYPT_ECURVE_FUNCTIONS SymCryptEcurveDispatchTable []
 

Macro Definition Documentation

◆ SYMCRYPT_ECURVE_CALL

Definition at line 112 of file ec_dispatch.c.

◆ SYMCRYPT_ECURVE_DISPATCH_TABLE_MASK

#define SYMCRYPT_ECURVE_DISPATCH_TABLE_MASK   ((SYMCRYPT_ECURVE_DISPATCH_TABLE_SIZE / SYMCRYPT_ECURVE_FUNCTIONS_SIZE)-1)

Definition at line 108 of file ec_dispatch.c.

◆ SYMCRYPT_ECURVE_DISPATCH_TABLE_SIZE

#define SYMCRYPT_ECURVE_DISPATCH_TABLE_SIZE   (sizeof( SymCryptEcurveDispatchTable ))

Definition at line 99 of file ec_dispatch.c.

Function Documentation

◆ C_ASSERT() [1/2]

◆ C_ASSERT() [2/2]

C_ASSERT ( sizeof(((PCSYMCRYPT_ECURVE) 0) ->type)  = =4)

◆ SymCryptEcpointAdd()

SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptEcpointAdd ( _In_ PCSYMCRYPT_ECURVE  pCurve,
_In_ PCSYMCRYPT_ECPOINT  poSrc1,
_In_ PCSYMCRYPT_ECPOINT  poSrc2,
_Out_ PSYMCRYPT_ECPOINT  poDst,
UINT32  flags,
_Out_writes_bytes_opt_(cbScratch) PBYTE  pbScratch,
SIZE_T  cbScratch 
)

Definition at line 202 of file ec_dispatch.c.

211{
212 SYMCRYPT_ECURVE_CALL( pCurve ) addFunc( pCurve, poSrc1, poSrc2, poDst, flags, pbScratch, cbScratch );
213}
#define SYMCRYPT_ECURVE_CALL(v)
Definition: ec_dispatch.c:112
GLbitfield flags
Definition: glext.h:7161
UINT32 UINT32 UINT32 UINT32 cbScratch
PCSYMCRYPT_ECURVE pCurve

Referenced by SymCrypt802_11SaeCustomCommitProcessGeneric(), SymCrypt802_11SaeCustomCreatePTGeneric(), SymCryptEcpointMultiScalarMulWnafWithInterleaving(), and SymCryptEcpointScalarMulFixedWindow().

◆ SymCryptEcpointAddDiffNonZero()

SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptEcpointAddDiffNonZero ( _In_ PCSYMCRYPT_ECURVE  pCurve,
_In_ PCSYMCRYPT_ECPOINT  poSrc1,
_In_ PCSYMCRYPT_ECPOINT  poSrc2,
_Out_ PSYMCRYPT_ECPOINT  poDst,
_Out_writes_bytes_opt_(cbScratch) PBYTE  pbScratch,
SIZE_T  cbScratch 
)

Definition at line 218 of file ec_dispatch.c.

226{
227 SYMCRYPT_ECURVE_CALL( pCurve ) addDiffFunc( pCurve, poSrc1, poSrc2, poDst, pbScratch, cbScratch );
228}

Referenced by SymCryptEcpointScalarMulFixedWindow(), and SymCryptPrecomputation().

◆ SymCryptEcpointDouble()

◆ SymCryptEcpointIsEqual()

SYMCRYPT_DISABLE_CFG UINT32 SYMCRYPT_CALL SymCryptEcpointIsEqual ( _In_ PCSYMCRYPT_ECURVE  pCurve,
_In_ PCSYMCRYPT_ECPOINT  poSrc1,
_In_ PCSYMCRYPT_ECPOINT  poSrc2,
UINT32  flags,
_Out_writes_bytes_opt_(cbScratch) PBYTE  pbScratch,
SIZE_T  cbScratch 
)

Definition at line 161 of file ec_dispatch.c.

169{
170 return SYMCRYPT_ECURVE_CALL( pCurve ) isEqualFunc( pCurve, poSrc1, poSrc2, flags, pbScratch, cbScratch );
171}

Referenced by SymCryptEckeySetRandom(), and SymCryptEckeySetValue().

◆ SymCryptEcpointIsZero()

◆ SymCryptEcpointMultiScalarMul()

SYMCRYPT_DISABLE_CFG SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptEcpointMultiScalarMul ( _In_ PCSYMCRYPT_ECURVE  pCurve,
_In_ PCSYMCRYPT_INT *  piSrcScalarArray,
_In_ PCSYMCRYPT_ECPOINT *  poSrcEcpointArray,
UINT32  nPoints,
UINT32  flags,
_Out_ PSYMCRYPT_ECPOINT  poDst,
_Out_writes_bytes_opt_(cbScratch) PBYTE  pbScratch,
SIZE_T  cbScratch 
)

Definition at line 279 of file ec_dispatch.c.

289{
290 return SYMCRYPT_ECURVE_CALL( pCurve ) multiScalarMulFunc( pCurve, piSrcScalarArray, poSrcEcpointArray, nPoints, flags, poDst, pbScratch, cbScratch );
291}

Referenced by SymCryptEcDsaVerify().

◆ SymCryptEcpointNegate()

SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptEcpointNegate ( _In_ PCSYMCRYPT_ECURVE  pCurve,
_Inout_ PSYMCRYPT_ECPOINT  poSrc,
UINT32  mask,
_Out_writes_bytes_opt_(cbScratch) PBYTE  pbScratch,
SIZE_T  cbScratch 
)

Definition at line 248 of file ec_dispatch.c.

255{
256 SYMCRYPT_ECURVE_CALL( pCurve ) negateFunc( pCurve, poSrc, mask, pbScratch, cbScratch );
257}
GLenum GLint GLuint mask
Definition: glext.h:6028

Referenced by SymCrypt802_11SaeCustomCommitCreateGeneric(), SymCryptEcpointMultiScalarMulWnafWithInterleaving(), and SymCryptEcpointScalarMulFixedWindow().

◆ SymCryptEcpointOnCurve()

SYMCRYPT_DISABLE_CFG UINT32 SYMCRYPT_CALL SymCryptEcpointOnCurve ( _In_ PCSYMCRYPT_ECURVE  pCurve,
_In_ PCSYMCRYPT_ECPOINT  poSrc,
_Out_writes_bytes_opt_(cbScratch) PBYTE  pbScratch,
SIZE_T  cbScratch 
)

Definition at line 189 of file ec_dispatch.c.

195{
196 return SYMCRYPT_ECURVE_CALL( pCurve ) onCurveFunc( pCurve, poSrc, pbScratch, cbScratch );
197}

Referenced by SymCrypt802_11SaeCustomCommitProcessGeneric(), and SymCryptEckeyPerformPublicKeyValidation().

◆ SymCryptEcpointScalarMul()

◆ SymCryptEcpointSetDistinguishedPoint()

SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptEcpointSetDistinguishedPoint ( _In_ PCSYMCRYPT_ECURVE  pCurve,
_Out_ PSYMCRYPT_ECPOINT  poDst,
_Out_writes_bytes_opt_(cbScratch) PBYTE  pbScratch,
SIZE_T  cbScratch 
)

Definition at line 134 of file ec_dispatch.c.

140{
141 SYMCRYPT_ECURVE_CALL( pCurve ) setDistinguishedFunc( pCurve, poDst, pbScratch, cbScratch );
142}

◆ SymCryptEcpointSetRandom()

SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptEcpointSetRandom ( _In_ PCSYMCRYPT_ECURVE  pCurve,
_Out_ PSYMCRYPT_INT  piScalar,
_Out_ PSYMCRYPT_ECPOINT  poDst,
_Out_writes_bytes_opt_(cbScratch) PBYTE  pbScratch,
SIZE_T  cbScratch 
)

Definition at line 147 of file ec_dispatch.c.

154{
155 SYMCRYPT_ECURVE_CALL( pCurve ) setRandomFunc( pCurve, piScalar, poDst, pbScratch, cbScratch );
156}

Referenced by SymCryptEcDsaSignEx().

◆ SymCryptEcpointSetZero()

SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptEcpointSetZero ( _In_ PCSYMCRYPT_ECURVE  pCurve,
_Out_ PSYMCRYPT_ECPOINT  poDst,
_Out_writes_bytes_opt_(cbScratch) PBYTE  pbScratch,
SIZE_T  cbScratch 
)

Definition at line 121 of file ec_dispatch.c.

127{
128 SYMCRYPT_ECURVE_CALL( pCurve ) setZeroFunc( pCurve, poDst, pbScratch, cbScratch );
129}

Referenced by SymCryptEcpointMultiScalarMulWnafWithInterleaving(), and SymCryptEcpointScalarMulFixedWindow().

◆ SymCryptEcurveFillScratchSpaces()

SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptEcurveFillScratchSpaces ( _Inout_ PSYMCRYPT_ECURVE  pCurve)

Definition at line 296 of file ec_dispatch.c.

298{
299 SYMCRYPT_ECURVE_CALL( pCurve ) fillScratchSpacesFunc( pCurve );
300}

Referenced by SymCryptEcurveInitialize().

Variable Documentation

◆ SymCryptEcurveDispatchTable

const SYMCRYPT_ECURVE_FUNCTIONS SymCryptEcurveDispatchTable[]

Definition at line 11 of file ec_dispatch.c.