31 #ifndef __ECC_EDWARDS_HEADER__ 32 #define __ECC_EDWARDS_HEADER__ 34 #include "../crypto/primefld25519.h" 35 #include "../common/vlong.h" 36 #include "../crypto/primefld.h" 37 #include "../crypto/primefld_priv.h" 44 #define MOC_CURVE25519_BYTE_SIZE MOC_NUM_25519_BYTES 45 #define MOC_CURVE25519_ENCODING_SIZE MOC_CURVE25519_BYTE_SIZE 49 sbyte4 pX[MOC_NUM_25519_UNITS];
50 sbyte4 pY[MOC_NUM_25519_UNITS];
51 sbyte4 pZ[MOC_NUM_25519_UNITS];
52 sbyte4 pT[MOC_NUM_25519_UNITS];
88 MOC_EXTERN
void CURVE25519_addPoints(projPoint25519 *pResult,
const projPoint25519 *pP,
const projPoint25519 *pQ, sbyte4 *pTemps);
107 MOC_EXTERN MSTATUS
CURVE25519_multiplyPoint(MOC_ECC(hwAccelDescr hwAccelCtx) projPoint25519 *pResult,
const ubyte *pScalar,
const projPoint25519 *pP);
179 MOC_EXTERN MSTATUS
CURVE25519_X25519(MOC_ECC(hwAccelDescr hwAccelCtx) ubyte *pResult, ubyte *pScalar, ubyte *pU);
184 #define MOC_CURVE448_BYTE_SIZE 56 185 #define MOC_CURVE448_ENCODING_SIZE (MOC_CURVE448_BYTE_SIZE+1) 186 #define MOC_CURVE448_NUM_UNITS (MOC_CURVE448_BYTE_SIZE/sizeof(pf_unit)) 190 pf_unit pX[MOC_CURVE448_NUM_UNITS];
191 pf_unit pY[MOC_CURVE448_NUM_UNITS];
192 pf_unit pZ[MOC_CURVE448_NUM_UNITS];
228 MOC_EXTERN
void CURVE448_addPoints(projPoint448 *pResult,
const projPoint448 *pP,
const projPoint448 *pQ, pf_unit *pTemps);
247 MOC_EXTERN MSTATUS
CURVE448_multiplyPoint(MOC_ECC(hwAccelDescr hwAccelCtx) projPoint448 *pResult,
const ubyte *pScalar,
const projPoint448 *pP);
318 MOC_EXTERN MSTATUS
CURVE448_X448(MOC_ECC(hwAccelDescr hwAccelCtx) ubyte *pResult, ubyte *pScalar, ubyte *pU);
MOC_EXTERN MSTATUS CURVE448_multiplyPoint(MOC_ECC(hwAccelDescr hwAccelCtx) projPoint448 *pResult, const ubyte *pScalar, const projPoint448 *pP)
Performs a scalar point multiplication on curve448.
MOC_EXTERN void CURVE25519_addPoints(projPoint25519 *pResult, const projPoint25519 *pP, const projPoint25519 *pQ, sbyte4 *pTemps)
Adds two projective form points on curve25519.
MOC_EXTERN MSTATUS CURVE448_X448(MOC_ECC(hwAccelDescr hwAccelCtx) ubyte *pResult, ubyte *pScalar, ubyte *pU)
Scalar point multiplication for EDDH on curve448.
MOC_EXTERN MSTATUS CURVE448_createCombMutex(void)
Creates a mutex for thread safety for curve448 comb generation.
MOC_EXTERN void CURVE448_addPoints(projPoint448 *pResult, const projPoint448 *pP, const projPoint448 *pQ, pf_unit *pTemps)
Adds two projective form points on curve448.
MOC_EXTERN MSTATUS CURVE448_convertEncodedToProjective(projPoint448 *pResult, const ubyte *pEncodedInput)
Converts an encoded point on curve448 to a projective form.
MOC_EXTERN MSTATUS CURVE25519_convertEncodedToProjective(projPoint25519 *pResult, const ubyte *pEncodedInput)
Converts an encoded point on curve25519 to a projective form.
MOC_EXTERN MSTATUS CURVE25519_createCombMutex(void)
Creates a mutex for thread safety for curve25519 comb generation.
MOC_EXTERN MSTATUS CURVE448_convertProjectiveToEncoded(ubyte *pBuffer, const projPoint448 *pInput)
Converts a projective form point on curve448 to an encoded form point.
MOC_EXTERN MSTATUS CURVE25519_deleteCombAndMutex(void)
Zeroes and frees the persisted comb and mutex for curve25519.
MOC_EXTERN MSTATUS CURVE25519_convertProjectiveToEncoded(ubyte *pBuffer, const projPoint25519 *pInput)
Converts a projective form point on curve25519 to an encoded form point.
MOC_EXTERN MSTATUS CURVE25519_multiplyPoint(MOC_ECC(hwAccelDescr hwAccelCtx) projPoint25519 *pResult, const ubyte *pScalar, const projPoint25519 *pP)
Performs a scalar point multiplication on curve25519.
MOC_EXTERN MSTATUS CURVE25519_X25519(MOC_ECC(hwAccelDescr hwAccelCtx) ubyte *pResult, ubyte *pScalar, ubyte *pU)
Scalar point multiplication for EDDH on curve25519.
MOC_EXTERN MSTATUS CURVE448_deleteCombAndMutex(void)
Zeroes and frees the persisted comb and mutex for curve448.