Algorithms - ChaCha
Functions
Name | |
---|---|
int | wc_Chacha_SetIV(ChaCha * ctx, const byte * inIv, word32 counter) This function sets the initialization vector (nonce) for a ChaCha object, initializing it for use as a cipher. It should be called after the key has been set, using wc_Chacha_SetKey. A difference nonce should be used for each round of encryption. |
int | wc_Chacha_Process(ChaCha * ctx, byte * cipher, const byte * plain, word32 msglen) This function processes the text from the buffer input, encrypts or decrypts it, and stores the result in the buffer output. |
int | wc_Chacha_SetKey(ChaCha * ctx, const byte * key, word32 keySz) This function sets the key for a ChaCha object, initializing it for use as a cipher. It should be called before setting the nonce with wc_Chacha_SetIV, and before using it for encryption with wc_Chacha_Process. |
Functions Documentation
function wc_Chacha_SetIV
int wc_Chacha_SetIV(
ChaCha * ctx,
const byte * inIv,
word32 counter
)
This function sets the initialization vector (nonce) for a ChaCha object, initializing it for use as a cipher. It should be called after the key has been set, using wc_Chacha_SetKey. A difference nonce should be used for each round of encryption.
Parameters:
- ctx pointer to the ChaCha structure on which to set the iv
- inIv pointer to a buffer containing the 12 byte initialization vector with which to initialize the ChaCha structure
- counter the value at which the block counter should start–usually zero.
See:
Return:
- 0 Returned upon successfully setting the initialization vector
- BAD_FUNC_ARG returned if there is an error processing the ctx input argument
Example
ChaCha enc;
// initialize enc with wc_Chacha_SetKey
byte iv[12];
// initialize iv
if( wc_Chacha_SetIV(&enc, iv, 0) != 0) {
// error initializing ChaCha structure
}
function wc_Chacha_Process
int wc_Chacha_Process(
ChaCha * ctx,
byte * cipher,
const byte * plain,
word32 msglen
)
This function processes the text from the buffer input, encrypts or decrypts it, and stores the result in the buffer output.
Parameters:
- ctx pointer to the ChaCha structure on which to set the iv
- output pointer to a buffer in which to store the output ciphertext or decrypted plaintext
- input pointer to the buffer containing the input plaintext to encrypt or the input ciphertext to decrypt
- msglen length of the message to encrypt or the ciphertext to decrypt
See:
Return:
- 0 Returned upon successfully encrypting or decrypting the input
- BAD_FUNC_ARG returned if there is an error processing the ctx input argument
Example
ChaCha enc;
// initialize enc with wc_Chacha_SetKey and wc_Chacha_SetIV
byte plain[] = { // initialize plaintext };
byte cipher[sizeof(plain)];
if( wc_Chacha_Process(&enc, cipher, plain, sizeof(plain)) != 0) {
// error processing ChaCha cipher
}
function wc_Chacha_SetKey
int wc_Chacha_SetKey(
ChaCha * ctx,
const byte * key,
word32 keySz
)
This function sets the key for a ChaCha object, initializing it for use as a cipher. It should be called before setting the nonce with wc_Chacha_SetIV, and before using it for encryption with wc_Chacha_Process.
Parameters:
- ctx pointer to the ChaCha structure in which to set the key
- key pointer to a buffer containing the 16 or 32 byte key with which to initialize the ChaCha structure
- keySz the length of the key passed in
See:
Return:
- 0 Returned upon successfully setting the key
- BAD_FUNC_ARG returned if there is an error processing the ctx input argument or if the key is not 16 or 32 bytes long
Example
ChaCha enc;
byte key[] = { // initialize key };
if( wc_Chacha_SetKey(&enc, key, sizeof(key)) != 0) {
// error initializing ChaCha structure
}
Updated on 2024-12-04 at 01:16:56 +0000