#ifndef CHACHA20POLY1305_H #define CHACHA20POLY1305_H #include #include "ecrypt_sync.h" #include "poly1305_donna.h" typedef struct { ECRYPT_ctx chacha20; poly1305_context poly1305; } chacha20poly1305_ctx; void xchacha20poly1305_init( chacha20poly1305_ctx* ctx, const uint8_t key[32], const uint8_t nonce[24]); void chacha20poly1305_encrypt(chacha20poly1305_ctx* ctx, const uint8_t* in, uint8_t* out, size_t n); void chacha20poly1305_decrypt(chacha20poly1305_ctx* ctx, const uint8_t* in, uint8_t* out, size_t n); void chacha20poly1305_auth(chacha20poly1305_ctx* ctx, const uint8_t* in, size_t n); void chacha20poly1305_finish(chacha20poly1305_ctx* ctx, uint8_t mac[16]); #endif // CHACHA20POLY1305_H