TrustCore SDK NanoCrypto API reference  version 7.0
aes_xts.h
Go to the documentation of this file.
1 /*
2  * aes_xts.h
3  *
4  * AES-XTS Implementation
5  *
6  * Copyright 2019-2024 DigiCert, Inc. All Rights Reserved.
7  * Proprietary and Confidential Material.
8  *
9  */
10 
30 /*------------------------------------------------------------------*/
31 
32 #ifndef __AES_XTS_HEADER__
33 #define __AES_XTS_HEADER__
34 
35 #include "../cap/capdecl.h"
36 
37 #ifdef __ENABLE_MOCANA_CRYPTO_INTERFACE__
38 #include "../crypto_interface/crypto_interface_aes_xts_priv.h"
39 #endif
40 
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
45 
46 /*------------------------------------------------------------------*/
47 
48 /* The structure for key information */
49 typedef struct aesXTSCipherContext
50 {
51  aesCipherContext *pKey1;
52  aesCipherContext *pKey2;
53  MocSymCtx pMocSymCtx;
54  ubyte enabled;
55 
56 } aesXTSCipherContext, AES_XTS_Ctx;
57 
58 
59 
60 /*------------------------------------------------------------------*/
61 /* Function prototypes */
62 
75 MOC_EXTERN BulkCtx CreateAESXTSCtx(MOC_SYM(hwAccelDescr hwAccelCtx) const ubyte *pKeyMaterial, sbyte4 keyLength, sbyte4 encrypt);
76 MOC_EXTERN BulkCtx CreateAESXTSCtxExt(MOC_SYM(hwAccelDescr hwAccelCtx) const ubyte *pKeyMaterial, sbyte4 keyLength, sbyte4 encrypt, void *pExtCtx);
77 
85 MOC_EXTERN MSTATUS DeleteAESXTSCtx(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx *pCtx);
86 MOC_EXTERN MSTATUS DeleteAESXTSCtxExt(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx *pCtx, void *pExtCtx);
87 
103 MOC_EXTERN MSTATUS DoAESXTS(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pData, sbyte4 dataLen,
104  sbyte4 encrypt, ubyte *pTweak);
105 MOC_EXTERN MSTATUS DoAESXTSExt(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pData, sbyte4 dataLen,
106  sbyte4 encrypt, ubyte *pTweak, void *pExtCtx);
107 
108 /* algo specific API -- might be easier to use in some cases */
109 
121 MOC_EXTERN MSTATUS AESXTSInit( MOC_SYM(hwAccelDescr hwAccelCtx)
122  aesXTSCipherContext *pCtx,
123  const ubyte *pKey1, const ubyte *pKey2,
124  sbyte4 keyLength, sbyte4 encrypt);
125 
126 MOC_EXTERN MSTATUS AESXTSInitExt( MOC_SYM(hwAccelDescr hwAccelCtx)
127  aesXTSCipherContext *pCtx,
128  const ubyte *pKey1, const ubyte *pKey2,
129  sbyte4 keyLength, sbyte4 encrypt, void *pExtCtx);
130 
142 MOC_EXTERN MSTATUS AESXTSEncrypt( MOC_SYM(hwAccelDescr hwAccelCtx)
143  aesXTSCipherContext *pCtx,
144  ubyte pTweak[AES_BLOCK_SIZE],
145  ubyte *pPlain, ubyte4 plainLen);
146 MOC_EXTERN MSTATUS AESXTSEncryptExt( MOC_SYM(hwAccelDescr hwAccelCtx)
147  aesXTSCipherContext *pCtx,
148  ubyte pTweak[AES_BLOCK_SIZE],
149  ubyte *pPlain, ubyte4 plainLen, void *pExtCtx);
161 MOC_EXTERN MSTATUS AESXTSDecrypt( MOC_SYM(hwAccelDescr hwAccelCtx)
162  aesXTSCipherContext *pCtx,
163  ubyte pTweak[AES_BLOCK_SIZE],
164  ubyte *pCipher, ubyte4 cipherLen);
165 
166 MOC_EXTERN MSTATUS AESXTSDecryptExt( MOC_SYM(hwAccelDescr hwAccelCtx)
167  aesXTSCipherContext *pCtx,
168  ubyte pTweak[AES_BLOCK_SIZE],
169  ubyte *pCipher, ubyte4 cipherLen, void *pExtCtx);
170 
180 MOC_EXTERN MSTATUS CloneAESXTSCtx( MOC_SYM(hwAccelDescr hwAccelCtx)
181  BulkCtx pCtx, BulkCtx *ppNewCtx);
182 
183 #ifdef __cplusplus
184 }
185 #endif
186 
187 #endif /* __AES_XTS_HEADER__ */
188 
MOC_EXTERN MSTATUS AESXTSDecrypt(MOC_SYM(hwAccelDescr hwAccelCtx) aesXTSCipherContext *pCtx, ubyte pTweak[AES_BLOCK_SIZE], ubyte *pCipher, ubyte4 cipherLen)
Decrypt some data using AES in XTS mode.
MOC_EXTERN BulkCtx CreateAESXTSCtx(MOC_SYM(hwAccelDescr hwAccelCtx) const ubyte *pKeyMaterial, sbyte4 keyLength, sbyte4 encrypt)
Create a new AES-XTS context.
MOC_EXTERN MSTATUS AESXTSEncrypt(MOC_SYM(hwAccelDescr hwAccelCtx) aesXTSCipherContext *pCtx, ubyte pTweak[AES_BLOCK_SIZE], ubyte *pPlain, ubyte4 plainLen)
Encrypt some data using AES in XTS mode.
MOC_EXTERN MSTATUS DoAESXTS(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pData, sbyte4 dataLen, sbyte4 encrypt, ubyte *pTweak)
Encrypt or decrypt data using AES in XTS mode.
MOC_EXTERN MSTATUS AESXTSInit(MOC_SYM(hwAccelDescr hwAccelCtx) aesXTSCipherContext *pCtx, const ubyte *pKey1, const ubyte *pKey2, sbyte4 keyLength, sbyte4 encrypt)
Initialize a previously allocated AES-XTS context.
MOC_EXTERN MSTATUS DeleteAESXTSCtx(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx *pCtx)
Delete an existing AES-XTS context.
MOC_EXTERN MSTATUS CloneAESXTSCtx(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, BulkCtx *ppNewCtx)
Clone an AES-XTS context.