crypto_Sym_Status_E Crypto_Sym_ChaCha20_Cipher(
st_Crypto_Sym_StreamCtx *ptr_chaChaCtx_st,
uint8_t *ptr_inputData,
uint32_t dataLen,
uint8_t *ptr_outData
);
Description
This API performs ChaCha20 encryption or decryption. Initialize context by calling
Crypto_Sym_ChaCha20_Init function before calling this API.
Parameters
No. | Argument Type | Argument Name | Type | Description |
---|
1 | st_Crypto_Sym_StreamCtx* | ptr_chaChaCtx_st | Input | ChaCha20
algorithm context |
2 | uint8_t* | ptr_inputData | Input | Input data to
encrypt or decrypt |
3 | uint32_t | dataLen | Input | Input length
of plain data or cipher data in bytes |
4 | uint8_t* | ptr_outData | Output | Pointer to
store cipher text/plain text as output |
Returns
Return Type | Description |
---|
crypto_Sym_Status_E | Function
returns the status of the API. |
Prerequisites
- To use the HW handler, the
algorithm must be enabled in Crypto v4 in MPLAB® Code Configurator.
- To use the SW handler, the
algorithm must be enabled in wolfCrypt, and linked to Crypto V4 in MPLAB® Code
Configurator.
- Crypto_Sym_ChaCha20_Init must be called prior to calling
Crypto_Sym_ChaCha20_Cipher.
Example
crypto_Sym_Status_E status;
#define sessionID 1
crypto_Sym_Status_E status;
st_Crypto_Sym_BlockCtx chaChaCtx_st;
crypto_HandlerType_E handlerType_en = CRYPTO_HANDLER_SW_WOLFCRYPT;
uint8_t key[16] = {/*data*/};
uint8_t ptr_initVect[] = {/*data*/};
uint8_t inputData[64] = {/*data*/};
uint32_t dataLen = sizeof(inputData);
uint8_t outData[64];
status = Crypto_Sym_ChaCha20_Init(
&chaChaCtx_st,
handlerType_en,
key,
ptr_initVect,
sessionID
);
status = Crypto_Sym_ChaCha20_Cipher(
&chaChaCtx_st,
inputData,
dataLen,
outData
);