2.7.1.3 Crypto_Sym_ChaCha20Direct

crypto_Sym_Status_E Crypto_Sym_ChaCha20Direct(
    crypto_HandlerType_E handlerType_en, 
    uint8_t *ptr_inputData, 
    uint32_t dataLen, 
    uint8_t *ptr_outData, 
    uint8_t *ptr_key, 
    uint8_t *ptr_initVect, 
    uint32_t sessionID
    );

Description

This API performs ChaCha20 encryption or decryption for different operation modes in a single step without initializing. The same API is used for both encryption and decryption.

Parameters

No.Argument TypeArgument NameTypeDescription
1crypto_HandlerType_EhandlerType_enInputEnum for crypto operation handler i.e., SW, HW
2uint8_t*ptr_inputDataInputInput data/cipher data to encrypt or decrypt
3uint32_tdataLenInputInput length of plain data/cipher data in bytes
4uint8_t*ptr_outDataOutputPointer to store cipher text/plain text as output
5uint8_t*ptr_keyInputKey for the Symmetric operation (32 bytes for Chacha20)
6uint8_t*ptr_initVectInputInitialization vector where 96 bits are Nonce, and 32 bits are counter
7uint32_tsessionIDInputIt defines the session ID, must be more than zero

Returns

Return TypeDescription
crypto_Sym_Status_EFunction returns the status of the API.

Example

#define sessionID 1
crypto_Sym_Status_E status;
crypto_HandlerType_E handlerType_en = CRYPTO_HANDLER_HW_INTERNAL;
uint8_t key[16] = {/*data*/};
uint32_t keyLen = sizeof(key);
uint8_t *ptr_initVect = NULL;
uint8_t inputData[64] = {/*data*/};
uint32_t dataLen = sizeof(inputData);
uint8_t outData[64];


status = Crypto_Sym_ChaCha20Direct( 
    handlerType_en,  
    inputData, 
    dataLen, 
    outData, 
    key, 
    ptr_initVect, 
    sessionID
    );