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