34#ifndef PROTOCORE_TLS_KEY_SCHEDULE_H
35#define PROTOCORE_TLS_KEY_SCHEDULE_H
38#if (PROTOCORE_ENABLE_HTTP3 || PROTOCORE_ENABLE_DTLS || PROTOCORE_ENABLE_TLS)
47#define TLS13_SECRET_MAX PROTOCORE_TLS13_SECRET_MAX
50#define TLS13_SECRET_SHA256 32
53#define TLS13_SECRET_SHA384 48
63 const char *label_prefix;
67extern const Tls13Kdf TLS13_KDF;
69extern const Tls13Kdf DTLS13_KDF;
82#define TLS13_KS_EARLY 0
83#define TLS13_KS_HANDSHAKE TLS13_SECRET_MAX
84#define TLS13_KS_MASTER (2 * TLS13_SECRET_MAX)
85#define TLS13_KS_CLIENT_HS (3 * TLS13_SECRET_MAX)
86#define TLS13_KS_SERVER_HS (4 * TLS13_SECRET_MAX)
87#define TLS13_KS_CLIENT_AP (5 * TLS13_SECRET_MAX)
88#define TLS13_KS_SERVER_AP (6 * TLS13_SECRET_MAX)
89#define TLS13_KS_EMPTY_HASH (7 * TLS13_SECRET_MAX)
90#define TLS13_KS_DERIVED (8 * TLS13_SECRET_MAX)
91#define TLS13_KS_FINISHED_KEY (9 * TLS13_SECRET_MAX)
92#define TLS13_KS_ZEROS (10 * TLS13_SECRET_MAX)
93#define TLS13_KS_VERIFY (11 * TLS13_SECRET_MAX)
94#define PROTOCORE_TLS13_KS_CAP ((size_t)PROTOCORE_TLS13_KS_TERMS * TLS13_SECRET_MAX)
95#define TLS13_KS_WORK PROTOCORE_TLS13_KS_CAP
109 Tls13KeySchedule *ks;
118 const uint8_t *secret;
120 const uint8_t *transcript_hash;
128 const uint8_t *ecdhe;
130 const uint8_t *ch_sh_hash;
131 const uint8_t *ch_sfin_hash;
137 const uint8_t *base_secret;
138 const uint8_t *transcript_hash;
148} Tls13TranscriptArgs;
182 Tls13KsDeriveArgs derive_args;
183 Tls13KsStepArgs step;
184 Tls13FinishedArgs finished_args;
185 Tls13TranscriptArgs transcript_args;
191extern Tls13KsVars Tls13KsV;
196 void (*
const expand_label)(uint8_t *work);
197 void (*
const derive_secret)(uint8_t *work);
198 void (*
const early)(uint8_t *work);
199 void (*
const handshake)(uint8_t *work);
200 void (*
const master)(uint8_t *work);
201 void (*
const finished_mac)(uint8_t *work);
202 void (*
const transcript_init)(uint8_t *work);
203 void (*
const transcript_update)(uint8_t *work);
204 void (*
const transcript_peek)(uint8_t *work);
209void protocore_tls13_ks_expand_label(uint8_t *work);
210void protocore_tls13_ks_derive_secret(uint8_t *work);
211void protocore_tls13_ks_early(uint8_t *work);
212void protocore_tls13_ks_handshake(uint8_t *work);
213void protocore_tls13_ks_master(uint8_t *work);
214void protocore_tls13_ks_finished_mac(uint8_t *work);
215void protocore_tls13_ks_transcript_init(uint8_t *work);
216void protocore_tls13_ks_transcript_update(uint8_t *work);
217void protocore_tls13_ks_transcript_peek(uint8_t *work);
223static const Tls13KsNs Tls13Ks __attribute__((unused)) = {
224 .expand_label = protocore_tls13_ks_expand_label,
225 .derive_secret = protocore_tls13_ks_derive_secret,
226 .early = protocore_tls13_ks_early,
227 .handshake = protocore_tls13_ks_handshake,
228 .master = protocore_tls13_ks_master,
229 .finished_mac = protocore_tls13_ks_finished_mac,
230 .transcript_init = protocore_tls13_ks_transcript_init,
231 .transcript_update = protocore_tls13_ks_transcript_update,
232 .transcript_peek = protocore_tls13_ks_transcript_peek,
#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