26#ifndef DETERMINISTICESPASYNCWEBSERVER_NTS_H
27#define DETERMINISTICESPASYNCWEBSERVER_NTS_H
38 static constexpr uint16_t NTS_KE_CRITICAL = 0x8000;
39 static constexpr uint16_t NTS_KE_END_OF_MESSAGE = 0;
40 static constexpr uint16_t NTS_KE_NEXT_PROTOCOL = 1;
41 static constexpr uint16_t NTS_KE_ERROR = 2;
42 static constexpr uint16_t NTS_KE_WARNING = 3;
43 static constexpr uint16_t NTS_KE_AEAD_ALGORITHM = 4;
44 static constexpr uint16_t NTS_KE_COOKIE = 5;
45 static constexpr uint16_t NTS_KE_NTPV4_SERVER = 6;
46 static constexpr uint16_t NTS_KE_NTPV4_PORT = 7;
47 static constexpr uint16_t NTS_NEXT_PROTO_NTPV4 = 0;
48 static constexpr uint16_t NTS_AEAD_AES_SIV_CMAC_256 =
55 static constexpr uint16_t NTS_EF_UNIQUE_IDENTIFIER = 0x0104;
56 static constexpr uint16_t NTS_EF_COOKIE = 0x0204;
57 static constexpr uint16_t NTS_EF_COOKIE_PLACEHOLDER = 0x0304;
58 static constexpr uint16_t NTS_EF_AUTH_AND_ENCRYPTED = 0x0404;
62extern const char NTS_EXPORTER_LABEL[];
65size_t detws_nts_ke_record(
bool critical, uint16_t type,
const uint8_t *body,
size_t body_len, uint8_t *out,
72size_t detws_nts_ke_request(uint8_t *out,
size_t cap);
75typedef void (*DetwsNtsKeCb)(
bool critical, uint16_t type,
const uint8_t *body,
size_t body_len,
void *arg);
81bool detws_nts_ke_parse(
const uint8_t *buf,
size_t len, DetwsNtsKeCb cb,
void *arg);
91size_t detws_nts_ef(uint16_t field_type,
const uint8_t *value,
size_t value_len, uint8_t *out,
size_t cap);
94size_t detws_nts_ef_unique_id(
const uint8_t *nonce,
size_t nonce_len, uint8_t *out,
size_t cap);
97size_t detws_nts_ef_cookie(
const uint8_t *cookie,
size_t cookie_len, uint8_t *out,
size_t cap);
User-facing configuration for DeterministicESPAsyncWebServer.