24 #ifndef __SHA3_HEADER__ 25 #define __SHA3_HEADER__ 27 #include "../cap/capdecl.h" 29 #ifdef __ENABLE_MOCANA_CRYPTO_INTERFACE__ 30 #include "../crypto_interface/crypto_interface_sha3_priv.h" 33 #include "../common/moptions.h" 34 #include "../common/mtypes.h" 35 #include "../common/mocana.h" 36 #include "../crypto/hw_accel.h" 37 #include "../crypto/crypto.h" 44 #define SHA3_512_RESULT_SIZE (64) 45 #define SHA3_512_BLOCK_SIZE (72) 48 #define SHA3_384_RESULT_SIZE (48) 49 #define SHA3_384_BLOCK_SIZE (104) 52 #define SHA3_256_RESULT_SIZE (32) 53 #define SHA3_256_BLOCK_SIZE (136) 56 #define SHA3_224_RESULT_SIZE (28) 57 #define SHA3_224_BLOCK_SIZE (144) 59 #define MOCANA_SHA3_MODE_SHA3_224 0 60 #define MOCANA_SHA3_MODE_SHA3_256 1 61 #define MOCANA_SHA3_MODE_SHA3_384 2 62 #define MOCANA_SHA3_MODE_SHA3_512 3 63 #define MOCANA_SHA3_MODE_SHAKE128 4 64 #define MOCANA_SHA3_MODE_SHAKE256 5 66 typedef struct SHA3_CTX
76 byteBoolean initialized;
93 MOC_EXTERN MSTATUS
SHA3_allocDigest(MOC_HASH(hwAccelDescr hwAccelCtx) BulkCtx *pSha3_ctx);
115 MOC_EXTERN MSTATUS
SHA3_initDigest(MOC_HASH(hwAccelDescr hwAccelCtx) SHA3_CTX *pSha3_ctx, ubyte4 mode);
132 MOC_EXTERN MSTATUS
SHA3_updateDigest(MOC_HASH(hwAccelDescr hwAccelCtx) SHA3_CTX *pSha3_ctx, ubyte *pMessage, ubyte4 messageLen);
151 MOC_EXTERN MSTATUS
SHA3_finalDigest(MOC_HASH(hwAccelDescr hwAccelCtx) SHA3_CTX *pSha3_ctx, ubyte *pResult, ubyte4 desiredResultLen);
165 MOC_EXTERN MSTATUS
SHA3_freeDigest(MOC_HASH(hwAccelDescr hwAccelCtx) BulkCtx *pSha3_ctx);
194 MOC_EXTERN MSTATUS
SHA3_completeDigest(MOC_HASH(hwAccelDescr hwAccelCtx) ubyte4 mode, ubyte *pMessage, ubyte4 messageLen, ubyte *pResult, ubyte4 desiredResultLen);
207 MOC_EXTERN MSTATUS
SHA3_cloneCtx(MOC_HASH(hwAccelDescr hwAccelCtx) SHA3_CTX *pDest, SHA3_CTX *pSrc);
MOC_EXTERN MSTATUS SHA3_finalDigest(MOC_HASH(hwAccelDescr hwAccelCtx) SHA3_CTX *pSha3_ctx, ubyte *pResult, ubyte4 desiredResultLen)
Finalizes a SHA3_CTX context and outputs the resulting output.
MOC_EXTERN MSTATUS SHA3_cloneCtx(MOC_HASH(hwAccelDescr hwAccelCtx) SHA3_CTX *pDest, SHA3_CTX *pSrc)
Makes a clone of a previously allocated SHA3_CTX.
MOC_EXTERN MSTATUS SHA3_freeDigest(MOC_HASH(hwAccelDescr hwAccelCtx) BulkCtx *pSha3_ctx)
Zeroes and frees the SHA3_CTX context data structure.
MOC_EXTERN MSTATUS SHA3_completeDigest(MOC_HASH(hwAccelDescr hwAccelCtx) ubyte4 mode, ubyte *pMessage, ubyte4 messageLen, ubyte *pResult, ubyte4 desiredResultLen)
A one-shot context free computation of a SHA3 hash or extenable output function.
MOC_EXTERN MSTATUS SHA3_initDigest(MOC_HASH(hwAccelDescr hwAccelCtx) SHA3_CTX *pSha3_ctx, ubyte4 mode)
Initialize the SHA3_CTX context data structure.
MOC_EXTERN MSTATUS SHA3_allocDigest(MOC_HASH(hwAccelDescr hwAccelCtx) BulkCtx *pSha3_ctx)
Allocates the SHA3_CTX context data structure.
MOC_EXTERN MSTATUS SHA3_updateDigest(MOC_HASH(hwAccelDescr hwAccelCtx) SHA3_CTX *pSha3_ctx, ubyte *pMessage, ubyte4 messageLen)
Updates a previously initialized SHA3_CTX context with data.