ChaCha20¶
Encrypt¶
To test a function that encrypts with ChaCha20 only, its name must conform to the following convention:
CC_ChaCha20_encrypt
Its signature must be:
- void CC_ChaCha20_encrypt(
- uint8_t *buffer,
- size_t buffer_size,
- const uint8_t key[32],
- const uint8_t *nonce,
- size_t nonce_size,
- uint64_t init_counter,
- Parameters:
- buffer – [In/Out] A buffer containing the plaintext to encrypt, and to store the resulting ciphertext. 
- buffer_size – [In] The size of the buffer in bytes. 
- key – [In] The 32-byte symmetric key. 
- nonce – [In] The nonce. 
- nonce_size – [In] The size of the nonce in bytes. 
- init_counter – [In] An absolute position within the keystream in bytes to seek before encrypting. 
 
 
Example:
void CC_ChaCha20_encrypt(uint8_t *buffer, size_t buffer_size,
                        const uint8_t key[32],
                        const uint8_t *nonce, size_t nonce_size,
                        uint64_t init_counter);
Decrypt¶
To test a function that decrypts with ChaCha20 only, its name must conform to the following convention:
CC_ChaCha20_decrypt
Its signature must be:
- void CC_ChaCha20_decrypt(
- uint8_t *buffer,
- size_t buffer_size,
- const uint8_t key[32],
- const uint8_t *nonce,
- size_t nonce_size,
- uint64_t init_counter,
- Parameters:
- buffer – [In/Out] A buffer containing the ciphertext to decrypt, and to store the resulting plaintext. 
- buffer_size – [In] The size of the buffer in bytes. 
- key – [In] The 32-byte symmetric key. 
- nonce – [In] The nonce. 
- nonce_size – [In] The size of the nonce in bytes. 
- init_counter – [In] An absolute position within the keystream in bytes to seek before decrypting. 
 
 
Example:
void CC_ChaCha20_encrypt(uint8_t *buffer, size_t buffer_size,
                        const uint8_t key[32],
                        const uint8_t *nonce, size_t nonce_size,
                        uint64_t init_counter);
Encrypt with Poly1305¶
To test a function that encrypts with ChaCha20-Poly1305, its name must conform to the following convention:
CC_ChaCha20_Poly1305_encrypt
Its signature must be:
- void CC_ChaCha20_Poly1305_encrypt(
- uint8_t *buffer,
- size_t buffer_size,
- uint8_t mac[16],
- const uint8_t key[32],
- const uint8_t *nonce,
- size_t nonce_size,
- const uint8_t *aad,
- size_t aad_size,
- Parameters:
- buffer – [In/Out] A buffer containing the plaintext to encrypt, and to store the resulting ciphertext. 
- buffer_size – [In] The size of the buffer in bytes. 
- mac – [Out] A buffer to store the resulting 16-byte MAC tag. 
- key – [In] The 32-byte symmetric key. 
- nonce – [In] The nonce. 
- nonce_size – [In] The size of the nonce in bytes. 
- aad – [In] The optional associated data. NULL if not used. 
- aad_size – [In] The size of the associated data. 0 if not used. 
 
 
Example:
void CC_ChaCha20_Poly1305_encrypt(uint8_t *buffer, size_t buffer_size,
                                 uint8_t mac[16],
                                 const uint8_t key[32],
                                 const uint8_t *nonce, size_t nonce_size,
                                 const uint8_t *aad, size_t aad_size);
Decrypt with Poly1305¶
To test a function that decrypts with ChaCha20-Poly1305, its name must conform to the following convention:
CC_ChaCha20_Poly1305_decrypt
Its signature must be:
- int CC_ChaCha20_Poly1305_decrypt(
- uint8_t *buffer,
- size_t buffer_size,
- const uint8_t key[32],
- const uint8_t *nonce,
- size_t nonce_size,
- const uint8_t *aad,
- size_t aad_size,
- const uint8_t mac[16],
- Parameters:
- buffer – [In/Out] A buffer containing the ciphertext to decrypt, and to store the resulting plaintext. It is ignored if the function returns -2. 
- buffer_size – [In] The size of the buffer in bytes. 
- key – [In] The 32-byte symmetric key. 
- nonce – [In] The nonce. 
- nonce_size – [In] The size of the nonce in bytes. 
- aad – [In] The optional associated data. NULL if not used. 
- aad_size – [In] The size of the associated data. 0 if not used. 
- mac – [In] The 16-byte MAC tag to verify. 
 
- Returns:
- A status value. 
- Return values:
- 0 – OK. 
- -1 – The MAC verification failed. 
 
 
Example:
int CC_ChaCha20_Poly1305_decrypt(uint8_t *buffer, size_t buffer_size,
                                 const uint8_t key[32],
                                 const uint8_t *nonce, size_t nonce_size,
                                 const uint8_t *aad, size_t aad_size,
                                 const uint8_t mac[16]);