26#ifndef PROTOCORE_NTS_H
27#define PROTOCORE_NTS_H
31#if PROTOCORE_ENABLE_NTS
40#define NTS_KE_CRITICAL 0x8000
41#define NTS_KE_END_OF_MESSAGE 0
42#define NTS_KE_NEXT_PROTOCOL 1
44#define NTS_KE_WARNING 3
45#define NTS_KE_AEAD_ALGORITHM 4
46#define NTS_KE_COOKIE 5
47#define NTS_KE_NTPV4_SERVER 6
48#define NTS_KE_NTPV4_PORT 7
49#define NTS_NEXT_PROTO_NTPV4 0
50#define NTS_AEAD_AES_SIV_CMAC_256 15
53#define NTS_EF_UNIQUE_IDENTIFIER 0x0104
54#define NTS_EF_COOKIE 0x0204
55#define NTS_EF_COOKIE_PLACEHOLDER 0x0304
56#define NTS_EF_AUTH_AND_ENCRYPTED 0x0404
59typedef void (*protocore_nts_ke_cb)(
proto_bool critical, uint16_t type,
const uint8_t *body,
size_t body_len,
85 protocore_nts_ke_cb cb;
102 const uint8_t *nonce;
111 const uint8_t *cookie;
118extern const char NTS_EXPORTER_LABEL[];
156 NtsKeRecordArgs ke_record_args;
157 NtsKeRequestArgs ke_request_args;
158 NtsKeParseArgs ke_parse_args;
160 NtsEfUniqueIdArgs ef_unique_id_args;
161 NtsEfCookieArgs ef_cookie_args;
172 void (*
const ke_record)(uint8_t *work);
173 void (*
const ke_request)(uint8_t *work);
174 void (*
const ke_parse)(uint8_t *work);
175 void (*
const ef)(uint8_t *work);
176 void (*
const ef_unique_id)(uint8_t *work);
177 void (*
const ef_cookie)(uint8_t *work);
182void protocore_nts_ke_record(uint8_t *work);
183void protocore_nts_ke_request(uint8_t *work);
184void protocore_nts_ke_parse(uint8_t *work);
185void protocore_nts_ef(uint8_t *work);
186void protocore_nts_ef_unique_id(uint8_t *work);
187void protocore_nts_ef_cookie(uint8_t *work);
193static const NtsNs Nts __attribute__((unused)) = {
194 .ke_record = protocore_nts_ke_record,
195 .ke_request = protocore_nts_ke_request,
196 .ke_parse = protocore_nts_ke_parse,
197 .ef = protocore_nts_ef,
198 .ef_unique_id = protocore_nts_ef_unique_id,
199 .ef_cookie = protocore_nts_ef_cookie,
#define PROTOCORE_BEGIN_DECLS
Give a header's declarations C linkage, so their symbol names carry no parameter types.
_Bool proto_bool
The truth value.
#define PROTOCORE_END_DECLS