25#ifndef PROTOCORE_ESP_H
26#define PROTOCORE_ESP_H
36#define PC_ESP_HDR_LEN 8
38#define PC_ESP_IV_LEN 8
40#define PC_ESP_SALT_LEN 4
42#define PC_ESP_ICV_LEN 16
44#define PC_ESP_KEY_LEN 32
57size_t pc_esp_gcm_encapsulate(uint32_t spi, uint32_t seq,
const uint8_t key[PC_ESP_KEY_LEN],
58 const uint8_t salt[PC_ESP_SALT_LEN],
const uint8_t iv[PC_ESP_IV_LEN], uint8_t next_header,
59 const uint8_t *payload,
size_t payload_len, uint8_t *out,
size_t out_cap);
69bool pc_esp_gcm_decapsulate(
const uint8_t key[PC_ESP_KEY_LEN],
const uint8_t salt[PC_ESP_SALT_LEN], uint8_t *packet,
70 size_t len, uint32_t *spi_out, uint32_t *seq_out, uint8_t *next_header_out,
71 const uint8_t **payload_out,
size_t *payload_len_out);
79#define PC_ESP_REPLAY_WINDOW 64
90void pc_esp_replay_init(EspReplay *r);
100bool pc_esp_replay_check(EspReplay *r, uint32_t seq);
User-facing configuration for ProtoCore.