/*!
    \ingroup HC128

    \brief This function encrypts or decrypts a message of any size from the
    input buffer input, and stores the resulting plaintext/ciphertext in
    the output buffer output.

    \return 0 Returned upon successfully encrypting/decrypting the given input
    \return MEMORY_E Returned if the input and output buffers are not aligned
    along a 4-byte boundary, and there is an error allocating memory
    \return BAD_ALIGN_E Returned if the input or output buffers are not
    aligned along a 4-byte boundary, and NO_WOLFSSL_ALLOC_ALIGN is defined

    \param ctx pointer to a HC-128 context object with an initialized key
    to use for encryption or decryption
    \param output buffer in which to store the processed input
    \param input  buffer containing the plaintext to encrypt or the
    ciphertext to decrypt
    \param msglen length of the plaintext to encrypt or the ciphertext
    to decrypt

    _Example_
    \code
    HC128 enc;
    byte key[] = { // initialize with key };
    byte iv[]  = { // initialize with iv };
    wc_Hc128_SetKey(&enc, key, iv);

    byte msg[] = { // initialize with message };
    byte cipher[sizeof(msg)];

    if (wc_Hc128_Process(*enc, cipher, plain, sizeof(plain)) != 0) {
    	// error encrypting msg
    }
    \endcode

    \sa wc_Hc128_SetKey
*/
WOLFSSL_API int wc_Hc128_Process(HC128*, byte*, const byte*, word32);

/*!
    \ingroup HC128

    \brief This function initializes an HC128 context object by
    setting its key and iv.

    \return 0 Returned upon successfully setting the key and iv
    for the HC128 context object

    \param ctx pointer to an HC-128 context object to initialize
    \param key pointer to the buffer containing the 16 byte key to
    use with encryption/decryption
    \param iv pointer to the buffer containing the 16 byte iv (nonce)
    with which to initialize the HC128 object

    _Example_
    \code
    HC128 enc;
    byte key[] = { // initialize with key };
    byte iv[]  = { // initialize with iv };
    wc_Hc128_SetKey(&enc, key, iv);
    \endcode

    \sa wc_Hc128_Process
*/
WOLFSSL_API int wc_Hc128_SetKey(HC128*, const byte* key, const byte* iv);
