TrustCore SDK Crypto Interface API reference  version 2.0
crypto_interface_chacha20.h
Go to the documentation of this file.
1 /*
2  * crypto_interface_chacha20.h
3  *
4  * Cryptographic Interface header file for declaring ChaCha20 functions for the
5  * Crypto Interface.
6  *
7  * Copyright 2019-2024 DigiCert, Inc. All Rights Reserved.
8  * Proprietary and Confidential Material.
9  *
10  */
11 
18 #ifndef __CRYPTO_INTERFACE_CHACHA20_HEADER__
19 #define __CRYPTO_INTERFACE_CHACHA20_HEADER__
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
43 MOC_EXTERN BulkCtx CRYPTO_INTERFACE_CreateChaCha20Ctx (
44  MOC_SYM(hwAccelDescr hwAccelCtx)
45  const ubyte pKey[48],
46  sbyte4 keyLen,
47  sbyte4 mode
48  );
49 
73 MOC_EXTERN MSTATUS CRYPTO_INTERFACE_DoChaCha20 (
74  MOC_SYM(hwAccelDescr hwAccelCtx)
75  BulkCtx pBulkCtx,
76  ubyte* pData,
77  sbyte4 dataLen,
78  sbyte4 mode,
79  ubyte* pIv
80  );
81 
90 MOC_EXTERN MSTATUS CRYPTO_INTERFACE_DeleteChaCha20Ctx (
91  MOC_SYM(hwAccelDescr hwAccelCtx)
92  BulkCtx *ppBulkCtx
93  );
94 
123  MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx,
124  ubyte *pNonce,
125  ubyte4 nonceLength,
126  ubyte *pCounter,
127  ubyte counterLength
128  );
129 
146  MOC_SYM(hwAccelDescr hwAccelCtx)
147  ubyte *pKey,
148  sbyte4 keyLen,
149  sbyte4 encrypt
150  );
151 
161  MOC_SYM(hwAccelDescr hwAccelCtx)
162  BulkCtx *ppCtx
163  );
164 
200 MOC_EXTERN MSTATUS CRYPTO_INTERFACE_ChaCha20Poly1305_cipherSSH(MOC_SYM(hwAccelDescr hwAccelCtx)
201  BulkCtx ctx,
202  ubyte *pNonce, ubyte4 nlen,
203  ubyte *pAdata, ubyte4 alen,
204  ubyte *pData, ubyte4 dlen,
205  ubyte4 verifyLen, sbyte4 encrypt);
206 
226  MOC_SYM(hwAccelDescr hwAccelCtx)
227  BulkCtx pCtx,
228  ubyte *pNonce,
229  ubyte4 noncelen,
230  ubyte *pAad,
231  ubyte4 aadLen,
232  ubyte *pData,
233  ubyte4 dataLen,
234  ubyte4 verifyLen,
235  sbyte4 encrypt
236  );
237 
238 
259  MOC_SYM(hwAccelDescr hwAccelCtx)
260  BulkCtx pCtx,
261  ubyte *pNonce,
262  ubyte4 nonceLen
263  );
264 
286  MOC_SYM(hwAccelDescr hwAccelCtx)
287  BulkCtx pCtx,
288  ubyte *pAadData,
289  ubyte4 aadDataLen
290  );
291 
313  MOC_SYM(hwAccelDescr hwAccelCtx)
314  BulkCtx pCtx,
315  ubyte *pData,
316  ubyte4 dataLen
317  );
318 
348 MOC_EXTERN MSTATUS CRYPTO_INTERFACE_ChaCha20Poly1305_final(
349  MOC_SYM(hwAccelDescr hwAccelCtx)
350  BulkCtx pCtx,
351  ubyte *pTag,
352  ubyte4 tagLen
353  );
354 
366  MOC_SYM(hwAccelDescr hwAccelCtx)
367  BulkCtx pCtx,
368  BulkCtx *ppNewCtx
369  );
370 
371 #ifdef __cplusplus
372 }
373 #endif
374 
375 #endif /* __CRYPTO_INTERFACE_CHACHA20_HEADER__ */
MOC_EXTERN MSTATUS CRYPTO_INTERFACE_ChaCha20Poly1305_cipherSSH(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte *pNonce, ubyte4 nlen, ubyte *pAdata, ubyte4 alen, ubyte *pData, ubyte4 dlen, ubyte4 verifyLen, sbyte4 encrypt)
Performs the ChaCha20poly1305 AEAD algorithm as specified for SSH authentication protocol.
MOC_EXTERN MSTATUS CRYPTO_INTERFACE_ChaCha20Poly1305_update_aad(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pAadData, ubyte4 aadDataLen)
Updates a ChaCha20Ctx context with additional authenticated data.
MOC_EXTERN MSTATUS CRYPTO_INTERFACE_DeleteChaCha20Ctx(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx *ppBulkCtx)
Delete a ChaCha20 context.
MOC_EXTERN MSTATUS CRYPTO_INTERFACE_CHACHA20_setNonceAndCounterSSH(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx ctx, ubyte *pNonce, ubyte4 nonceLength, ubyte *pCounter, ubyte counterLength)
Set values for the nonce and counter blocks for ChaCha20 context.
MOC_EXTERN MSTATUS CRYPTO_INTERFACE_ChaCha20Poly1305_cipher(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pNonce, ubyte4 noncelen, ubyte *pAad, ubyte4 aadLen, ubyte *pData, ubyte4 dataLen, ubyte4 verifyLen, sbyte4 encrypt)
Performs the ChaCha20 Poly1305 AEAD operation.
MOC_EXTERN MSTATUS CRYPTO_INTERFACE_ChaCha20Poly1305_update_nonce(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pNonce, ubyte4 nonceLen)
Adds the nonce value to a ChaCha20Ctx context data structure for use with the Poly1305 MAC algorithm...
MOC_EXTERN MSTATUS CRYPTO_INTERFACE_ChaCha20Poly1305_update_data(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pData, ubyte4 dataLen)
Updates a ChaCha20Ctx context with data to be encrypted or decrypted.
MOC_EXTERN MSTATUS CRYPTO_INTERFACE_ChaCha20Poly1305_deleteCtx(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx *ppCtx)
Deletes a ChaCha20Poly1305 context.
MOC_EXTERN MSTATUS CRYPTO_INTERFACE_DoChaCha20(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pBulkCtx, ubyte *pData, sbyte4 dataLen, sbyte4 mode, ubyte *pIv)
Encrypt or decrypt data using the provided ChaCha20 context.
MOC_EXTERN BulkCtx CRYPTO_INTERFACE_ChaCha20Poly1305_createCtx(MOC_SYM(hwAccelDescr hwAccelCtx) ubyte *pKey, sbyte4 keyLen, sbyte4 encrypt)
Create a new ChaCha20Poly1305 context for use in the ChaCha20 Poly1305 AEAD.
MOC_EXTERN BulkCtx CRYPTO_INTERFACE_CreateChaCha20Ctx(MOC_SYM(hwAccelDescr hwAccelCtx) const ubyte pKey[48], sbyte4 keyLen, sbyte4 mode)
Create a new ChaCha20 context.
MOC_EXTERN MSTATUS CRYPTO_INTERFACE_ChaCha20Poly1305_cloneCtx(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, BulkCtx *ppNewCtx)
Clone a ChaCha20Poly1305 context.
MOC_EXTERN MSTATUS CRYPTO_INTERFACE_ChaCha20Poly1305_final(MOC_SYM(hwAccelDescr hwAccelCtx) BulkCtx pCtx, ubyte *pTag, ubyte4 tagLen)
Finalizes a previously initialized context and computes or verifies the MAC.