TrustCore SDK NanoCrypto API reference  version 7.0
sha256.h
Go to the documentation of this file.
1 
12 /*------------------------------------------------------------------*/
13 
14 #ifndef __SHA256_HEADER__
15 #define __SHA256_HEADER__
16 
17 #include "../cap/capdecl.h"
18 
19 #ifdef __ENABLE_MOCANA_CRYPTO_INTERFACE__
20 #include "../crypto_interface/crypto_interface_sha224_priv.h"
21 #include "../crypto_interface/crypto_interface_sha256_priv.h"
22 #endif
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 #define SHA256_CTX MOC_SHA256_CTX
29 
31 #define SHA256_RESULT_SIZE (32)
32 #define SHA256_BLOCK_SIZE (64)
33 
35 #define SHA224_RESULT_SIZE (28)
36 #define SHA224_BLOCK_SIZE (64)
37 
38 /*------------------------------------------------------------------*/
39 
40 typedef struct SW_SHA256_CTX
41 {
42  MocSymCtx pMocSymCtx;
43  ubyte4 enabled;
44  ubyte4 hashId;
45 
46  ubyte4 hashBlocks[8];
47 
48  ubyte8 mesgLength;
49 
50  sbyte4 hashBufferIndex;
51  ubyte hashBuffer[SHA256_BLOCK_SIZE];
52 
53 #ifdef __ENABLE_MOCANA_MINIMUM_STACK__
54  ubyte4 W[64];
55 #endif
56 
57 } SW_SHA256_CTX, SHA224_CTX;
58 
59 #ifndef __CUSTOM_SHA256_CONTEXT__
60 typedef struct SW_SHA256_CTX sha256Descr, sha256DescrHS, SHA256_CTX;
61 #endif
62 
63 /*------------------------------------------------------------------*/
64 
65 /* single steps */
66 #ifndef __DISABLE_MOCANA_SHA256__
67 
118 MOC_EXTERN MSTATUS SHA256_allocDigest (MOC_HASH(hwAccelDescr hwAccelCtx) BulkCtx *pp_shaContext);
119 
164 MOC_EXTERN MSTATUS SHA256_freeDigest (MOC_HASH(hwAccelDescr hwAccelCtx) BulkCtx *pp_shaContext);
165 
216 MOC_EXTERN MSTATUS SHA256_initDigest (MOC_HASH(hwAccelDescr hwAccelCtx) sha256Descr *pCtx);
217 
266 MOC_EXTERN MSTATUS SHA256_updateDigest (MOC_HASH(hwAccelDescr hwAccelCtx) sha256Descr *pCtx, const ubyte *pData, ubyte4 dataLen);
267 
321 MOC_EXTERN MSTATUS SHA256_finalDigest (MOC_HASH(hwAccelDescr hwAccelCtx) sha256Descr *pCtx, ubyte *pOutput);
322 
381 MOC_EXTERN MSTATUS SHA256_completeDigest(MOC_HASH(hwAccelDescr hwAccelCtx) const ubyte *pData, ubyte4 dataLen, ubyte *pShaOutput);
382 
395 MOC_EXTERN MSTATUS SHA256_cloneCtx(MOC_HASH(hwAccelDescr hwAccelCtx) SHA256_CTX *pDest, SHA256_CTX *pSrc);
396 
397 #endif /* __DISABLE_MOCANA_SHA256__ */
398 
402 #ifdef __SHA256_HARDWARE_HASH__
403 MOC_EXTERN MSTATUS SHA256_initDigestHandShake (MOC_HASH(hwAccelDescr hwAccelCtx) sha256DescrHS *p_shaContext);
404 MOC_EXTERN MSTATUS SHA256_updateDigestHandShake (MOC_HASH(hwAccelDescr hwAccelCtx) sha256DescrHS *p_shaContext, const ubyte *pData, ubyte4 dataLen);
405 MOC_EXTERN MSTATUS SHA256_finalDigestHandShake (MOC_HASH(hwAccelDescr hwAccelCtx) sha256DescrHS *p_shaContext, ubyte *pShaOutput);
406 #else
407 #define SHA256_initDigestHandShake SHA256_initDigest
408 #define SHA256_updateDigestHandShake SHA256_updateDigest
409 #define SHA256_finalDigestHandShake SHA256_finalDigest
410 #endif /* __SHA256_HARDWARE_HASH__ */
411 
415 #ifndef __DISABLE_MOCANA_SHA224__
416 
463 MOC_EXTERN MSTATUS SHA224_allocDigest (MOC_HASH(hwAccelDescr hwAccelCtx) BulkCtx *pp_shaContext);
464 
516 MOC_EXTERN MSTATUS SHA224_freeDigest (MOC_HASH(hwAccelDescr hwAccelCtx) BulkCtx *pp_shaContext);
517 
566 MOC_EXTERN MSTATUS SHA224_updateDigest (MOC_HASH(hwAccelDescr hwAccelCtx) sha256Descr *pCtx, const ubyte *pData, ubyte4 dataLen);
567 
575 MOC_EXTERN MSTATUS SHA256_allocDigest (MOC_HASH(hwAccelDescr hwAccelCtx) BulkCtx *pp_shaContext);
576 MOC_EXTERN MSTATUS SHA256_freeDigest (MOC_HASH(hwAccelDescr hwAccelCtx) BulkCtx *pp_shaContext);
577 MOC_EXTERN MSTATUS SHA256_updateDigest (MOC_HASH(hwAccelDescr hwAccelCtx) SHA256_CTX *pCtx, const ubyte *pData, ubyte4 dataLen);
578 #define SHA224_allocDigest SHA256_allocDigest
579 #define SHA224_freeDigest SHA256_freeDigest
580 #define SHA224_updateDigest SHA256_updateDigest
581 
644 MOC_EXTERN MSTATUS SHA224_initDigest (MOC_HASH(hwAccelDescr hwAccelCtx) SHA224_CTX *pCtx);
645 
646 
701 MOC_EXTERN MSTATUS SHA224_finalDigest (MOC_HASH(hwAccelDescr hwAccelCtx) SHA224_CTX *pCtx, ubyte *pOutput);
702 
761 MOC_EXTERN MSTATUS SHA224_completeDigest(MOC_HASH(hwAccelDescr hwAccelCtx) const ubyte *pData, ubyte4 dataLen, ubyte *pShaOutput);
762 
775 MOC_EXTERN MSTATUS SHA224_cloneCtx(MOC_HASH(hwAccelDescr hwAccelCtx) SHA224_CTX *pDest, SHA224_CTX *pSrc);
776 
777 #endif /* ifndef __DISABLE_MOCANA_SHA224__ */
778 
779 #ifdef __cplusplus
780 }
781 #endif
782 
783 #endif /* __SHA256_HEADER__ */
MOC_EXTERN MSTATUS SHA224_updateDigest(MOC_HASH(hwAccelDescr hwAccelCtx) sha256Descr *pCtx, const ubyte *pData, ubyte4 dataLen)
Calculate and update intermediate SHA224 digest value.
MOC_EXTERN MSTATUS SHA224_initDigest(MOC_HASH(hwAccelDescr hwAccelCtx) SHA224_CTX *pCtx)
Initialize an SHA224 operation context data structure.
MOC_EXTERN MSTATUS SHA256_finalDigest(MOC_HASH(hwAccelDescr hwAccelCtx) sha256Descr *pCtx, ubyte *pOutput)
Calculate final SHA256 digest value.
MOC_EXTERN MSTATUS SHA256_initDigest(MOC_HASH(hwAccelDescr hwAccelCtx) sha256Descr *pCtx)
Initialize SHA256 operation context data structure.
MOC_EXTERN MSTATUS SHA256_allocDigest(MOC_HASH(hwAccelDescr hwAccelCtx) BulkCtx *pp_shaContext)
Allocate SHA256 operation context data structure.
MOC_EXTERN MSTATUS SHA256_cloneCtx(MOC_HASH(hwAccelDescr hwAccelCtx) SHA256_CTX *pDest, SHA256_CTX *pSrc)
Makes a clone of a previously allocated SHA256_CTX.
MOC_EXTERN MSTATUS SHA224_finalDigest(MOC_HASH(hwAccelDescr hwAccelCtx) SHA224_CTX *pCtx, ubyte *pOutput)
Calculate final SHA224 digest value.
MOC_EXTERN MSTATUS SHA256_updateDigest(MOC_HASH(hwAccelDescr hwAccelCtx) sha256Descr *pCtx, const ubyte *pData, ubyte4 dataLen)
Calculate and update intermediate SHA256 digest value.
MOC_EXTERN MSTATUS SHA256_freeDigest(MOC_HASH(hwAccelDescr hwAccelCtx) BulkCtx *pp_shaContext)
Free (delete) SHA256 operation context data structure.
MOC_EXTERN MSTATUS SHA256_completeDigest(MOC_HASH(hwAccelDescr hwAccelCtx) const ubyte *pData, ubyte4 dataLen, ubyte *pShaOutput)
Calculate single item's SHA256 digest value (with a single function call).
MOC_EXTERN MSTATUS SHA224_cloneCtx(MOC_HASH(hwAccelDescr hwAccelCtx) SHA224_CTX *pDest, SHA224_CTX *pSrc)
Makes a clone of a previously allocated SHA224_CTX.
MOC_EXTERN MSTATUS SHA224_freeDigest(MOC_HASH(hwAccelDescr hwAccelCtx) BulkCtx *pp_shaContext)
Free (delete) SHA224 operation context data structure.
MOC_EXTERN MSTATUS SHA224_allocDigest(MOC_HASH(hwAccelDescr hwAccelCtx) BulkCtx *pp_shaContext)
Allocate SHA224 operation context data structure.
MOC_EXTERN MSTATUS SHA224_completeDigest(MOC_HASH(hwAccelDescr hwAccelCtx) const ubyte *pData, ubyte4 dataLen, ubyte *pShaOutput)
Calculate single item's SHA224 digest value (with a single function call).