123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- /*!
- \ingroup ChaCha
- \brief 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.
- \return 0 Returned upon successfully setting the initialization vector
- \return BAD_FUNC_ARG returned if there is an error processing the ctx
- input argument
- \param ctx pointer to the ChaCha structure on which to set the iv
- \param inIv pointer to a buffer containing the 12 byte initialization
- vector with which to initialize the ChaCha structure
- \param counter the value at which the block counter should start--usually
- zero.
- _Example_
- \code
- 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
- }
- \endcode
- \sa wc_Chacha_SetKey
- \sa wc_Chacha_Process
- */
- WOLFSSL_API int wc_Chacha_SetIV(ChaCha* ctx, const byte* inIv, word32 counter);
- /*!
- \ingroup ChaCha
- \brief This function processes the text from the buffer input, encrypts
- or decrypts it, and stores the result in the buffer output.
- \return 0 Returned upon successfully encrypting or decrypting the input
- \return BAD_FUNC_ARG returned if there is an error processing the ctx
- input argument
- \param ctx pointer to the ChaCha structure on which to set the iv
- \param output pointer to a buffer in which to store the output ciphertext
- or decrypted plaintext
- \param input pointer to the buffer containing the input plaintext to
- encrypt or the input ciphertext to decrypt
- \param msglen length of the message to encrypt or the ciphertext to decrypt
- _Example_
- \code
- 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
- }
- \endcode
- \sa wc_Chacha_SetKey
- \sa wc_Chacha_Process
- */
- WOLFSSL_API int wc_Chacha_Process(ChaCha* ctx, byte* cipher, const byte* plain,
- word32 msglen);
- /*!
- \ingroup ChaCha
- \brief 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.
- \return 0 Returned upon successfully setting the key
- \return 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
- \param ctx pointer to the ChaCha structure in which to set the key
- \param key pointer to a buffer containing the 16 or 32 byte key with
- which to initialize the ChaCha structure
- \param keySz the length of the key passed in
- _Example_
- \code
- ChaCha enc;
- byte key[] = { // initialize key };
- if( wc_Chacha_SetKey(&enc, key, sizeof(key)) != 0) {
- // error initializing ChaCha structure
- }
- \endcode
- \sa wc_Chacha_SetIV
- \sa wc_Chacha_Process
- */
- WOLFSSL_API int wc_Chacha_SetKey(ChaCha* ctx, const byte* key, word32 keySz);
|