#ifndef MBEDTLS_CHACHA20_H_
#define MBEDTLS_CHACHA20_H_
#include "third_party/mbedtls/config.h"
COSMOPOLITAN_C_START_
/* clang-format off */

#define MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA         -0x0051 /*< Invalid input parameter(s). */

typedef struct mbedtls_chacha20_context
{
    uint32_t state[16];          /*! The state (before round operations). */
    uint8_t  keystream8[64];     /*! Leftover keystream bytes. */
    size_t keystream_bytes_used; /*! Number of keystream bytes already used. */
}
mbedtls_chacha20_context;

void mbedtls_chacha20_init( mbedtls_chacha20_context * );
void mbedtls_chacha20_free( mbedtls_chacha20_context * );
int mbedtls_chacha20_setkey( mbedtls_chacha20_context *, const unsigned char[32] );
int mbedtls_chacha20_starts( mbedtls_chacha20_context *, const unsigned char[12], uint32_t );
int mbedtls_chacha20_update( mbedtls_chacha20_context *, size_t, const unsigned char *, unsigned char * );
int mbedtls_chacha20_crypt( const unsigned char[32], const unsigned char[12], uint32_t, size_t, const unsigned char *, unsigned char * );
int mbedtls_chacha20_self_test( int );

COSMOPOLITAN_C_END_
#endif /* MBEDTLS_CHACHA20_H_ */
