27 #ifndef __PRIMEEC_EG_HEADER__ 28 #define __PRIMEEC_EG_HEADER__ 30 #include "../cap/capdecl.h" 32 #ifdef __ENABLE_MOCANA_CRYPTO_INTERFACE__ 33 #include "../crypto_interface/crypto_interface_ecc_eg_priv.h" 36 #include "../common/mocana.h" 37 #include "../crypto/hw_accel.h" 38 #include "../common/random.h" 40 #ifdef __ENABLE_MOCANA_VLONG_ECC_CONVERSION__ 41 #include "../common/vlong.h" 43 #include "../crypto/primefld.h" 44 #include "../crypto/primefld_priv.h" 45 #include "../crypto/primeec.h" 46 #include "../crypto/primeec_priv.h" 52 #define MOCANA_ECEG_ENCRYPT 0 53 #define MOCANA_ECEG_DECRYPT 1 55 #define MOCANA_ECEG_CTR_LEN 4 57 typedef struct ECEG_CTX
63 ubyte4 outputBlockLen;
64 byteBoolean isEncrypt;
67 byteBoolean isInitialized;
92 MOC_EXTERN MSTATUS
ECEG_init(MOC_ECC(hwAccelDescr hwAccelCtx) ECEG_CTX *pCtx, ECCKey *pKey, ubyte direction,
RNGFun rngFun,
void *pRngArg,
void *pExtCtx);
126 MOC_EXTERN MSTATUS
ECEG_update(MOC_ECC(hwAccelDescr hwAccelCtx) ECEG_CTX *pCtx, ubyte *pInputData, ubyte4 inputDataLen, ubyte *pOutputData, ubyte4 outputDataBufferLen, ubyte4 *pBytesWritten,
void *pExtCtx);
144 MOC_EXTERN MSTATUS
ECEG_final(MOC_ECC(hwAccelDescr hwAccelCtx) ECEG_CTX *pCtx,
void *pExtCtx);
177 MOC_EXTERN MSTATUS
ECEG_encrypt(MOC_ECC(hwAccelDescr hwAccelCtx) ECCKey *pPublicKey,
RNGFun rngFun,
void *pRngArg, ubyte *pPlaintext, ubyte4 plaintextLen, ubyte **ppCiphertext, ubyte4 *pCiphertextLen,
void *pExtCtx);
215 MOC_EXTERN MSTATUS
ECEG_decrypt(MOC_ECC(hwAccelDescr hwAccelCtx) ECCKey *pPrivateKey, ubyte *pCiphertext, ubyte4 ciphertextLen, ubyte **ppPlaintext, ubyte4 *pPlaintextLen,
void *pExtCtx);
253 MOC_EXTERN MSTATUS
ECEG_encryptPKCSv1p5(MOC_ECC(hwAccelDescr hwAccelCtx) ECCKey *pPublicKey,
RNGFun rngFun,
void *pRngArg, ubyte *pPlaintext, ubyte4 plaintextLen, ubyte *pCiphertext,
void *pExtCtx);
289 MOC_EXTERN MSTATUS
ECEG_decryptPKCSv1p5(MOC_ECC(hwAccelDescr hwAccelCtx) ECCKey *pPrivateKey, ubyte *pCiphertext, ubyte4 ciphertextLen, ubyte *pPlaintext,
void *pExtCtx);
MOC_EXTERN MSTATUS ECEG_update(MOC_ECC(hwAccelDescr hwAccelCtx) ECEG_CTX *pCtx, ubyte *pInputData, ubyte4 inputDataLen, ubyte *pOutputData, ubyte4 outputDataBufferLen, ubyte4 *pBytesWritten, void *pExtCtx)
Updates an ECEG_CTX context with data to be encrypted or decrypted.
MOC_EXTERN MSTATUS ECEG_encrypt(MOC_ECC(hwAccelDescr hwAccelCtx) ECCKey *pPublicKey, RNGFun rngFun, void *pRngArg, ubyte *pPlaintext, ubyte4 plaintextLen, ubyte **ppCiphertext, ubyte4 *pCiphertextLen, void *pExtCtx)
A one-shot El-Gamal encryption API.
MOC_EXTERN MSTATUS ECEG_init(MOC_ECC(hwAccelDescr hwAccelCtx) ECEG_CTX *pCtx, ECCKey *pKey, ubyte direction, RNGFun rngFun, void *pRngArg, void *pExtCtx)
Initializes an ECEG_CTX context for encryption or decryption.
MOC_EXTERN MSTATUS ECEG_decryptPKCSv1p5(MOC_ECC(hwAccelDescr hwAccelCtx) ECCKey *pPrivateKey, ubyte *pCiphertext, ubyte4 ciphertextLen, ubyte *pPlaintext, void *pExtCtx)
Performs El-Gamal decryption and removal of PKCS v1.5 padding.
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 ECEG_final(MOC_ECC(hwAccelDescr hwAccelCtx) ECEG_CTX *pCtx, void *pExtCtx)
Finalizes an ECEG_CTX context.
MOC_EXTERN MSTATUS ECEG_encryptPKCSv1p5(MOC_ECC(hwAccelDescr hwAccelCtx) ECCKey *pPublicKey, RNGFun rngFun, void *pRngArg, ubyte *pPlaintext, ubyte4 plaintextLen, ubyte *pCiphertext, void *pExtCtx)
Performs El-Gamal encryption with PKCS v1.5 padding of a small plaintext message. ...
MOC_EXTERN MSTATUS ECEG_decrypt(MOC_ECC(hwAccelDescr hwAccelCtx) ECCKey *pPrivateKey, ubyte *pCiphertext, ubyte4 ciphertextLen, ubyte **ppPlaintext, ubyte4 *pPlaintextLen, void *pExtCtx)
A one-shot El-Gamal decryption API.