31 #ifndef __ECC_EDWARDS_KEYS_HEADER__ 32 #define __ECC_EDWARDS_KEYS_HEADER__ 35 #define MOC_EDDSA_SHA512_LEN 64 36 #define MOC_EDDSA_SHAKE256_LEN 114 38 #include "../crypto/crypto.h" 39 #include "../common/random.h" 61 typedef struct edECCKey
100 MOC_EXTERN MSTATUS
edECC_getKeyLen(edECCKey *pKey, ubyte4 *pKeyLen,
void *pExtCtx);
117 MOC_EXTERN MSTATUS
edECC_equalKey(edECCKey *pKey1, edECCKey *pKey2, byteBoolean *pMatch,
void *pExtCtx);
133 MOC_EXTERN MSTATUS
edECC_cloneKey(edECCKey **ppNew, edECCKey *pSrc,
void *pExtCtx);
176 MOC_EXTERN MSTATUS
edECC_setKeyParameters(MOC_ECC(hwAccelDescr hwAccelCtx) edECCKey *pKey, ubyte *pPubKey, ubyte4 pubKeyLen, ubyte *pPrivKey, ubyte4 privKeyLen,
BulkHashAlgo *pShaSuite,
void *pExtCtx);
198 MOC_EXTERN MSTATUS
edECC_getKeyParametersAlloc(MOC_ECC(hwAccelDescr hwAccelCtx) edECCKey *pKey, ubyte **ppPubKey, ubyte4 *pPubLen, ubyte **ppPrivKey, ubyte4 *pPrivLen,
void *pExtCtx);
234 MOC_EXTERN MSTATUS
edECC_getPublicKey(MOC_ECC(hwAccelDescr hwAccelCtx) edECCKey *pKey, ubyte *pOutBuffer, ubyte4 bufferLen,
void *pExtCtx);
MOC_EXTERN MSTATUS edECC_equalKey(edECCKey *pKey1, edECCKey *pKey2, byteBoolean *pMatch, void *pExtCtx)
Tests if two Edward's form keys have identical public keys.
Structure to hold function pointers to hashing or extenable output methods.
Definition: crypto.h:133
MOC_EXTERN MSTATUS edECC_cloneKey(edECCKey **ppNew, edECCKey *pSrc, void *pExtCtx)
Allocates and clones an Edward's form key.
MOC_EXTERN MSTATUS edECC_getPublicKey(MOC_ECC(hwAccelDescr hwAccelCtx) edECCKey *pKey, ubyte *pOutBuffer, ubyte4 bufferLen, void *pExtCtx)
Gets the public key from an Edward's form key.
MOC_EXTERN MSTATUS edECC_deleteKey(edECCKey **ppKey, void *pExtCtx)
Deletes an Edward's form key.
MOC_EXTERN MSTATUS edECC_setKeyParameters(MOC_ECC(hwAccelDescr hwAccelCtx) edECCKey *pKey, ubyte *pPubKey, ubyte4 pubKeyLen, ubyte *pPrivKey, ubyte4 privKeyLen, BulkHashAlgo *pShaSuite, void *pExtCtx)
Sets the key parameters in an Edward's form key.
edECCCurve
Identifiers for the Edward's form curves and algorithms.
Definition: ecc_edwards_keys.h:52
sbyte4(* RNGFun)(void *rngFunArg, ubyte4 length, ubyte *buffer)
Function pointer type for a method that produces (pseudo) random bytes.
Definition: random.h:98
MOC_EXTERN MSTATUS edECC_newKey(edECCKey **ppKey, edECCCurve curve, void *pExtCtx)
Creates a new Edward's curve form key.
MOC_EXTERN MSTATUS edECC_calculatePubFromPriv(MOC_ECC(hwAccelDescr hwAccelCtx) ubyte *pPub, ubyte *pPriv, edECCCurve curve, BulkHashAlgo *pShaSuite, byteBoolean isShaEvp)
Gets the raw public key from a raw private key.
MOC_EXTERN MSTATUS edECC_generateKeyPair(MOC_ECC(hwAccelDescr hwAccelCtx) edECCKey *pKey, RNGFun rngFun, void *pRngArg, BulkHashAlgo *pShaSuite, void *pExtCtx)
Generates a new Edward's form private key pair.
MOC_EXTERN MSTATUS edECC_validateKey(MOC_ECC(hwAccelDescr hwAccelCtx) edECCKey *pKey, BulkHashAlgo *pShaSuite, void *pExtCtx)
Validates an Edward's form key.
MOC_EXTERN MSTATUS edECC_getKeyLen(edECCKey *pKey, ubyte4 *pKeyLen, void *pExtCtx)
Gets the key length associated with the given key.
MOC_EXTERN MSTATUS edECC_getKeyParametersAlloc(MOC_ECC(hwAccelDescr hwAccelCtx) edECCKey *pKey, ubyte **ppPubKey, ubyte4 *pPubLen, ubyte **ppPrivKey, ubyte4 *pPrivLen, void *pExtCtx)
Gets the key parameters in an Edward's form key.