22 #ifndef __GCM_HEADER__ 23 #define __GCM_HEADER__ 25 #include "../cap/capdecl.h" 27 #if defined(__ENABLE_MOCANA_CRYPTO_INTERFACE__) 28 #include "../crypto_interface/crypto_interface_aes_gcm_priv.h" 31 #if defined(__ENABLE_MOCANA_GCM__) 32 #if !defined(__ENABLE_MOCANA_GCM_64K__) && !defined(__ENABLE_MOCANA_GCM_4K__) && !defined(__ENABLE_MOCANA_GCM_256B__) 33 #define __ENABLE_MOCANA_GCM_256B__ 37 #if defined(__ENABLE_MOCANA_GCM_64K__) || defined(__ENABLE_MOCANA_GCM_4K__) || defined(__ENABLE_MOCANA_GCM_256B__) 39 #ifndef __ENABLE_MOCANA_GCM__ 40 #define __ENABLE_MOCANA_GCM__ 47 #ifdef __ENABLE_MOCANA_GCM_64K__ 51 #define GCM_I_LIMIT (16) 52 #define GCM_J_LIMIT (0x100) 54 typedef struct gcm_ctx_64k {
55 ubyte4 table[GCM_I_LIMIT][GCM_J_LIMIT][4];
58 sbyte4 hashBufferIndex;
59 ubyte hashBuffer[AES_BLOCK_SIZE];
120 MOC_EXTERN BulkCtx
GCM_createCtx_64k(MOC_SYM(hwAccelDescr hwAccelCtx) ubyte* key, sbyte4 keylen, sbyte4 encrypt);
148 MOC_EXTERN MSTATUS
GCM_update_nonce_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pNonce, ubyte4 nonceLen);
176 MOC_EXTERN MSTATUS
GCM_update_aad_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pAadData, ubyte4 aadDataLen);
207 MOC_EXTERN MSTATUS
GCM_update_data_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pData, ubyte4 dataLen);
239 MOC_EXTERN MSTATUS
GCM_final_ex_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pTag, ubyte4 tagLen);
276 MOC_EXTERN MSTATUS
GCM_deleteCtx_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx *ctx);
316 MOC_EXTERN MSTATUS
GCM_init_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx,
317 ubyte* nonce, ubyte4 nlen,
318 ubyte* adata, ubyte4 alen);
360 MOC_EXTERN MSTATUS
GCM_update_encrypt_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte *data, ubyte4 dlen);
402 MOC_EXTERN MSTATUS
GCM_update_decrypt_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte *ct, ubyte4 ctlen);
439 MOC_EXTERN MSTATUS
GCM_final_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte tag[]);
486 MOC_EXTERN MSTATUS
GCM_cipher_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx,
487 ubyte* nonce, ubyte4 nlen,
488 ubyte* adata, ubyte4 alen,
489 ubyte* data, ubyte4 dlen, ubyte4 verifyLen, sbyte4 encrypt);
502 MOC_EXTERN MSTATUS
GCM_clone_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, BulkCtx *ppNewCtx);
505 #ifdef __ENABLE_MOCANA_GCM_4K__ 508 typedef struct gcm_ctx_4k {
509 ubyte4 table[256][4];
512 sbyte4 hashBufferIndex;
513 ubyte hashBuffer[AES_BLOCK_SIZE];
520 MocSymCtx pMocSymCtx;
574 MOC_EXTERN BulkCtx
GCM_createCtx_4k(MOC_SYM(hwAccelDescr hwAccelCtx) ubyte* key, sbyte4 keylen, sbyte4 encrypt);
602 MOC_EXTERN MSTATUS
GCM_update_nonce_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pNonce, ubyte4 nonceLen);
630 MOC_EXTERN MSTATUS
GCM_update_aad_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pAadData, ubyte4 aadDataLen);
662 MOC_EXTERN MSTATUS
GCM_update_data_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pData, ubyte4 dataLen);
694 MOC_EXTERN MSTATUS
GCM_final_ex_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pTag, ubyte4 tagLen);
732 MOC_EXTERN MSTATUS
GCM_deleteCtx_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx *ctx);
772 MOC_EXTERN MSTATUS
GCM_init_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx,
773 ubyte* nonce, ubyte4 nlen,
774 ubyte* adata, ubyte4 alen);
815 MOC_EXTERN MSTATUS
GCM_update_encrypt_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte *data, ubyte4 dlen);
857 MOC_EXTERN MSTATUS
GCM_update_decrypt_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte *ct, ubyte4 ctlen);
894 MOC_EXTERN MSTATUS
GCM_final_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte tag[]);
941 MOC_EXTERN MSTATUS
GCM_cipher_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx,
942 ubyte* nonce, ubyte4 nlen,
943 ubyte* adata, ubyte4 alen,
944 ubyte* data, ubyte4 dlen, ubyte4 verifyLen, sbyte4 encrypt);
956 MOC_EXTERN MSTATUS
GCM_clone_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, BulkCtx *ppNewCtx);
960 #ifdef __ENABLE_MOCANA_GCM_256B__ 964 typedef struct gcm_ctx_256b {
968 sbyte4 hashBufferIndex;
969 ubyte hashBuffer[AES_BLOCK_SIZE];
976 MocSymCtx pMocSymCtx;
1031 MOC_EXTERN BulkCtx
GCM_createCtx_256b(MOC_SYM(hwAccelDescr hwAccelCtx) ubyte* key, sbyte4 keylen, sbyte4 encrypt);
1059 MOC_EXTERN MSTATUS
GCM_update_nonce_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pNonce, ubyte4 nonceLen);
1087 MOC_EXTERN MSTATUS
GCM_update_aad_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pAadData, ubyte4 aadDataLen);
1119 MOC_EXTERN MSTATUS
GCM_update_data_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pData, ubyte4 dataLen);
1151 MOC_EXTERN MSTATUS
GCM_final_ex_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pTag, ubyte4 tagLen);
1189 MOC_EXTERN MSTATUS
GCM_deleteCtx_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx *ctx);
1229 MOC_EXTERN MSTATUS
GCM_init_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx,
1230 ubyte* nonce, ubyte4 nlen,
1231 ubyte* adata, ubyte4 alen);
1272 MOC_EXTERN MSTATUS
GCM_update_encrypt_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte *data, ubyte4 dlen);
1314 MOC_EXTERN MSTATUS
GCM_update_decrypt_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte *ct, ubyte4 ctlen);
1351 MOC_EXTERN MSTATUS
GCM_final_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte tag[]);
1399 MOC_EXTERN MSTATUS
GCM_cipher_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx,
1400 ubyte* nonce, ubyte4 nlen,
1401 ubyte* adata, ubyte4 alen,
1402 ubyte* data, ubyte4 dlen, ubyte4 verifyLen, sbyte4 encrypt);
1414 MOC_EXTERN MSTATUS
GCM_clone_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, BulkCtx *ppNewCtx);
MOC_EXTERN MSTATUS GCM_deleteCtx_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx *ctx)
Delete an AES-GCM context.
MOC_EXTERN MSTATUS GCM_final_ex_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pTag, ubyte4 tagLen)
Finalizes an AES-GCM context and verifies or outputs the tag.
MOC_EXTERN MSTATUS GCM_init_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte *nonce, ubyte4 nlen, ubyte *adata, ubyte4 alen)
Initialize nonce and authentication data for AES-GCM context.
MOC_EXTERN MSTATUS GCM_final_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte tag[])
Write authentication tag after message encryption.
MOC_EXTERN MSTATUS GCM_update_nonce_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pNonce, ubyte4 nonceLen)
Sets the nonce in a previously created AES-GCM Context.
MOC_EXTERN MSTATUS GCM_update_decrypt_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte *ct, ubyte4 ctlen)
Decrypt data buffer and perform authentication.
MOC_EXTERN MSTATUS GCM_clone_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, BulkCtx *ppNewCtx)
Clone a AES-GCM context.
MOC_EXTERN MSTATUS GCM_update_decrypt_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte *ct, ubyte4 ctlen)
Decrypt data buffer and perform authentication.
MOC_EXTERN MSTATUS GCM_final_ex_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pTag, ubyte4 tagLen)
Finalizes an AES-GCM context and verifies or outputs the tag.
MOC_EXTERN MSTATUS GCM_update_data_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pData, ubyte4 dataLen)
Finalizes an AES-GCM context and verifies or outputs the tag.
MOC_EXTERN MSTATUS GCM_update_encrypt_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte *data, ubyte4 dlen)
Encrypt a data buffer and perform authentication.
MOC_EXTERN MSTATUS GCM_update_encrypt_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte *data, ubyte4 dlen)
Encrypt a data buffer and perform authentication.
MOC_EXTERN MSTATUS GCM_update_data_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pData, ubyte4 dataLen)
Updates an AES-GCM context with data to be encrypted or decrypted.
MOC_EXTERN MSTATUS GCM_cipher_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte *nonce, ubyte4 nlen, ubyte *adata, ubyte4 alen, ubyte *data, ubyte4 dlen, ubyte4 verifyLen, sbyte4 encrypt)
AES-GCM encrypt or decrypt a data buffer.
MOC_EXTERN MSTATUS GCM_final_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte tag[])
Write authentication tag after message encryption.
MOC_EXTERN MSTATUS GCM_update_data_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pData, ubyte4 dataLen)
Finalizes an AES-GCM context and verifies or outputs the tag.
MOC_EXTERN BulkCtx GCM_createCtx_64k(MOC_SYM(hwAccelDescr hwAccelCtx) ubyte *key, sbyte4 keylen, sbyte4 encrypt)
Create and return a context data structure for AES-GCM operations.
MOC_EXTERN MSTATUS GCM_cipher_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte *nonce, ubyte4 nlen, ubyte *adata, ubyte4 alen, ubyte *data, ubyte4 dlen, ubyte4 verifyLen, sbyte4 encrypt)
AES-GCM encrypt or decrypt a data buffer.
MOC_EXTERN BulkCtx GCM_createCtx_256b(MOC_SYM(hwAccelDescr hwAccelCtx) ubyte *key, sbyte4 keylen, sbyte4 encrypt)
Create and return a context data structure for AES-GCM operations.
MOC_EXTERN MSTATUS GCM_update_encrypt_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte *data, ubyte4 dlen)
Encrypt a data buffer and perform authentication.
MOC_EXTERN MSTATUS GCM_update_aad_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pAadData, ubyte4 aadDataLen)
Updates an AES-GCM context with additional authenticated data.
MOC_EXTERN MSTATUS GCM_init_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte *nonce, ubyte4 nlen, ubyte *adata, ubyte4 alen)
Initialize nonce and authentication data for AES-GCM context.
MOC_EXTERN MSTATUS GCM_final_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte tag[])
Write authentication tag after message encryption.
MOC_EXTERN MSTATUS GCM_update_nonce_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pNonce, ubyte4 nonceLen)
Sets the nonce in a previously created AES-GCM Context.
MOC_EXTERN MSTATUS GCM_update_nonce_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pNonce, ubyte4 nonceLen)
Sets the nonce in a previously created AES-GCM Context.
MOC_EXTERN MSTATUS GCM_update_aad_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pAadData, ubyte4 aadDataLen)
Updates an AES-GCM context with additional authenticated data.
MOC_EXTERN BulkCtx GCM_createCtx_4k(MOC_SYM(hwAccelDescr hwAccelCtx) ubyte *key, sbyte4 keylen, sbyte4 encrypt)
Create and return a context data structure for AES-GCM operations.
MOC_EXTERN MSTATUS GCM_clone_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, BulkCtx *ppNewCtx)
Clone a AES-GCM context.
MOC_EXTERN MSTATUS GCM_cipher_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte *nonce, ubyte4 nlen, ubyte *adata, ubyte4 alen, ubyte *data, ubyte4 dlen, ubyte4 verifyLen, sbyte4 encrypt)
AES-GCM encrypt or decrypt a data buffer.
MOC_EXTERN MSTATUS GCM_update_aad_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pAadData, ubyte4 aadDataLen)
Updates an AES-GCM context with additional authenticated data.
MOC_EXTERN MSTATUS GCM_update_decrypt_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte *ct, ubyte4 ctlen)
Decrypt data buffer and perform authentication.
MOC_EXTERN MSTATUS GCM_deleteCtx_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx *ctx)
Delete an AES-GCM context.
MOC_EXTERN MSTATUS GCM_init_64k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte *nonce, ubyte4 nlen, ubyte *adata, ubyte4 alen)
Initialize nonce and authentication data for AES-GCM context.
MOC_EXTERN MSTATUS GCM_final_ex_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pTag, ubyte4 tagLen)
Finalizes an AES-GCM context and verifies or outputs the tag.
MOC_EXTERN MSTATUS GCM_clone_256b(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, BulkCtx *ppNewCtx)
Clone a AES-GCM context.
MOC_EXTERN MSTATUS GCM_deleteCtx_4k(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx *ctx)
Delete an AES-GCM context.