24#ifndef DETERMINISTICESPASYNCWEBSERVER_SSH_CHACHAPOLY_H
25#define DETERMINISTICESPASYNCWEBSERVER_SSH_CHACHAPOLY_H
30#define SSH_CHACHAPOLY_KEY_LEN 64
31#define SSH_CHACHAPOLY_TAG_LEN 16
32#define SSH_CHACHAPOLY_AAD_LEN 4
48 const uint8_t *src, uint32_t payload_len);
57 const uint8_t *src, uint32_t payload_len);
void ssh_chachapoly_encrypt(const uint8_t key[SSH_CHACHAPOLY_KEY_LEN], uint32_t seqnr, uint8_t *dest, const uint8_t *src, uint32_t payload_len)
Encrypt+authenticate one packet.
#define SSH_CHACHAPOLY_AAD_LEN
the encrypted packet-length field
uint32_t ssh_chachapoly_get_length(const uint8_t key[SSH_CHACHAPOLY_KEY_LEN], uint32_t seqnr, const uint8_t enc_len[SSH_CHACHAPOLY_AAD_LEN])
Decrypt just the 4-byte length field to learn the packet length before reading the body.
#define SSH_CHACHAPOLY_KEY_LEN
two 256-bit ChaCha20 keys
bool ssh_chachapoly_decrypt(const uint8_t key[SSH_CHACHAPOLY_KEY_LEN], uint32_t seqnr, uint8_t *dest, const uint8_t *src, uint32_t payload_len)
Verify+decrypt one packet.