16#ifndef CRYPT_CHACHA20_H
17#define CRYPT_CHACHA20_H
19#include "hitls_build.h"
20#ifdef HITLS_CRYPTO_CHACHA20
23#include "crypt_types.h"
29#define CHACHA20_STATESIZE 16
30#define CHACHA20_STATEBYTES (CHACHA20_STATESIZE * sizeof(uint32_t))
31#define CHACHA20_KEYLEN 32
32#define CHACHA20_NONCELEN 12
35 uint32_t state[CHACHA20_STATESIZE];
37 uint32_t c[CHACHA20_STATESIZE];
38 uint8_t u[CHACHA20_STATEBYTES];
44int32_t CRYPT_CHACHA20_SetKey(CRYPT_CHACHA20_Ctx *ctx,
const uint8_t *key, uint32_t keyLen);
46int32_t CRYPT_CHACHA20_Update(CRYPT_CHACHA20_Ctx *ctx,
const uint8_t *in, uint8_t *out, uint32_t len);
48int32_t CRYPT_CHACHA20_Ctrl(CRYPT_CHACHA20_Ctx *ctx, int32_t opt,
void *val, uint32_t len);
50void CRYPT_CHACHA20_Clean(CRYPT_CHACHA20_Ctx *ctx);