/src/BearSSL/inc/bearssl_ssl.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * Copyright (c) 2016 Thomas Pornin <pornin@bolet.org> |
3 | | * |
4 | | * Permission is hereby granted, free of charge, to any person obtaining |
5 | | * a copy of this software and associated documentation files (the |
6 | | * "Software"), to deal in the Software without restriction, including |
7 | | * without limitation the rights to use, copy, modify, merge, publish, |
8 | | * distribute, sublicense, and/or sell copies of the Software, and to |
9 | | * permit persons to whom the Software is furnished to do so, subject to |
10 | | * the following conditions: |
11 | | * |
12 | | * The above copyright notice and this permission notice shall be |
13 | | * included in all copies or substantial portions of the Software. |
14 | | * |
15 | | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
16 | | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
17 | | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
18 | | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS |
19 | | * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
20 | | * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
21 | | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
22 | | * SOFTWARE. |
23 | | */ |
24 | | |
25 | | #ifndef BR_BEARSSL_SSL_H__ |
26 | | #define BR_BEARSSL_SSL_H__ |
27 | | |
28 | | #include <stddef.h> |
29 | | #include <stdint.h> |
30 | | |
31 | | #include "bearssl_block.h" |
32 | | #include "bearssl_hash.h" |
33 | | #include "bearssl_hmac.h" |
34 | | #include "bearssl_prf.h" |
35 | | #include "bearssl_rand.h" |
36 | | #include "bearssl_x509.h" |
37 | | |
38 | | #ifdef __cplusplus |
39 | | extern "C" { |
40 | | #endif |
41 | | |
42 | | /** \file bearssl_ssl.h |
43 | | * |
44 | | * # SSL |
45 | | * |
46 | | * For an overview of the SSL/TLS API, see [the BearSSL Web |
47 | | * site](https://www.bearssl.org/api1.html). |
48 | | * |
49 | | * The `BR_TLS_*` constants correspond to the standard cipher suites and |
50 | | * their values in the [IANA |
51 | | * registry](http://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-4). |
52 | | * |
53 | | * The `BR_ALERT_*` constants are for standard TLS alert messages. When |
54 | | * a fatal alert message is sent of received, then the SSL engine context |
55 | | * status is set to the sum of that alert value (an integer in the 0..255 |
56 | | * range) and a fixed offset (`BR_ERR_SEND_FATAL_ALERT` for a sent alert, |
57 | | * `BR_ERR_RECV_FATAL_ALERT` for a received alert). |
58 | | */ |
59 | | |
60 | | /** \brief Optimal input buffer size. */ |
61 | | #define BR_SSL_BUFSIZE_INPUT (16384 + 325) |
62 | | |
63 | | /** \brief Optimal output buffer size. */ |
64 | | #define BR_SSL_BUFSIZE_OUTPUT (16384 + 85) |
65 | | |
66 | | /** \brief Optimal buffer size for monodirectional engine |
67 | | (shared input/output buffer). */ |
68 | | #define BR_SSL_BUFSIZE_MONO BR_SSL_BUFSIZE_INPUT |
69 | | |
70 | | /** \brief Optimal buffer size for bidirectional engine |
71 | | (single buffer split into two separate input/output buffers). */ |
72 | | #define BR_SSL_BUFSIZE_BIDI (BR_SSL_BUFSIZE_INPUT + BR_SSL_BUFSIZE_OUTPUT) |
73 | | |
74 | | /* |
75 | | * Constants for known SSL/TLS protocol versions (SSL 3.0, TLS 1.0, TLS 1.1 |
76 | | * and TLS 1.2). Note that though there is a constant for SSL 3.0, that |
77 | | * protocol version is not actually supported. |
78 | | */ |
79 | | |
80 | | /** \brief Protocol version: SSL 3.0 (unsupported). */ |
81 | | #define BR_SSL30 0x0300 |
82 | | /** \brief Protocol version: TLS 1.0. */ |
83 | | #define BR_TLS10 0x0301 |
84 | | /** \brief Protocol version: TLS 1.1. */ |
85 | | #define BR_TLS11 0x0302 |
86 | | /** \brief Protocol version: TLS 1.2. */ |
87 | | #define BR_TLS12 0x0303 |
88 | | |
89 | | /* |
90 | | * Error constants. They are used to report the reason why a context has |
91 | | * been marked as failed. |
92 | | * |
93 | | * Implementation note: SSL-level error codes should be in the 1..31 |
94 | | * range. The 32..63 range is for certificate decoding and validation |
95 | | * errors. Received fatal alerts imply an error code in the 256..511 range. |
96 | | */ |
97 | | |
98 | | /** \brief SSL status: no error so far (0). */ |
99 | | #define BR_ERR_OK 0 |
100 | | |
101 | | /** \brief SSL status: caller-provided parameter is incorrect. */ |
102 | | #define BR_ERR_BAD_PARAM 1 |
103 | | |
104 | | /** \brief SSL status: operation requested by the caller cannot be applied |
105 | | with the current context state (e.g. reading data while outgoing data |
106 | | is waiting to be sent). */ |
107 | | #define BR_ERR_BAD_STATE 2 |
108 | | |
109 | | /** \brief SSL status: incoming protocol or record version is unsupported. */ |
110 | | #define BR_ERR_UNSUPPORTED_VERSION 3 |
111 | | |
112 | | /** \brief SSL status: incoming record version does not match the expected |
113 | | version. */ |
114 | | #define BR_ERR_BAD_VERSION 4 |
115 | | |
116 | | /** \brief SSL status: incoming record length is invalid. */ |
117 | | #define BR_ERR_BAD_LENGTH 5 |
118 | | |
119 | | /** \brief SSL status: incoming record is too large to be processed, or |
120 | | buffer is too small for the handshake message to send. */ |
121 | | #define BR_ERR_TOO_LARGE 6 |
122 | | |
123 | | /** \brief SSL status: decryption found an invalid padding, or the record |
124 | | MAC is not correct. */ |
125 | | #define BR_ERR_BAD_MAC 7 |
126 | | |
127 | | /** \brief SSL status: no initial entropy was provided, and none can be |
128 | | obtained from the OS. */ |
129 | | #define BR_ERR_NO_RANDOM 8 |
130 | | |
131 | | /** \brief SSL status: incoming record type is unknown. */ |
132 | | #define BR_ERR_UNKNOWN_TYPE 9 |
133 | | |
134 | | /** \brief SSL status: incoming record or message has wrong type with |
135 | | regards to the current engine state. */ |
136 | | #define BR_ERR_UNEXPECTED 10 |
137 | | |
138 | | /** \brief SSL status: ChangeCipherSpec message from the peer has invalid |
139 | | contents. */ |
140 | | #define BR_ERR_BAD_CCS 12 |
141 | | |
142 | | /** \brief SSL status: alert message from the peer has invalid contents |
143 | | (odd length). */ |
144 | | #define BR_ERR_BAD_ALERT 13 |
145 | | |
146 | | /** \brief SSL status: incoming handshake message decoding failed. */ |
147 | | #define BR_ERR_BAD_HANDSHAKE 14 |
148 | | |
149 | | /** \brief SSL status: ServerHello contains a session ID which is larger |
150 | | than 32 bytes. */ |
151 | | #define BR_ERR_OVERSIZED_ID 15 |
152 | | |
153 | | /** \brief SSL status: server wants to use a cipher suite that we did |
154 | | not claim to support. This is also reported if we tried to advertise |
155 | | a cipher suite that we do not support. */ |
156 | | #define BR_ERR_BAD_CIPHER_SUITE 16 |
157 | | |
158 | | /** \brief SSL status: server wants to use a compression that we did not |
159 | | claim to support. */ |
160 | | #define BR_ERR_BAD_COMPRESSION 17 |
161 | | |
162 | | /** \brief SSL status: server's max fragment length does not match |
163 | | client's. */ |
164 | | #define BR_ERR_BAD_FRAGLEN 18 |
165 | | |
166 | | /** \brief SSL status: secure renegotiation failed. */ |
167 | | #define BR_ERR_BAD_SECRENEG 19 |
168 | | |
169 | | /** \brief SSL status: server sent an extension type that we did not |
170 | | announce, or used the same extension type several times in a single |
171 | | ServerHello. */ |
172 | | #define BR_ERR_EXTRA_EXTENSION 20 |
173 | | |
174 | | /** \brief SSL status: invalid Server Name Indication contents (when |
175 | | used by the server, this extension shall be empty). */ |
176 | | #define BR_ERR_BAD_SNI 21 |
177 | | |
178 | | /** \brief SSL status: invalid ServerHelloDone from the server (length |
179 | | is not 0). */ |
180 | | #define BR_ERR_BAD_HELLO_DONE 22 |
181 | | |
182 | | /** \brief SSL status: internal limit exceeded (e.g. server's public key |
183 | | is too large). */ |
184 | | #define BR_ERR_LIMIT_EXCEEDED 23 |
185 | | |
186 | | /** \brief SSL status: Finished message from peer does not match the |
187 | | expected value. */ |
188 | | #define BR_ERR_BAD_FINISHED 24 |
189 | | |
190 | | /** \brief SSL status: session resumption attempt with distinct version |
191 | | or cipher suite. */ |
192 | | #define BR_ERR_RESUME_MISMATCH 25 |
193 | | |
194 | | /** \brief SSL status: unsupported or invalid algorithm (ECDHE curve, |
195 | | signature algorithm, hash function). */ |
196 | | #define BR_ERR_INVALID_ALGORITHM 26 |
197 | | |
198 | | /** \brief SSL status: invalid signature (on ServerKeyExchange from |
199 | | server, or in CertificateVerify from client). */ |
200 | | #define BR_ERR_BAD_SIGNATURE 27 |
201 | | |
202 | | /** \brief SSL status: peer's public key does not have the proper type |
203 | | or is not allowed for requested operation. */ |
204 | | #define BR_ERR_WRONG_KEY_USAGE 28 |
205 | | |
206 | | /** \brief SSL status: client did not send a certificate upon request, |
207 | | or the client certificate could not be validated. */ |
208 | | #define BR_ERR_NO_CLIENT_AUTH 29 |
209 | | |
210 | | /** \brief SSL status: I/O error or premature close on underlying |
211 | | transport stream. This error code is set only by the simplified |
212 | | I/O API ("br_sslio_*"). */ |
213 | | #define BR_ERR_IO 31 |
214 | | |
215 | | /** \brief SSL status: base value for a received fatal alert. |
216 | | |
217 | | When a fatal alert is received from the peer, the alert value |
218 | | is added to this constant. */ |
219 | | #define BR_ERR_RECV_FATAL_ALERT 256 |
220 | | |
221 | | /** \brief SSL status: base value for a sent fatal alert. |
222 | | |
223 | | When a fatal alert is sent to the peer, the alert value is added |
224 | | to this constant. */ |
225 | | #define BR_ERR_SEND_FATAL_ALERT 512 |
226 | | |
227 | | /* ===================================================================== */ |
228 | | |
229 | | /** |
230 | | * \brief Decryption engine for SSL. |
231 | | * |
232 | | * When processing incoming records, the SSL engine will use a decryption |
233 | | * engine that uses a specific context structure, and has a set of |
234 | | * methods (a vtable) that follows this template. |
235 | | * |
236 | | * The decryption engine is responsible for applying decryption, verifying |
237 | | * MAC, and keeping track of the record sequence number. |
238 | | */ |
239 | | typedef struct br_sslrec_in_class_ br_sslrec_in_class; |
240 | | struct br_sslrec_in_class_ { |
241 | | /** |
242 | | * \brief Context size (in bytes). |
243 | | */ |
244 | | size_t context_size; |
245 | | |
246 | | /** |
247 | | * \brief Test validity of the incoming record length. |
248 | | * |
249 | | * This function returns 1 if the announced length for an |
250 | | * incoming record is valid, 0 otherwise, |
251 | | * |
252 | | * \param ctx decryption engine context. |
253 | | * \param record_len incoming record length. |
254 | | * \return 1 of a valid length, 0 otherwise. |
255 | | */ |
256 | | int (*check_length)(const br_sslrec_in_class *const *ctx, |
257 | | size_t record_len); |
258 | | |
259 | | /** |
260 | | * \brief Decrypt the incoming record. |
261 | | * |
262 | | * This function may assume that the record length is valid |
263 | | * (it has been previously tested with `check_length()`). |
264 | | * Decryption is done in place; `*len` is updated with the |
265 | | * cleartext length, and the address of the first plaintext |
266 | | * byte is returned. If the record is correct but empty, then |
267 | | * `*len` is set to 0 and a non-`NULL` pointer is returned. |
268 | | * |
269 | | * On decryption/MAC error, `NULL` is returned. |
270 | | * |
271 | | * \param ctx decryption engine context. |
272 | | * \param record_type record type (23 for application data, etc). |
273 | | * \param version record version. |
274 | | * \param payload address of encrypted payload. |
275 | | * \param len pointer to payload length (updated). |
276 | | * \return pointer to plaintext, or `NULL` on error. |
277 | | */ |
278 | | unsigned char *(*decrypt)(const br_sslrec_in_class **ctx, |
279 | | int record_type, unsigned version, |
280 | | void *payload, size_t *len); |
281 | | }; |
282 | | |
283 | | /** |
284 | | * \brief Encryption engine for SSL. |
285 | | * |
286 | | * When building outgoing records, the SSL engine will use an encryption |
287 | | * engine that uses a specific context structure, and has a set of |
288 | | * methods (a vtable) that follows this template. |
289 | | * |
290 | | * The encryption engine is responsible for applying encryption and MAC, |
291 | | * and keeping track of the record sequence number. |
292 | | */ |
293 | | typedef struct br_sslrec_out_class_ br_sslrec_out_class; |
294 | | struct br_sslrec_out_class_ { |
295 | | /** |
296 | | * \brief Context size (in bytes). |
297 | | */ |
298 | | size_t context_size; |
299 | | |
300 | | /** |
301 | | * \brief Compute maximum plaintext sizes and offsets. |
302 | | * |
303 | | * When this function is called, the `*start` and `*end` |
304 | | * values contain offsets designating the free area in the |
305 | | * outgoing buffer for plaintext data; that free area is |
306 | | * preceded by a 5-byte space which will receive the record |
307 | | * header. |
308 | | * |
309 | | * The `max_plaintext()` function is responsible for adjusting |
310 | | * both `*start` and `*end` to make room for any record-specific |
311 | | * header, MAC, padding, and possible split. |
312 | | * |
313 | | * \param ctx encryption engine context. |
314 | | * \param start pointer to start of plaintext offset (updated). |
315 | | * \param end pointer to start of plaintext offset (updated). |
316 | | */ |
317 | | void (*max_plaintext)(const br_sslrec_out_class *const *ctx, |
318 | | size_t *start, size_t *end); |
319 | | |
320 | | /** |
321 | | * \brief Perform record encryption. |
322 | | * |
323 | | * This function encrypts the record. The plaintext address and |
324 | | * length are provided. Returned value is the start of the |
325 | | * encrypted record (or sequence of records, if a split was |
326 | | * performed), _including_ the 5-byte header, and `*len` is |
327 | | * adjusted to the total size of the record(s), there again |
328 | | * including the header(s). |
329 | | * |
330 | | * \param ctx decryption engine context. |
331 | | * \param record_type record type (23 for application data, etc). |
332 | | * \param version record version. |
333 | | * \param plaintext address of plaintext. |
334 | | * \param len pointer to plaintext length (updated). |
335 | | * \return pointer to start of built record. |
336 | | */ |
337 | | unsigned char *(*encrypt)(const br_sslrec_out_class **ctx, |
338 | | int record_type, unsigned version, |
339 | | void *plaintext, size_t *len); |
340 | | }; |
341 | | |
342 | | /** |
343 | | * \brief Context for a no-encryption engine. |
344 | | * |
345 | | * The no-encryption engine processes outgoing records during the initial |
346 | | * handshake, before encryption is applied. |
347 | | */ |
348 | | typedef struct { |
349 | | /** \brief No-encryption engine vtable. */ |
350 | | const br_sslrec_out_class *vtable; |
351 | | } br_sslrec_out_clear_context; |
352 | | |
353 | | /** \brief Static, constant vtable for the no-encryption engine. */ |
354 | | extern const br_sslrec_out_class br_sslrec_out_clear_vtable; |
355 | | |
356 | | /* ===================================================================== */ |
357 | | |
358 | | /** |
359 | | * \brief Record decryption engine class, for CBC mode. |
360 | | * |
361 | | * This class type extends the decryption engine class with an |
362 | | * initialisation method that receives the parameters needed |
363 | | * for CBC processing: block cipher implementation, block cipher key, |
364 | | * HMAC parameters (hash function, key, MAC length), and IV. If the |
365 | | * IV is `NULL`, then a per-record IV will be used (TLS 1.1+). |
366 | | */ |
367 | | typedef struct br_sslrec_in_cbc_class_ br_sslrec_in_cbc_class; |
368 | | struct br_sslrec_in_cbc_class_ { |
369 | | /** |
370 | | * \brief Superclass, as first vtable field. |
371 | | */ |
372 | | br_sslrec_in_class inner; |
373 | | |
374 | | /** |
375 | | * \brief Engine initialisation method. |
376 | | * |
377 | | * This method sets the vtable field in the context. |
378 | | * |
379 | | * \param ctx context to initialise. |
380 | | * \param bc_impl block cipher implementation (CBC decryption). |
381 | | * \param bc_key block cipher key. |
382 | | * \param bc_key_len block cipher key length (in bytes). |
383 | | * \param dig_impl hash function for HMAC. |
384 | | * \param mac_key HMAC key. |
385 | | * \param mac_key_len HMAC key length (in bytes). |
386 | | * \param mac_out_len HMAC output length (in bytes). |
387 | | * \param iv initial IV (or `NULL`). |
388 | | */ |
389 | | void (*init)(const br_sslrec_in_cbc_class **ctx, |
390 | | const br_block_cbcdec_class *bc_impl, |
391 | | const void *bc_key, size_t bc_key_len, |
392 | | const br_hash_class *dig_impl, |
393 | | const void *mac_key, size_t mac_key_len, size_t mac_out_len, |
394 | | const void *iv); |
395 | | }; |
396 | | |
397 | | /** |
398 | | * \brief Record encryption engine class, for CBC mode. |
399 | | * |
400 | | * This class type extends the encryption engine class with an |
401 | | * initialisation method that receives the parameters needed |
402 | | * for CBC processing: block cipher implementation, block cipher key, |
403 | | * HMAC parameters (hash function, key, MAC length), and IV. If the |
404 | | * IV is `NULL`, then a per-record IV will be used (TLS 1.1+). |
405 | | */ |
406 | | typedef struct br_sslrec_out_cbc_class_ br_sslrec_out_cbc_class; |
407 | | struct br_sslrec_out_cbc_class_ { |
408 | | /** |
409 | | * \brief Superclass, as first vtable field. |
410 | | */ |
411 | | br_sslrec_out_class inner; |
412 | | |
413 | | /** |
414 | | * \brief Engine initialisation method. |
415 | | * |
416 | | * This method sets the vtable field in the context. |
417 | | * |
418 | | * \param ctx context to initialise. |
419 | | * \param bc_impl block cipher implementation (CBC encryption). |
420 | | * \param bc_key block cipher key. |
421 | | * \param bc_key_len block cipher key length (in bytes). |
422 | | * \param dig_impl hash function for HMAC. |
423 | | * \param mac_key HMAC key. |
424 | | * \param mac_key_len HMAC key length (in bytes). |
425 | | * \param mac_out_len HMAC output length (in bytes). |
426 | | * \param iv initial IV (or `NULL`). |
427 | | */ |
428 | | void (*init)(const br_sslrec_out_cbc_class **ctx, |
429 | | const br_block_cbcenc_class *bc_impl, |
430 | | const void *bc_key, size_t bc_key_len, |
431 | | const br_hash_class *dig_impl, |
432 | | const void *mac_key, size_t mac_key_len, size_t mac_out_len, |
433 | | const void *iv); |
434 | | }; |
435 | | |
436 | | /** |
437 | | * \brief Context structure for decrypting incoming records with |
438 | | * CBC + HMAC. |
439 | | * |
440 | | * The first field points to the vtable. The other fields are opaque |
441 | | * and shall not be accessed directly. |
442 | | */ |
443 | | typedef struct { |
444 | | /** \brief Pointer to vtable. */ |
445 | | const br_sslrec_in_cbc_class *vtable; |
446 | | #ifndef BR_DOXYGEN_IGNORE |
447 | | uint64_t seq; |
448 | | union { |
449 | | const br_block_cbcdec_class *vtable; |
450 | | br_aes_gen_cbcdec_keys aes; |
451 | | br_des_gen_cbcdec_keys des; |
452 | | } bc; |
453 | | br_hmac_key_context mac; |
454 | | size_t mac_len; |
455 | | unsigned char iv[16]; |
456 | | int explicit_IV; |
457 | | #endif |
458 | | } br_sslrec_in_cbc_context; |
459 | | |
460 | | /** |
461 | | * \brief Static, constant vtable for record decryption with CBC. |
462 | | */ |
463 | | extern const br_sslrec_in_cbc_class br_sslrec_in_cbc_vtable; |
464 | | |
465 | | /** |
466 | | * \brief Context structure for encrypting outgoing records with |
467 | | * CBC + HMAC. |
468 | | * |
469 | | * The first field points to the vtable. The other fields are opaque |
470 | | * and shall not be accessed directly. |
471 | | */ |
472 | | typedef struct { |
473 | | /** \brief Pointer to vtable. */ |
474 | | const br_sslrec_out_cbc_class *vtable; |
475 | | #ifndef BR_DOXYGEN_IGNORE |
476 | | uint64_t seq; |
477 | | union { |
478 | | const br_block_cbcenc_class *vtable; |
479 | | br_aes_gen_cbcenc_keys aes; |
480 | | br_des_gen_cbcenc_keys des; |
481 | | } bc; |
482 | | br_hmac_key_context mac; |
483 | | size_t mac_len; |
484 | | unsigned char iv[16]; |
485 | | int explicit_IV; |
486 | | #endif |
487 | | } br_sslrec_out_cbc_context; |
488 | | |
489 | | /** |
490 | | * \brief Static, constant vtable for record encryption with CBC. |
491 | | */ |
492 | | extern const br_sslrec_out_cbc_class br_sslrec_out_cbc_vtable; |
493 | | |
494 | | /* ===================================================================== */ |
495 | | |
496 | | /** |
497 | | * \brief Record decryption engine class, for GCM mode. |
498 | | * |
499 | | * This class type extends the decryption engine class with an |
500 | | * initialisation method that receives the parameters needed |
501 | | * for GCM processing: block cipher implementation, block cipher key, |
502 | | * GHASH implementation, and 4-byte IV. |
503 | | */ |
504 | | typedef struct br_sslrec_in_gcm_class_ br_sslrec_in_gcm_class; |
505 | | struct br_sslrec_in_gcm_class_ { |
506 | | /** |
507 | | * \brief Superclass, as first vtable field. |
508 | | */ |
509 | | br_sslrec_in_class inner; |
510 | | |
511 | | /** |
512 | | * \brief Engine initialisation method. |
513 | | * |
514 | | * This method sets the vtable field in the context. |
515 | | * |
516 | | * \param ctx context to initialise. |
517 | | * \param bc_impl block cipher implementation (CTR). |
518 | | * \param key block cipher key. |
519 | | * \param key_len block cipher key length (in bytes). |
520 | | * \param gh_impl GHASH implementation. |
521 | | * \param iv static IV (4 bytes). |
522 | | */ |
523 | | void (*init)(const br_sslrec_in_gcm_class **ctx, |
524 | | const br_block_ctr_class *bc_impl, |
525 | | const void *key, size_t key_len, |
526 | | br_ghash gh_impl, |
527 | | const void *iv); |
528 | | }; |
529 | | |
530 | | /** |
531 | | * \brief Record encryption engine class, for GCM mode. |
532 | | * |
533 | | * This class type extends the encryption engine class with an |
534 | | * initialisation method that receives the parameters needed |
535 | | * for GCM processing: block cipher implementation, block cipher key, |
536 | | * GHASH implementation, and 4-byte IV. |
537 | | */ |
538 | | typedef struct br_sslrec_out_gcm_class_ br_sslrec_out_gcm_class; |
539 | | struct br_sslrec_out_gcm_class_ { |
540 | | /** |
541 | | * \brief Superclass, as first vtable field. |
542 | | */ |
543 | | br_sslrec_out_class inner; |
544 | | |
545 | | /** |
546 | | * \brief Engine initialisation method. |
547 | | * |
548 | | * This method sets the vtable field in the context. |
549 | | * |
550 | | * \param ctx context to initialise. |
551 | | * \param bc_impl block cipher implementation (CTR). |
552 | | * \param key block cipher key. |
553 | | * \param key_len block cipher key length (in bytes). |
554 | | * \param gh_impl GHASH implementation. |
555 | | * \param iv static IV (4 bytes). |
556 | | */ |
557 | | void (*init)(const br_sslrec_out_gcm_class **ctx, |
558 | | const br_block_ctr_class *bc_impl, |
559 | | const void *key, size_t key_len, |
560 | | br_ghash gh_impl, |
561 | | const void *iv); |
562 | | }; |
563 | | |
564 | | /** |
565 | | * \brief Context structure for processing records with GCM. |
566 | | * |
567 | | * The same context structure is used for encrypting and decrypting. |
568 | | * |
569 | | * The first field points to the vtable. The other fields are opaque |
570 | | * and shall not be accessed directly. |
571 | | */ |
572 | | typedef struct { |
573 | | /** \brief Pointer to vtable. */ |
574 | | union { |
575 | | const void *gen; |
576 | | const br_sslrec_in_gcm_class *in; |
577 | | const br_sslrec_out_gcm_class *out; |
578 | | } vtable; |
579 | | #ifndef BR_DOXYGEN_IGNORE |
580 | | uint64_t seq; |
581 | | union { |
582 | | const br_block_ctr_class *vtable; |
583 | | br_aes_gen_ctr_keys aes; |
584 | | } bc; |
585 | | br_ghash gh; |
586 | | unsigned char iv[4]; |
587 | | unsigned char h[16]; |
588 | | #endif |
589 | | } br_sslrec_gcm_context; |
590 | | |
591 | | /** |
592 | | * \brief Static, constant vtable for record decryption with GCM. |
593 | | */ |
594 | | extern const br_sslrec_in_gcm_class br_sslrec_in_gcm_vtable; |
595 | | |
596 | | /** |
597 | | * \brief Static, constant vtable for record encryption with GCM. |
598 | | */ |
599 | | extern const br_sslrec_out_gcm_class br_sslrec_out_gcm_vtable; |
600 | | |
601 | | /* ===================================================================== */ |
602 | | |
603 | | /** |
604 | | * \brief Record decryption engine class, for ChaCha20+Poly1305. |
605 | | * |
606 | | * This class type extends the decryption engine class with an |
607 | | * initialisation method that receives the parameters needed |
608 | | * for ChaCha20+Poly1305 processing: ChaCha20 implementation, |
609 | | * Poly1305 implementation, key, and 12-byte IV. |
610 | | */ |
611 | | typedef struct br_sslrec_in_chapol_class_ br_sslrec_in_chapol_class; |
612 | | struct br_sslrec_in_chapol_class_ { |
613 | | /** |
614 | | * \brief Superclass, as first vtable field. |
615 | | */ |
616 | | br_sslrec_in_class inner; |
617 | | |
618 | | /** |
619 | | * \brief Engine initialisation method. |
620 | | * |
621 | | * This method sets the vtable field in the context. |
622 | | * |
623 | | * \param ctx context to initialise. |
624 | | * \param ichacha ChaCha20 implementation. |
625 | | * \param ipoly Poly1305 implementation. |
626 | | * \param key secret key (32 bytes). |
627 | | * \param iv static IV (12 bytes). |
628 | | */ |
629 | | void (*init)(const br_sslrec_in_chapol_class **ctx, |
630 | | br_chacha20_run ichacha, |
631 | | br_poly1305_run ipoly, |
632 | | const void *key, const void *iv); |
633 | | }; |
634 | | |
635 | | /** |
636 | | * \brief Record encryption engine class, for ChaCha20+Poly1305. |
637 | | * |
638 | | * This class type extends the encryption engine class with an |
639 | | * initialisation method that receives the parameters needed |
640 | | * for ChaCha20+Poly1305 processing: ChaCha20 implementation, |
641 | | * Poly1305 implementation, key, and 12-byte IV. |
642 | | */ |
643 | | typedef struct br_sslrec_out_chapol_class_ br_sslrec_out_chapol_class; |
644 | | struct br_sslrec_out_chapol_class_ { |
645 | | /** |
646 | | * \brief Superclass, as first vtable field. |
647 | | */ |
648 | | br_sslrec_out_class inner; |
649 | | |
650 | | /** |
651 | | * \brief Engine initialisation method. |
652 | | * |
653 | | * This method sets the vtable field in the context. |
654 | | * |
655 | | * \param ctx context to initialise. |
656 | | * \param ichacha ChaCha20 implementation. |
657 | | * \param ipoly Poly1305 implementation. |
658 | | * \param key secret key (32 bytes). |
659 | | * \param iv static IV (12 bytes). |
660 | | */ |
661 | | void (*init)(const br_sslrec_out_chapol_class **ctx, |
662 | | br_chacha20_run ichacha, |
663 | | br_poly1305_run ipoly, |
664 | | const void *key, const void *iv); |
665 | | }; |
666 | | |
667 | | /** |
668 | | * \brief Context structure for processing records with ChaCha20+Poly1305. |
669 | | * |
670 | | * The same context structure is used for encrypting and decrypting. |
671 | | * |
672 | | * The first field points to the vtable. The other fields are opaque |
673 | | * and shall not be accessed directly. |
674 | | */ |
675 | | typedef struct { |
676 | | /** \brief Pointer to vtable. */ |
677 | | union { |
678 | | const void *gen; |
679 | | const br_sslrec_in_chapol_class *in; |
680 | | const br_sslrec_out_chapol_class *out; |
681 | | } vtable; |
682 | | #ifndef BR_DOXYGEN_IGNORE |
683 | | uint64_t seq; |
684 | | unsigned char key[32]; |
685 | | unsigned char iv[12]; |
686 | | br_chacha20_run ichacha; |
687 | | br_poly1305_run ipoly; |
688 | | #endif |
689 | | } br_sslrec_chapol_context; |
690 | | |
691 | | /** |
692 | | * \brief Static, constant vtable for record decryption with ChaCha20+Poly1305. |
693 | | */ |
694 | | extern const br_sslrec_in_chapol_class br_sslrec_in_chapol_vtable; |
695 | | |
696 | | /** |
697 | | * \brief Static, constant vtable for record encryption with ChaCha20+Poly1305. |
698 | | */ |
699 | | extern const br_sslrec_out_chapol_class br_sslrec_out_chapol_vtable; |
700 | | |
701 | | /* ===================================================================== */ |
702 | | |
703 | | /** |
704 | | * \brief Record decryption engine class, for CCM mode. |
705 | | * |
706 | | * This class type extends the decryption engine class with an |
707 | | * initialisation method that receives the parameters needed |
708 | | * for CCM processing: block cipher implementation, block cipher key, |
709 | | * and 4-byte IV. |
710 | | */ |
711 | | typedef struct br_sslrec_in_ccm_class_ br_sslrec_in_ccm_class; |
712 | | struct br_sslrec_in_ccm_class_ { |
713 | | /** |
714 | | * \brief Superclass, as first vtable field. |
715 | | */ |
716 | | br_sslrec_in_class inner; |
717 | | |
718 | | /** |
719 | | * \brief Engine initialisation method. |
720 | | * |
721 | | * This method sets the vtable field in the context. |
722 | | * |
723 | | * \param ctx context to initialise. |
724 | | * \param bc_impl block cipher implementation (CTR+CBC). |
725 | | * \param key block cipher key. |
726 | | * \param key_len block cipher key length (in bytes). |
727 | | * \param iv static IV (4 bytes). |
728 | | * \param tag_len tag length (in bytes) |
729 | | */ |
730 | | void (*init)(const br_sslrec_in_ccm_class **ctx, |
731 | | const br_block_ctrcbc_class *bc_impl, |
732 | | const void *key, size_t key_len, |
733 | | const void *iv, size_t tag_len); |
734 | | }; |
735 | | |
736 | | /** |
737 | | * \brief Record encryption engine class, for CCM mode. |
738 | | * |
739 | | * This class type extends the encryption engine class with an |
740 | | * initialisation method that receives the parameters needed |
741 | | * for CCM processing: block cipher implementation, block cipher key, |
742 | | * and 4-byte IV. |
743 | | */ |
744 | | typedef struct br_sslrec_out_ccm_class_ br_sslrec_out_ccm_class; |
745 | | struct br_sslrec_out_ccm_class_ { |
746 | | /** |
747 | | * \brief Superclass, as first vtable field. |
748 | | */ |
749 | | br_sslrec_out_class inner; |
750 | | |
751 | | /** |
752 | | * \brief Engine initialisation method. |
753 | | * |
754 | | * This method sets the vtable field in the context. |
755 | | * |
756 | | * \param ctx context to initialise. |
757 | | * \param bc_impl block cipher implementation (CTR+CBC). |
758 | | * \param key block cipher key. |
759 | | * \param key_len block cipher key length (in bytes). |
760 | | * \param iv static IV (4 bytes). |
761 | | * \param tag_len tag length (in bytes) |
762 | | */ |
763 | | void (*init)(const br_sslrec_out_ccm_class **ctx, |
764 | | const br_block_ctrcbc_class *bc_impl, |
765 | | const void *key, size_t key_len, |
766 | | const void *iv, size_t tag_len); |
767 | | }; |
768 | | |
769 | | /** |
770 | | * \brief Context structure for processing records with CCM. |
771 | | * |
772 | | * The same context structure is used for encrypting and decrypting. |
773 | | * |
774 | | * The first field points to the vtable. The other fields are opaque |
775 | | * and shall not be accessed directly. |
776 | | */ |
777 | | typedef struct { |
778 | | /** \brief Pointer to vtable. */ |
779 | | union { |
780 | | const void *gen; |
781 | | const br_sslrec_in_ccm_class *in; |
782 | | const br_sslrec_out_ccm_class *out; |
783 | | } vtable; |
784 | | #ifndef BR_DOXYGEN_IGNORE |
785 | | uint64_t seq; |
786 | | union { |
787 | | const br_block_ctrcbc_class *vtable; |
788 | | br_aes_gen_ctrcbc_keys aes; |
789 | | } bc; |
790 | | unsigned char iv[4]; |
791 | | size_t tag_len; |
792 | | #endif |
793 | | } br_sslrec_ccm_context; |
794 | | |
795 | | /** |
796 | | * \brief Static, constant vtable for record decryption with CCM. |
797 | | */ |
798 | | extern const br_sslrec_in_ccm_class br_sslrec_in_ccm_vtable; |
799 | | |
800 | | /** |
801 | | * \brief Static, constant vtable for record encryption with CCM. |
802 | | */ |
803 | | extern const br_sslrec_out_ccm_class br_sslrec_out_ccm_vtable; |
804 | | |
805 | | /* ===================================================================== */ |
806 | | |
807 | | /** |
808 | | * \brief Type for session parameters, to be saved for session resumption. |
809 | | */ |
810 | | typedef struct { |
811 | | /** \brief Session ID buffer. */ |
812 | | unsigned char session_id[32]; |
813 | | /** \brief Session ID length (in bytes, at most 32). */ |
814 | | unsigned char session_id_len; |
815 | | /** \brief Protocol version. */ |
816 | | uint16_t version; |
817 | | /** \brief Cipher suite. */ |
818 | | uint16_t cipher_suite; |
819 | | /** \brief Master secret. */ |
820 | | unsigned char master_secret[48]; |
821 | | } br_ssl_session_parameters; |
822 | | |
823 | | #ifndef BR_DOXYGEN_IGNORE |
824 | | /* |
825 | | * Maximum number of cipher suites supported by a client or server. |
826 | | */ |
827 | | #define BR_MAX_CIPHER_SUITES 48 |
828 | | #endif |
829 | | |
830 | | /** |
831 | | * \brief Context structure for SSL engine. |
832 | | * |
833 | | * This strucuture is common to the client and server; both the client |
834 | | * context (`br_ssl_client_context`) and the server context |
835 | | * (`br_ssl_server_context`) include a `br_ssl_engine_context` as their |
836 | | * first field. |
837 | | * |
838 | | * The engine context manages records, including alerts, closures, and |
839 | | * transitions to new encryption/MAC algorithms. Processing of handshake |
840 | | * records is delegated to externally provided code. This structure |
841 | | * should not be used directly. |
842 | | * |
843 | | * Structure contents are opaque and shall not be accessed directly. |
844 | | */ |
845 | | typedef struct { |
846 | | #ifndef BR_DOXYGEN_IGNORE |
847 | | /* |
848 | | * The error code. When non-zero, then the state is "failed" and |
849 | | * no I/O may occur until reset. |
850 | | */ |
851 | | int err; |
852 | | |
853 | | /* |
854 | | * Configured I/O buffers. They are either disjoint, or identical. |
855 | | */ |
856 | | unsigned char *ibuf, *obuf; |
857 | | size_t ibuf_len, obuf_len; |
858 | | |
859 | | /* |
860 | | * Maximum fragment length applies to outgoing records; incoming |
861 | | * records can be processed as long as they fit in the input |
862 | | * buffer. It is guaranteed that incoming records at least as big |
863 | | * as max_frag_len can be processed. |
864 | | */ |
865 | | uint16_t max_frag_len; |
866 | | unsigned char log_max_frag_len; |
867 | | unsigned char peer_log_max_frag_len; |
868 | | |
869 | | /* |
870 | | * Buffering management registers. |
871 | | */ |
872 | | size_t ixa, ixb, ixc; |
873 | | size_t oxa, oxb, oxc; |
874 | | unsigned char iomode; |
875 | | unsigned char incrypt; |
876 | | |
877 | | /* |
878 | | * Shutdown flag: when set to non-zero, incoming record bytes |
879 | | * will not be accepted anymore. This is used after a close_notify |
880 | | * has been received: afterwards, the engine no longer claims that |
881 | | * it could receive bytes from the transport medium. |
882 | | */ |
883 | | unsigned char shutdown_recv; |
884 | | |
885 | | /* |
886 | | * 'record_type_in' is set to the incoming record type when the |
887 | | * record header has been received. |
888 | | * 'record_type_out' is used to make the next outgoing record |
889 | | * header when it is ready to go. |
890 | | */ |
891 | | unsigned char record_type_in, record_type_out; |
892 | | |
893 | | /* |
894 | | * When a record is received, its version is extracted: |
895 | | * -- if 'version_in' is 0, then it is set to the received version; |
896 | | * -- otherwise, if the received version is not identical to |
897 | | * the 'version_in' contents, then a failure is reported. |
898 | | * |
899 | | * This implements the SSL requirement that all records shall |
900 | | * use the negotiated protocol version, once decided (in the |
901 | | * ServerHello). It is up to the handshake handler to adjust this |
902 | | * field when necessary. |
903 | | */ |
904 | | uint16_t version_in; |
905 | | |
906 | | /* |
907 | | * 'version_out' is used when the next outgoing record is ready |
908 | | * to go. |
909 | | */ |
910 | | uint16_t version_out; |
911 | | |
912 | | /* |
913 | | * Record handler contexts. |
914 | | */ |
915 | | union { |
916 | | const br_sslrec_in_class *vtable; |
917 | | br_sslrec_in_cbc_context cbc; |
918 | | br_sslrec_gcm_context gcm; |
919 | | br_sslrec_chapol_context chapol; |
920 | | br_sslrec_ccm_context ccm; |
921 | | } in; |
922 | | union { |
923 | | const br_sslrec_out_class *vtable; |
924 | | br_sslrec_out_clear_context clear; |
925 | | br_sslrec_out_cbc_context cbc; |
926 | | br_sslrec_gcm_context gcm; |
927 | | br_sslrec_chapol_context chapol; |
928 | | br_sslrec_ccm_context ccm; |
929 | | } out; |
930 | | |
931 | | /* |
932 | | * The "application data" flag. Value: |
933 | | * 0 handshake is in process, no application data acceptable |
934 | | * 1 application data can be sent and received |
935 | | * 2 closing, no application data can be sent, but some |
936 | | * can still be received (and discarded) |
937 | | */ |
938 | | unsigned char application_data; |
939 | | |
940 | | /* |
941 | | * Context RNG. |
942 | | * |
943 | | * rng_init_done is initially 0. It is set to 1 when the |
944 | | * basic structure of the RNG is set, and 2 when some |
945 | | * entropy has been pushed in. The value 2 marks the RNG |
946 | | * as "properly seeded". |
947 | | * |
948 | | * rng_os_rand_done is initially 0. It is set to 1 when |
949 | | * some seeding from the OS or hardware has been attempted. |
950 | | */ |
951 | | br_hmac_drbg_context rng; |
952 | | int rng_init_done; |
953 | | int rng_os_rand_done; |
954 | | |
955 | | /* |
956 | | * Supported minimum and maximum versions, and cipher suites. |
957 | | */ |
958 | | uint16_t version_min; |
959 | | uint16_t version_max; |
960 | | uint16_t suites_buf[BR_MAX_CIPHER_SUITES]; |
961 | | unsigned char suites_num; |
962 | | |
963 | | /* |
964 | | * For clients, the server name to send as a SNI extension. For |
965 | | * servers, the name received in the SNI extension (if any). |
966 | | */ |
967 | | char server_name[256]; |
968 | | |
969 | | /* |
970 | | * "Security parameters". These are filled by the handshake |
971 | | * handler, and used when switching encryption state. |
972 | | */ |
973 | | unsigned char client_random[32]; |
974 | | unsigned char server_random[32]; |
975 | | br_ssl_session_parameters session; |
976 | | |
977 | | /* |
978 | | * ECDHE elements: curve and point from the peer. The server also |
979 | | * uses that buffer for the point to send to the client. |
980 | | */ |
981 | | unsigned char ecdhe_curve; |
982 | | unsigned char ecdhe_point[133]; |
983 | | unsigned char ecdhe_point_len; |
984 | | |
985 | | /* |
986 | | * Secure renegotiation (RFC 5746): 'reneg' can be: |
987 | | * 0 first handshake (server support is not known) |
988 | | * 1 peer does not support secure renegotiation |
989 | | * 2 peer supports secure renegotiation |
990 | | * |
991 | | * The saved_finished buffer contains the client and the |
992 | | * server "Finished" values from the last handshake, in |
993 | | * that order (12 bytes each). |
994 | | */ |
995 | | unsigned char reneg; |
996 | | unsigned char saved_finished[24]; |
997 | | |
998 | | /* |
999 | | * Behavioural flags. |
1000 | | */ |
1001 | | uint32_t flags; |
1002 | | |
1003 | | /* |
1004 | | * Context variables for the handshake processor. The 'pad' must |
1005 | | * be large enough to accommodate an RSA-encrypted pre-master |
1006 | | * secret, or an RSA signature; since we want to support up to |
1007 | | * RSA-4096, this means at least 512 bytes. (Other pad usages |
1008 | | * require its length to be at least 256.) |
1009 | | */ |
1010 | | struct { |
1011 | | uint32_t *dp; |
1012 | | uint32_t *rp; |
1013 | | const unsigned char *ip; |
1014 | | } cpu; |
1015 | | uint32_t dp_stack[32]; |
1016 | | uint32_t rp_stack[32]; |
1017 | | unsigned char pad[512]; |
1018 | | unsigned char *hbuf_in, *hbuf_out, *saved_hbuf_out; |
1019 | | size_t hlen_in, hlen_out; |
1020 | | void (*hsrun)(void *ctx); |
1021 | | |
1022 | | /* |
1023 | | * The 'action' value communicates OOB information between the |
1024 | | * engine and the handshake processor. |
1025 | | * |
1026 | | * From the engine: |
1027 | | * 0 invocation triggered by I/O |
1028 | | * 1 invocation triggered by explicit close |
1029 | | * 2 invocation triggered by explicit renegotiation |
1030 | | */ |
1031 | | unsigned char action; |
1032 | | |
1033 | | /* |
1034 | | * State for alert messages. Value is either 0, or the value of |
1035 | | * the alert level byte (level is either 1 for warning, or 2 for |
1036 | | * fatal; we convert all other values to 'fatal'). |
1037 | | */ |
1038 | | unsigned char alert; |
1039 | | |
1040 | | /* |
1041 | | * Closure flags. This flag is set when a close_notify has been |
1042 | | * received from the peer. |
1043 | | */ |
1044 | | unsigned char close_received; |
1045 | | |
1046 | | /* |
1047 | | * Multi-hasher for the handshake messages. The handshake handler |
1048 | | * is responsible for resetting it when appropriate. |
1049 | | */ |
1050 | | br_multihash_context mhash; |
1051 | | |
1052 | | /* |
1053 | | * Pointer to the X.509 engine. The engine is supposed to be |
1054 | | * already initialized. It is used to validate the peer's |
1055 | | * certificate. |
1056 | | */ |
1057 | | const br_x509_class **x509ctx; |
1058 | | |
1059 | | /* |
1060 | | * Certificate chain to send. This is used by both client and |
1061 | | * server, when they send their respective Certificate messages. |
1062 | | * If chain_len is 0, then chain may be NULL. |
1063 | | */ |
1064 | | const br_x509_certificate *chain; |
1065 | | size_t chain_len; |
1066 | | const unsigned char *cert_cur; |
1067 | | size_t cert_len; |
1068 | | |
1069 | | /* |
1070 | | * List of supported protocol names (ALPN extension). If unset, |
1071 | | * (number of names is 0), then: |
1072 | | * - the client sends no ALPN extension; |
1073 | | * - the server ignores any incoming ALPN extension. |
1074 | | * |
1075 | | * Otherwise: |
1076 | | * - the client sends an ALPN extension with all the names; |
1077 | | * - the server selects the first protocol in its list that |
1078 | | * the client also supports, or fails (fatal alert 120) |
1079 | | * if the client sends an ALPN extension and there is no |
1080 | | * match. |
1081 | | * |
1082 | | * The 'selected_protocol' field contains 1+n if the matching |
1083 | | * name has index n in the list (the value is 0 if no match was |
1084 | | * performed, e.g. the peer did not send an ALPN extension). |
1085 | | */ |
1086 | | const char **protocol_names; |
1087 | | uint16_t protocol_names_num; |
1088 | | uint16_t selected_protocol; |
1089 | | |
1090 | | /* |
1091 | | * Pointers to implementations; left to NULL for unsupported |
1092 | | * functions. For the raw hash functions, implementations are |
1093 | | * referenced from the multihasher (mhash field). |
1094 | | */ |
1095 | | br_tls_prf_impl prf10; |
1096 | | br_tls_prf_impl prf_sha256; |
1097 | | br_tls_prf_impl prf_sha384; |
1098 | | const br_block_cbcenc_class *iaes_cbcenc; |
1099 | | const br_block_cbcdec_class *iaes_cbcdec; |
1100 | | const br_block_ctr_class *iaes_ctr; |
1101 | | const br_block_ctrcbc_class *iaes_ctrcbc; |
1102 | | const br_block_cbcenc_class *ides_cbcenc; |
1103 | | const br_block_cbcdec_class *ides_cbcdec; |
1104 | | br_ghash ighash; |
1105 | | br_chacha20_run ichacha; |
1106 | | br_poly1305_run ipoly; |
1107 | | const br_sslrec_in_cbc_class *icbc_in; |
1108 | | const br_sslrec_out_cbc_class *icbc_out; |
1109 | | const br_sslrec_in_gcm_class *igcm_in; |
1110 | | const br_sslrec_out_gcm_class *igcm_out; |
1111 | | const br_sslrec_in_chapol_class *ichapol_in; |
1112 | | const br_sslrec_out_chapol_class *ichapol_out; |
1113 | | const br_sslrec_in_ccm_class *iccm_in; |
1114 | | const br_sslrec_out_ccm_class *iccm_out; |
1115 | | const br_ec_impl *iec; |
1116 | | br_rsa_pkcs1_vrfy irsavrfy; |
1117 | | br_ecdsa_vrfy iecdsa; |
1118 | | #endif |
1119 | | } br_ssl_engine_context; |
1120 | | |
1121 | | /** |
1122 | | * \brief Get currently defined engine behavioural flags. |
1123 | | * |
1124 | | * \param cc SSL engine context. |
1125 | | * \return the flags. |
1126 | | */ |
1127 | | static inline uint32_t |
1128 | | br_ssl_engine_get_flags(br_ssl_engine_context *cc) |
1129 | 0 | { |
1130 | 0 | return cc->flags; |
1131 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_get_flags(br_ssl_engine_context*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_get_flags Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_get_flags Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_get_flags Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_get_flags Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_get_flags Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_get_flags Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_get_flags Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_get_flags Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_get_flags Unexecuted instantiation: aes_ct64.c:br_ssl_engine_get_flags Unexecuted instantiation: aes_ct.c:br_ssl_engine_get_flags Unexecuted instantiation: aes_common.c:br_ssl_engine_get_flags Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_get_flags Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_get_flags Unexecuted instantiation: prf.c:br_ssl_engine_get_flags Unexecuted instantiation: sysrng.c:br_ssl_engine_get_flags Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_get_flags Unexecuted instantiation: hmac.c:br_ssl_engine_get_flags Unexecuted instantiation: shake.c:br_ssl_engine_get_flags Unexecuted instantiation: hkdf.c:br_ssl_engine_get_flags Unexecuted instantiation: sha2small.c:br_ssl_engine_get_flags Unexecuted instantiation: sha2big.c:br_ssl_engine_get_flags Unexecuted instantiation: sha1.c:br_ssl_engine_get_flags Unexecuted instantiation: md5sha1.c:br_ssl_engine_get_flags Unexecuted instantiation: md5.c:br_ssl_engine_get_flags Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_get_flags Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_get_flags Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_get_flags Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_get_flags Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_get_flags Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_get_flags Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_get_flags Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_get_flags Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_get_flags Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_get_flags Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_get_flags Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_get_flags Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_get_flags Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_get_flags Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_get_flags Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_get_flags Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_get_flags Unexecuted instantiation: ec_keygen.c:br_ssl_engine_get_flags Unexecuted instantiation: ec_default.c:br_ssl_engine_get_flags Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_get_flags Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_get_flags Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_get_flags Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_get_flags Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_get_flags Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_get_flags Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_get_flags Unexecuted instantiation: enc64be.c:br_ssl_engine_get_flags Unexecuted instantiation: enc32le.c:br_ssl_engine_get_flags Unexecuted instantiation: enc32be.c:br_ssl_engine_get_flags Unexecuted instantiation: dec64be.c:br_ssl_engine_get_flags Unexecuted instantiation: dec32le.c:br_ssl_engine_get_flags Unexecuted instantiation: dec32be.c:br_ssl_engine_get_flags Unexecuted instantiation: ccopy.c:br_ssl_engine_get_flags Unexecuted instantiation: gcm.c:br_ssl_engine_get_flags Unexecuted instantiation: ccm.c:br_ssl_engine_get_flags Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_get_flags Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_get_flags Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_get_flags Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_get_flags Unexecuted instantiation: i31_sub.c:br_ssl_engine_get_flags Unexecuted instantiation: i31_rshift.c:br_ssl_engine_get_flags Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_get_flags Unexecuted instantiation: i31_montmul.c:br_ssl_engine_get_flags Unexecuted instantiation: i31_modpow.c:br_ssl_engine_get_flags Unexecuted instantiation: i31_iszero.c:br_ssl_engine_get_flags Unexecuted instantiation: i31_fmont.c:br_ssl_engine_get_flags Unexecuted instantiation: i31_encode.c:br_ssl_engine_get_flags Unexecuted instantiation: i31_decode.c:br_ssl_engine_get_flags Unexecuted instantiation: i31_decmod.c:br_ssl_engine_get_flags Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_get_flags Unexecuted instantiation: i31_add.c:br_ssl_engine_get_flags Unexecuted instantiation: i15_sub.c:br_ssl_engine_get_flags Unexecuted instantiation: i15_rshift.c:br_ssl_engine_get_flags Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_get_flags Unexecuted instantiation: i15_montmul.c:br_ssl_engine_get_flags Unexecuted instantiation: i15_modpow.c:br_ssl_engine_get_flags Unexecuted instantiation: i15_iszero.c:br_ssl_engine_get_flags Unexecuted instantiation: i15_fmont.c:br_ssl_engine_get_flags Unexecuted instantiation: i15_encode.c:br_ssl_engine_get_flags Unexecuted instantiation: i15_decode.c:br_ssl_engine_get_flags Unexecuted instantiation: i15_decmod.c:br_ssl_engine_get_flags Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_get_flags Unexecuted instantiation: i15_add.c:br_ssl_engine_get_flags Unexecuted instantiation: i31_tmont.c:br_ssl_engine_get_flags Unexecuted instantiation: i31_muladd.c:br_ssl_engine_get_flags Unexecuted instantiation: i15_tmont.c:br_ssl_engine_get_flags Unexecuted instantiation: i15_muladd.c:br_ssl_engine_get_flags Unexecuted instantiation: i32_div32.c:br_ssl_engine_get_flags |
1132 | | |
1133 | | /** |
1134 | | * \brief Set all engine behavioural flags. |
1135 | | * |
1136 | | * \param cc SSL engine context. |
1137 | | * \param flags new value for all flags. |
1138 | | */ |
1139 | | static inline void |
1140 | | br_ssl_engine_set_all_flags(br_ssl_engine_context *cc, uint32_t flags) |
1141 | 0 | { |
1142 | 0 | cc->flags = flags; |
1143 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_all_flags(br_ssl_engine_context*, unsigned int) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_all_flags Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_all_flags Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_all_flags Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_all_flags Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_all_flags Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_all_flags Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_all_flags Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_all_flags Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_all_flags Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_all_flags Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_all_flags Unexecuted instantiation: aes_common.c:br_ssl_engine_set_all_flags Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_all_flags Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_all_flags Unexecuted instantiation: prf.c:br_ssl_engine_set_all_flags Unexecuted instantiation: sysrng.c:br_ssl_engine_set_all_flags Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_all_flags Unexecuted instantiation: hmac.c:br_ssl_engine_set_all_flags Unexecuted instantiation: shake.c:br_ssl_engine_set_all_flags Unexecuted instantiation: hkdf.c:br_ssl_engine_set_all_flags Unexecuted instantiation: sha2small.c:br_ssl_engine_set_all_flags Unexecuted instantiation: sha2big.c:br_ssl_engine_set_all_flags Unexecuted instantiation: sha1.c:br_ssl_engine_set_all_flags Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_all_flags Unexecuted instantiation: md5.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ec_default.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_all_flags Unexecuted instantiation: enc64be.c:br_ssl_engine_set_all_flags Unexecuted instantiation: enc32le.c:br_ssl_engine_set_all_flags Unexecuted instantiation: enc32be.c:br_ssl_engine_set_all_flags Unexecuted instantiation: dec64be.c:br_ssl_engine_set_all_flags Unexecuted instantiation: dec32le.c:br_ssl_engine_set_all_flags Unexecuted instantiation: dec32be.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ccopy.c:br_ssl_engine_set_all_flags Unexecuted instantiation: gcm.c:br_ssl_engine_set_all_flags Unexecuted instantiation: ccm.c:br_ssl_engine_set_all_flags Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_all_flags Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_all_flags Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_all_flags Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i31_add.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i15_add.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_all_flags Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_all_flags |
1144 | | |
1145 | | /** |
1146 | | * \brief Set some engine behavioural flags. |
1147 | | * |
1148 | | * The flags set in the `flags` parameter are set in the context; other |
1149 | | * flags are untouched. |
1150 | | * |
1151 | | * \param cc SSL engine context. |
1152 | | * \param flags additional set flags. |
1153 | | */ |
1154 | | static inline void |
1155 | | br_ssl_engine_add_flags(br_ssl_engine_context *cc, uint32_t flags) |
1156 | 0 | { |
1157 | 0 | cc->flags |= flags; |
1158 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_add_flags(br_ssl_engine_context*, unsigned int) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_add_flags Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_add_flags Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_add_flags Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_add_flags Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_add_flags Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_add_flags Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_add_flags Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_add_flags Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_add_flags Unexecuted instantiation: aes_ct64.c:br_ssl_engine_add_flags Unexecuted instantiation: aes_ct.c:br_ssl_engine_add_flags Unexecuted instantiation: aes_common.c:br_ssl_engine_add_flags Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_add_flags Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_add_flags Unexecuted instantiation: prf.c:br_ssl_engine_add_flags Unexecuted instantiation: sysrng.c:br_ssl_engine_add_flags Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_add_flags Unexecuted instantiation: hmac.c:br_ssl_engine_add_flags Unexecuted instantiation: shake.c:br_ssl_engine_add_flags Unexecuted instantiation: hkdf.c:br_ssl_engine_add_flags Unexecuted instantiation: sha2small.c:br_ssl_engine_add_flags Unexecuted instantiation: sha2big.c:br_ssl_engine_add_flags Unexecuted instantiation: sha1.c:br_ssl_engine_add_flags Unexecuted instantiation: md5sha1.c:br_ssl_engine_add_flags Unexecuted instantiation: md5.c:br_ssl_engine_add_flags Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_add_flags Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_add_flags Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_add_flags Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_add_flags Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_add_flags Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_add_flags Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_add_flags Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_add_flags Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_add_flags Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_add_flags Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_add_flags Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_add_flags Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_add_flags Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_add_flags Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_add_flags Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_add_flags Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_add_flags Unexecuted instantiation: ec_keygen.c:br_ssl_engine_add_flags Unexecuted instantiation: ec_default.c:br_ssl_engine_add_flags Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_add_flags Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_add_flags Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_add_flags Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_add_flags Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_add_flags Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_add_flags Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_add_flags Unexecuted instantiation: enc64be.c:br_ssl_engine_add_flags Unexecuted instantiation: enc32le.c:br_ssl_engine_add_flags Unexecuted instantiation: enc32be.c:br_ssl_engine_add_flags Unexecuted instantiation: dec64be.c:br_ssl_engine_add_flags Unexecuted instantiation: dec32le.c:br_ssl_engine_add_flags Unexecuted instantiation: dec32be.c:br_ssl_engine_add_flags Unexecuted instantiation: ccopy.c:br_ssl_engine_add_flags Unexecuted instantiation: gcm.c:br_ssl_engine_add_flags Unexecuted instantiation: ccm.c:br_ssl_engine_add_flags Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_add_flags Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_add_flags Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_add_flags Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_add_flags Unexecuted instantiation: i31_sub.c:br_ssl_engine_add_flags Unexecuted instantiation: i31_rshift.c:br_ssl_engine_add_flags Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_add_flags Unexecuted instantiation: i31_montmul.c:br_ssl_engine_add_flags Unexecuted instantiation: i31_modpow.c:br_ssl_engine_add_flags Unexecuted instantiation: i31_iszero.c:br_ssl_engine_add_flags Unexecuted instantiation: i31_fmont.c:br_ssl_engine_add_flags Unexecuted instantiation: i31_encode.c:br_ssl_engine_add_flags Unexecuted instantiation: i31_decode.c:br_ssl_engine_add_flags Unexecuted instantiation: i31_decmod.c:br_ssl_engine_add_flags Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_add_flags Unexecuted instantiation: i31_add.c:br_ssl_engine_add_flags Unexecuted instantiation: i15_sub.c:br_ssl_engine_add_flags Unexecuted instantiation: i15_rshift.c:br_ssl_engine_add_flags Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_add_flags Unexecuted instantiation: i15_montmul.c:br_ssl_engine_add_flags Unexecuted instantiation: i15_modpow.c:br_ssl_engine_add_flags Unexecuted instantiation: i15_iszero.c:br_ssl_engine_add_flags Unexecuted instantiation: i15_fmont.c:br_ssl_engine_add_flags Unexecuted instantiation: i15_encode.c:br_ssl_engine_add_flags Unexecuted instantiation: i15_decode.c:br_ssl_engine_add_flags Unexecuted instantiation: i15_decmod.c:br_ssl_engine_add_flags Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_add_flags Unexecuted instantiation: i15_add.c:br_ssl_engine_add_flags Unexecuted instantiation: i31_tmont.c:br_ssl_engine_add_flags Unexecuted instantiation: i31_muladd.c:br_ssl_engine_add_flags Unexecuted instantiation: i15_tmont.c:br_ssl_engine_add_flags Unexecuted instantiation: i15_muladd.c:br_ssl_engine_add_flags Unexecuted instantiation: i32_div32.c:br_ssl_engine_add_flags |
1159 | | |
1160 | | /** |
1161 | | * \brief Clear some engine behavioural flags. |
1162 | | * |
1163 | | * The flags set in the `flags` parameter are cleared from the context; other |
1164 | | * flags are untouched. |
1165 | | * |
1166 | | * \param cc SSL engine context. |
1167 | | * \param flags flags to remove. |
1168 | | */ |
1169 | | static inline void |
1170 | | br_ssl_engine_remove_flags(br_ssl_engine_context *cc, uint32_t flags) |
1171 | 0 | { |
1172 | 0 | cc->flags &= ~flags; |
1173 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_remove_flags(br_ssl_engine_context*, unsigned int) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_remove_flags Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_remove_flags Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_remove_flags Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_remove_flags Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_remove_flags Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_remove_flags Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_remove_flags Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_remove_flags Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_remove_flags Unexecuted instantiation: aes_ct64.c:br_ssl_engine_remove_flags Unexecuted instantiation: aes_ct.c:br_ssl_engine_remove_flags Unexecuted instantiation: aes_common.c:br_ssl_engine_remove_flags Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_remove_flags Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_remove_flags Unexecuted instantiation: prf.c:br_ssl_engine_remove_flags Unexecuted instantiation: sysrng.c:br_ssl_engine_remove_flags Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_remove_flags Unexecuted instantiation: hmac.c:br_ssl_engine_remove_flags Unexecuted instantiation: shake.c:br_ssl_engine_remove_flags Unexecuted instantiation: hkdf.c:br_ssl_engine_remove_flags Unexecuted instantiation: sha2small.c:br_ssl_engine_remove_flags Unexecuted instantiation: sha2big.c:br_ssl_engine_remove_flags Unexecuted instantiation: sha1.c:br_ssl_engine_remove_flags Unexecuted instantiation: md5sha1.c:br_ssl_engine_remove_flags Unexecuted instantiation: md5.c:br_ssl_engine_remove_flags Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_remove_flags Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_remove_flags Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_remove_flags Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_remove_flags Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_remove_flags Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_remove_flags Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_remove_flags Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_remove_flags Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_remove_flags Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_remove_flags Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_remove_flags Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_remove_flags Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_remove_flags Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_remove_flags Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_remove_flags Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_remove_flags Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_remove_flags Unexecuted instantiation: ec_keygen.c:br_ssl_engine_remove_flags Unexecuted instantiation: ec_default.c:br_ssl_engine_remove_flags Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_remove_flags Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_remove_flags Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_remove_flags Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_remove_flags Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_remove_flags Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_remove_flags Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_remove_flags Unexecuted instantiation: enc64be.c:br_ssl_engine_remove_flags Unexecuted instantiation: enc32le.c:br_ssl_engine_remove_flags Unexecuted instantiation: enc32be.c:br_ssl_engine_remove_flags Unexecuted instantiation: dec64be.c:br_ssl_engine_remove_flags Unexecuted instantiation: dec32le.c:br_ssl_engine_remove_flags Unexecuted instantiation: dec32be.c:br_ssl_engine_remove_flags Unexecuted instantiation: ccopy.c:br_ssl_engine_remove_flags Unexecuted instantiation: gcm.c:br_ssl_engine_remove_flags Unexecuted instantiation: ccm.c:br_ssl_engine_remove_flags Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_remove_flags Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_remove_flags Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_remove_flags Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_remove_flags Unexecuted instantiation: i31_sub.c:br_ssl_engine_remove_flags Unexecuted instantiation: i31_rshift.c:br_ssl_engine_remove_flags Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_remove_flags Unexecuted instantiation: i31_montmul.c:br_ssl_engine_remove_flags Unexecuted instantiation: i31_modpow.c:br_ssl_engine_remove_flags Unexecuted instantiation: i31_iszero.c:br_ssl_engine_remove_flags Unexecuted instantiation: i31_fmont.c:br_ssl_engine_remove_flags Unexecuted instantiation: i31_encode.c:br_ssl_engine_remove_flags Unexecuted instantiation: i31_decode.c:br_ssl_engine_remove_flags Unexecuted instantiation: i31_decmod.c:br_ssl_engine_remove_flags Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_remove_flags Unexecuted instantiation: i31_add.c:br_ssl_engine_remove_flags Unexecuted instantiation: i15_sub.c:br_ssl_engine_remove_flags Unexecuted instantiation: i15_rshift.c:br_ssl_engine_remove_flags Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_remove_flags Unexecuted instantiation: i15_montmul.c:br_ssl_engine_remove_flags Unexecuted instantiation: i15_modpow.c:br_ssl_engine_remove_flags Unexecuted instantiation: i15_iszero.c:br_ssl_engine_remove_flags Unexecuted instantiation: i15_fmont.c:br_ssl_engine_remove_flags Unexecuted instantiation: i15_encode.c:br_ssl_engine_remove_flags Unexecuted instantiation: i15_decode.c:br_ssl_engine_remove_flags Unexecuted instantiation: i15_decmod.c:br_ssl_engine_remove_flags Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_remove_flags Unexecuted instantiation: i15_add.c:br_ssl_engine_remove_flags Unexecuted instantiation: i31_tmont.c:br_ssl_engine_remove_flags Unexecuted instantiation: i31_muladd.c:br_ssl_engine_remove_flags Unexecuted instantiation: i15_tmont.c:br_ssl_engine_remove_flags Unexecuted instantiation: i15_muladd.c:br_ssl_engine_remove_flags Unexecuted instantiation: i32_div32.c:br_ssl_engine_remove_flags |
1174 | | |
1175 | | /** |
1176 | | * \brief Behavioural flag: enforce server preferences. |
1177 | | * |
1178 | | * If this flag is set, then the server will enforce its own cipher suite |
1179 | | * preference order; otherwise, it follows the client preferences. |
1180 | | */ |
1181 | | #define BR_OPT_ENFORCE_SERVER_PREFERENCES ((uint32_t)1 << 0) |
1182 | | |
1183 | | /** |
1184 | | * \brief Behavioural flag: disable renegotiation. |
1185 | | * |
1186 | | * If this flag is set, then renegotiations are rejected unconditionally: |
1187 | | * they won't be honoured if asked for programmatically, and requests from |
1188 | | * the peer are rejected. |
1189 | | */ |
1190 | | #define BR_OPT_NO_RENEGOTIATION ((uint32_t)1 << 1) |
1191 | | |
1192 | | /** |
1193 | | * \brief Behavioural flag: tolerate lack of client authentication. |
1194 | | * |
1195 | | * If this flag is set in a server and the server requests a client |
1196 | | * certificate, but the authentication fails (the client does not send |
1197 | | * a certificate, or the client's certificate chain cannot be validated), |
1198 | | * then the connection keeps on. Without this flag, a failed client |
1199 | | * authentication terminates the connection. |
1200 | | * |
1201 | | * Notes: |
1202 | | * |
1203 | | * - If the client's certificate can be validated and its public key is |
1204 | | * supported, then a wrong signature value terminates the connection |
1205 | | * regardless of that flag. |
1206 | | * |
1207 | | * - If using full-static ECDH, then a failure to validate the client's |
1208 | | * certificate prevents the handshake from succeeding. |
1209 | | */ |
1210 | | #define BR_OPT_TOLERATE_NO_CLIENT_AUTH ((uint32_t)1 << 2) |
1211 | | |
1212 | | /** |
1213 | | * \brief Behavioural flag: fail on application protocol mismatch. |
1214 | | * |
1215 | | * The ALPN extension ([RFC 7301](https://tools.ietf.org/html/rfc7301)) |
1216 | | * allows the client to send a list of application protocol names, and |
1217 | | * the server to select one. A mismatch is one of the following occurrences: |
1218 | | * |
1219 | | * - On the client: the client sends a list of names, the server |
1220 | | * responds with a protocol name which is _not_ part of the list of |
1221 | | * names sent by the client. |
1222 | | * |
1223 | | * - On the server: the client sends a list of names, and the server |
1224 | | * is also configured with a list of names, but there is no common |
1225 | | * protocol name between the two lists. |
1226 | | * |
1227 | | * Normal behaviour in case of mismatch is to report no matching name |
1228 | | * (`br_ssl_engine_get_selected_protocol()` returns `NULL`) and carry on. |
1229 | | * If the flag is set, then a mismatch implies a protocol failure (if |
1230 | | * the mismatch is detected by the server, it will send a fatal alert). |
1231 | | * |
1232 | | * Note: even with this flag, `br_ssl_engine_get_selected_protocol()` |
1233 | | * may still return `NULL` if the client or the server does not send an |
1234 | | * ALPN extension at all. |
1235 | | */ |
1236 | | #define BR_OPT_FAIL_ON_ALPN_MISMATCH ((uint32_t)1 << 3) |
1237 | | |
1238 | | /** |
1239 | | * \brief Set the minimum and maximum supported protocol versions. |
1240 | | * |
1241 | | * The two provided versions MUST be supported by the implementation |
1242 | | * (i.e. TLS 1.0, 1.1 and 1.2), and `version_max` MUST NOT be lower |
1243 | | * than `version_min`. |
1244 | | * |
1245 | | * \param cc SSL engine context. |
1246 | | * \param version_min minimum supported TLS version. |
1247 | | * \param version_max maximum supported TLS version. |
1248 | | */ |
1249 | | static inline void |
1250 | | br_ssl_engine_set_versions(br_ssl_engine_context *cc, |
1251 | | unsigned version_min, unsigned version_max) |
1252 | 0 | { |
1253 | 0 | cc->version_min = (uint16_t)version_min; |
1254 | 0 | cc->version_max = (uint16_t)version_max; |
1255 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_versions(br_ssl_engine_context*, unsigned int, unsigned int) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_versions Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_versions Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_versions Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_versions Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_versions Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_versions Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_versions Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_versions Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_versions Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_versions Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_versions Unexecuted instantiation: aes_common.c:br_ssl_engine_set_versions Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_versions Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_versions Unexecuted instantiation: prf.c:br_ssl_engine_set_versions Unexecuted instantiation: sysrng.c:br_ssl_engine_set_versions Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_versions Unexecuted instantiation: hmac.c:br_ssl_engine_set_versions Unexecuted instantiation: shake.c:br_ssl_engine_set_versions Unexecuted instantiation: hkdf.c:br_ssl_engine_set_versions Unexecuted instantiation: sha2small.c:br_ssl_engine_set_versions Unexecuted instantiation: sha2big.c:br_ssl_engine_set_versions Unexecuted instantiation: sha1.c:br_ssl_engine_set_versions Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_versions Unexecuted instantiation: md5.c:br_ssl_engine_set_versions Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_versions Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_versions Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_versions Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_versions Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_versions Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_versions Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_versions Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_versions Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_versions Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_versions Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_versions Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_versions Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_versions Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_versions Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_versions Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_versions Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_versions Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_versions Unexecuted instantiation: ec_default.c:br_ssl_engine_set_versions Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_versions Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_versions Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_versions Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_versions Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_versions Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_versions Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_versions Unexecuted instantiation: enc64be.c:br_ssl_engine_set_versions Unexecuted instantiation: enc32le.c:br_ssl_engine_set_versions Unexecuted instantiation: enc32be.c:br_ssl_engine_set_versions Unexecuted instantiation: dec64be.c:br_ssl_engine_set_versions Unexecuted instantiation: dec32le.c:br_ssl_engine_set_versions Unexecuted instantiation: dec32be.c:br_ssl_engine_set_versions Unexecuted instantiation: ccopy.c:br_ssl_engine_set_versions Unexecuted instantiation: gcm.c:br_ssl_engine_set_versions Unexecuted instantiation: ccm.c:br_ssl_engine_set_versions Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_versions Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_versions Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_versions Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_versions Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_versions Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_versions Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_versions Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_versions Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_versions Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_versions Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_versions Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_versions Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_versions Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_versions Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_versions Unexecuted instantiation: i31_add.c:br_ssl_engine_set_versions Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_versions Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_versions Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_versions Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_versions Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_versions Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_versions Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_versions Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_versions Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_versions Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_versions Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_versions Unexecuted instantiation: i15_add.c:br_ssl_engine_set_versions Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_versions Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_versions Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_versions Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_versions Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_versions |
1256 | | |
1257 | | /** |
1258 | | * \brief Set the list of cipher suites advertised by this context. |
1259 | | * |
1260 | | * The provided array is copied into the context. It is the caller |
1261 | | * responsibility to ensure that all provided suites will be supported |
1262 | | * by the context. The engine context has enough room to receive _all_ |
1263 | | * suites supported by the implementation. The provided array MUST NOT |
1264 | | * contain duplicates. |
1265 | | * |
1266 | | * If the engine is for a client, the "signaling" pseudo-cipher suite |
1267 | | * `TLS_FALLBACK_SCSV` can be added at the end of the list, if the |
1268 | | * calling application is performing a voluntary downgrade (voluntary |
1269 | | * downgrades are not recommended, but if such a downgrade is done, then |
1270 | | * adding the fallback pseudo-suite is a good idea). |
1271 | | * |
1272 | | * \param cc SSL engine context. |
1273 | | * \param suites cipher suites. |
1274 | | * \param suites_num number of cipher suites. |
1275 | | */ |
1276 | | void br_ssl_engine_set_suites(br_ssl_engine_context *cc, |
1277 | | const uint16_t *suites, size_t suites_num); |
1278 | | |
1279 | | /** |
1280 | | * \brief Set the X.509 engine. |
1281 | | * |
1282 | | * The caller shall ensure that the X.509 engine is properly initialised. |
1283 | | * |
1284 | | * \param cc SSL engine context. |
1285 | | * \param x509ctx X.509 certificate validation context. |
1286 | | */ |
1287 | | static inline void |
1288 | | br_ssl_engine_set_x509(br_ssl_engine_context *cc, const br_x509_class **x509ctx) |
1289 | 0 | { |
1290 | 0 | cc->x509ctx = x509ctx; |
1291 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_x509(br_ssl_engine_context*, br_x509_class_ const**) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_x509 Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_x509 Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_x509 Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_x509 Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_x509 Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_x509 Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_x509 Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_x509 Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_x509 Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_x509 Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_x509 Unexecuted instantiation: aes_common.c:br_ssl_engine_set_x509 Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_x509 Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_x509 Unexecuted instantiation: prf.c:br_ssl_engine_set_x509 Unexecuted instantiation: sysrng.c:br_ssl_engine_set_x509 Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_x509 Unexecuted instantiation: hmac.c:br_ssl_engine_set_x509 Unexecuted instantiation: shake.c:br_ssl_engine_set_x509 Unexecuted instantiation: hkdf.c:br_ssl_engine_set_x509 Unexecuted instantiation: sha2small.c:br_ssl_engine_set_x509 Unexecuted instantiation: sha2big.c:br_ssl_engine_set_x509 Unexecuted instantiation: sha1.c:br_ssl_engine_set_x509 Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_x509 Unexecuted instantiation: md5.c:br_ssl_engine_set_x509 Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_x509 Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_x509 Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_x509 Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_x509 Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_x509 Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_x509 Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_x509 Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_x509 Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_x509 Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_x509 Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_x509 Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_x509 Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_x509 Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_x509 Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_x509 Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_x509 Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_x509 Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_x509 Unexecuted instantiation: ec_default.c:br_ssl_engine_set_x509 Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_x509 Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_x509 Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_x509 Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_x509 Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_x509 Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_x509 Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_x509 Unexecuted instantiation: enc64be.c:br_ssl_engine_set_x509 Unexecuted instantiation: enc32le.c:br_ssl_engine_set_x509 Unexecuted instantiation: enc32be.c:br_ssl_engine_set_x509 Unexecuted instantiation: dec64be.c:br_ssl_engine_set_x509 Unexecuted instantiation: dec32le.c:br_ssl_engine_set_x509 Unexecuted instantiation: dec32be.c:br_ssl_engine_set_x509 Unexecuted instantiation: ccopy.c:br_ssl_engine_set_x509 Unexecuted instantiation: gcm.c:br_ssl_engine_set_x509 Unexecuted instantiation: ccm.c:br_ssl_engine_set_x509 Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_x509 Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_x509 Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_x509 Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_x509 Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_x509 Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_x509 Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_x509 Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_x509 Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_x509 Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_x509 Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_x509 Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_x509 Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_x509 Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_x509 Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_x509 Unexecuted instantiation: i31_add.c:br_ssl_engine_set_x509 Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_x509 Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_x509 Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_x509 Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_x509 Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_x509 Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_x509 Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_x509 Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_x509 Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_x509 Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_x509 Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_x509 Unexecuted instantiation: i15_add.c:br_ssl_engine_set_x509 Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_x509 Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_x509 Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_x509 Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_x509 Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_x509 |
1292 | | |
1293 | | /** |
1294 | | * \brief Set the supported protocol names. |
1295 | | * |
1296 | | * Protocol names are part of the ALPN extension ([RFC |
1297 | | * 7301](https://tools.ietf.org/html/rfc7301)). Each protocol name is a |
1298 | | * character string, containing no more than 255 characters (256 with the |
1299 | | * terminating zero). When names are set, then: |
1300 | | * |
1301 | | * - The client will send an ALPN extension, containing the names. If |
1302 | | * the server responds with an ALPN extension, the client will verify |
1303 | | * that the response contains one of its name, and report that name |
1304 | | * through `br_ssl_engine_get_selected_protocol()`. |
1305 | | * |
1306 | | * - The server will parse incoming ALPN extension (from clients), and |
1307 | | * try to find a common protocol; if none is found, the connection |
1308 | | * is aborted with a fatal alert. On match, a response ALPN extension |
1309 | | * is sent, and name is reported through |
1310 | | * `br_ssl_engine_get_selected_protocol()`. |
1311 | | * |
1312 | | * The provided array is linked in, and must remain valid while the |
1313 | | * connection is live. |
1314 | | * |
1315 | | * Names MUST NOT be empty. Names MUST NOT be longer than 255 characters |
1316 | | * (excluding the terminating 0). |
1317 | | * |
1318 | | * \param ctx SSL engine context. |
1319 | | * \param names list of protocol names (zero-terminated). |
1320 | | * \param num number of protocol names (MUST be 1 or more). |
1321 | | */ |
1322 | | static inline void |
1323 | | br_ssl_engine_set_protocol_names(br_ssl_engine_context *ctx, |
1324 | | const char **names, size_t num) |
1325 | 0 | { |
1326 | 0 | ctx->protocol_names = names; |
1327 | 0 | ctx->protocol_names_num = (uint16_t)num; |
1328 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_protocol_names(br_ssl_engine_context*, char const**, unsigned long) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: aes_common.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: prf.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: sysrng.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: hmac.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: shake.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: hkdf.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: sha2small.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: sha2big.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: sha1.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: md5.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ec_default.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: enc64be.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: enc32le.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: enc32be.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: dec64be.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: dec32le.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: dec32be.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ccopy.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: gcm.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: ccm.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i31_add.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i15_add.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_protocol_names Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_protocol_names |
1329 | | |
1330 | | /** |
1331 | | * \brief Get the selected protocol. |
1332 | | * |
1333 | | * If this context was initialised with a non-empty list of protocol |
1334 | | * names, and both client and server sent ALPN extensions during the |
1335 | | * handshake, and a common name was found, then that name is returned. |
1336 | | * Otherwise, `NULL` is returned. |
1337 | | * |
1338 | | * The returned pointer is one of the pointers provided to the context |
1339 | | * with `br_ssl_engine_set_protocol_names()`. |
1340 | | * |
1341 | | * \return the selected protocol, or `NULL`. |
1342 | | */ |
1343 | | static inline const char * |
1344 | | br_ssl_engine_get_selected_protocol(br_ssl_engine_context *ctx) |
1345 | 0 | { |
1346 | 0 | unsigned k; |
1347 | 0 |
|
1348 | 0 | k = ctx->selected_protocol; |
1349 | 0 | return (k == 0 || k == 0xFFFF) ? NULL : ctx->protocol_names[k - 1]; |
1350 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_get_selected_protocol(br_ssl_engine_context*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: aes_ct64.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: aes_ct.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: aes_common.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: prf.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: sysrng.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: hmac.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: shake.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: hkdf.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: sha2small.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: sha2big.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: sha1.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: md5sha1.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: md5.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ec_keygen.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ec_default.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: enc64be.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: enc32le.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: enc32be.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: dec64be.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: dec32le.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: dec32be.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ccopy.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: gcm.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: ccm.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i31_sub.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i31_rshift.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i31_montmul.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i31_modpow.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i31_iszero.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i31_fmont.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i31_encode.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i31_decode.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i31_decmod.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i31_add.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i15_sub.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i15_rshift.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i15_montmul.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i15_modpow.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i15_iszero.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i15_fmont.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i15_encode.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i15_decode.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i15_decmod.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i15_add.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i31_tmont.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i31_muladd.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i15_tmont.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i15_muladd.c:br_ssl_engine_get_selected_protocol Unexecuted instantiation: i32_div32.c:br_ssl_engine_get_selected_protocol |
1351 | | |
1352 | | /** |
1353 | | * \brief Set a hash function implementation (by ID). |
1354 | | * |
1355 | | * Hash functions set with this call will be used for SSL/TLS specific |
1356 | | * usages, not X.509 certificate validation. Only "standard" hash functions |
1357 | | * may be set (MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512). If `impl` |
1358 | | * is `NULL`, then the hash function support is removed, not added. |
1359 | | * |
1360 | | * \param ctx SSL engine context. |
1361 | | * \param id hash function identifier. |
1362 | | * \param impl hash function implementation (or `NULL`). |
1363 | | */ |
1364 | | static inline void |
1365 | | br_ssl_engine_set_hash(br_ssl_engine_context *ctx, |
1366 | | int id, const br_hash_class *impl) |
1367 | 0 | { |
1368 | 0 | br_multihash_setimpl(&ctx->mhash, id, impl); |
1369 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_hash(br_ssl_engine_context*, int, br_hash_class_ const*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_hash Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_hash Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_hash Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_hash Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_hash Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_hash Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_hash Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_hash Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_hash Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_hash Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_hash Unexecuted instantiation: aes_common.c:br_ssl_engine_set_hash Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_hash Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_hash Unexecuted instantiation: prf.c:br_ssl_engine_set_hash Unexecuted instantiation: sysrng.c:br_ssl_engine_set_hash Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_hash Unexecuted instantiation: hmac.c:br_ssl_engine_set_hash Unexecuted instantiation: shake.c:br_ssl_engine_set_hash Unexecuted instantiation: hkdf.c:br_ssl_engine_set_hash Unexecuted instantiation: sha2small.c:br_ssl_engine_set_hash Unexecuted instantiation: sha2big.c:br_ssl_engine_set_hash Unexecuted instantiation: sha1.c:br_ssl_engine_set_hash Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_hash Unexecuted instantiation: md5.c:br_ssl_engine_set_hash Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_hash Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_hash Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_hash Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_hash Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_hash Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_hash Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_hash Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_hash Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_hash Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_hash Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_hash Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_hash Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_hash Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_hash Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_hash Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_hash Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_hash Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_hash Unexecuted instantiation: ec_default.c:br_ssl_engine_set_hash Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_hash Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_hash Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_hash Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_hash Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_hash Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_hash Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_hash Unexecuted instantiation: enc64be.c:br_ssl_engine_set_hash Unexecuted instantiation: enc32le.c:br_ssl_engine_set_hash Unexecuted instantiation: enc32be.c:br_ssl_engine_set_hash Unexecuted instantiation: dec64be.c:br_ssl_engine_set_hash Unexecuted instantiation: dec32le.c:br_ssl_engine_set_hash Unexecuted instantiation: dec32be.c:br_ssl_engine_set_hash Unexecuted instantiation: ccopy.c:br_ssl_engine_set_hash Unexecuted instantiation: gcm.c:br_ssl_engine_set_hash Unexecuted instantiation: ccm.c:br_ssl_engine_set_hash Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_hash Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_hash Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_hash Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_hash Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_hash Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_hash Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_hash Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_hash Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_hash Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_hash Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_hash Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_hash Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_hash Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_hash Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_hash Unexecuted instantiation: i31_add.c:br_ssl_engine_set_hash Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_hash Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_hash Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_hash Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_hash Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_hash Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_hash Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_hash Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_hash Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_hash Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_hash Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_hash Unexecuted instantiation: i15_add.c:br_ssl_engine_set_hash Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_hash Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_hash Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_hash Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_hash Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_hash |
1370 | | |
1371 | | /** |
1372 | | * \brief Get a hash function implementation (by ID). |
1373 | | * |
1374 | | * This function retrieves a hash function implementation which was |
1375 | | * set with `br_ssl_engine_set_hash()`. |
1376 | | * |
1377 | | * \param ctx SSL engine context. |
1378 | | * \param id hash function identifier. |
1379 | | * \return the hash function implementation (or `NULL`). |
1380 | | */ |
1381 | | static inline const br_hash_class * |
1382 | | br_ssl_engine_get_hash(br_ssl_engine_context *ctx, int id) |
1383 | 0 | { |
1384 | 0 | return br_multihash_getimpl(&ctx->mhash, id); |
1385 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_get_hash(br_ssl_engine_context*, int) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_get_hash Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_get_hash Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_get_hash Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_get_hash Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_get_hash Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_get_hash Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_get_hash Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_get_hash Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_get_hash Unexecuted instantiation: aes_ct64.c:br_ssl_engine_get_hash Unexecuted instantiation: aes_ct.c:br_ssl_engine_get_hash Unexecuted instantiation: aes_common.c:br_ssl_engine_get_hash Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_get_hash Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_get_hash Unexecuted instantiation: prf.c:br_ssl_engine_get_hash Unexecuted instantiation: sysrng.c:br_ssl_engine_get_hash Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_get_hash Unexecuted instantiation: hmac.c:br_ssl_engine_get_hash Unexecuted instantiation: shake.c:br_ssl_engine_get_hash Unexecuted instantiation: hkdf.c:br_ssl_engine_get_hash Unexecuted instantiation: sha2small.c:br_ssl_engine_get_hash Unexecuted instantiation: sha2big.c:br_ssl_engine_get_hash Unexecuted instantiation: sha1.c:br_ssl_engine_get_hash Unexecuted instantiation: md5sha1.c:br_ssl_engine_get_hash Unexecuted instantiation: md5.c:br_ssl_engine_get_hash Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_get_hash Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_get_hash Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_get_hash Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_get_hash Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_get_hash Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_get_hash Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_get_hash Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_get_hash Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_get_hash Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_get_hash Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_get_hash Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_get_hash Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_get_hash Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_get_hash Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_get_hash Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_get_hash Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_get_hash Unexecuted instantiation: ec_keygen.c:br_ssl_engine_get_hash Unexecuted instantiation: ec_default.c:br_ssl_engine_get_hash Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_get_hash Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_get_hash Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_get_hash Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_get_hash Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_get_hash Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_get_hash Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_get_hash Unexecuted instantiation: enc64be.c:br_ssl_engine_get_hash Unexecuted instantiation: enc32le.c:br_ssl_engine_get_hash Unexecuted instantiation: enc32be.c:br_ssl_engine_get_hash Unexecuted instantiation: dec64be.c:br_ssl_engine_get_hash Unexecuted instantiation: dec32le.c:br_ssl_engine_get_hash Unexecuted instantiation: dec32be.c:br_ssl_engine_get_hash Unexecuted instantiation: ccopy.c:br_ssl_engine_get_hash Unexecuted instantiation: gcm.c:br_ssl_engine_get_hash Unexecuted instantiation: ccm.c:br_ssl_engine_get_hash Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_get_hash Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_get_hash Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_get_hash Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_get_hash Unexecuted instantiation: i31_sub.c:br_ssl_engine_get_hash Unexecuted instantiation: i31_rshift.c:br_ssl_engine_get_hash Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_get_hash Unexecuted instantiation: i31_montmul.c:br_ssl_engine_get_hash Unexecuted instantiation: i31_modpow.c:br_ssl_engine_get_hash Unexecuted instantiation: i31_iszero.c:br_ssl_engine_get_hash Unexecuted instantiation: i31_fmont.c:br_ssl_engine_get_hash Unexecuted instantiation: i31_encode.c:br_ssl_engine_get_hash Unexecuted instantiation: i31_decode.c:br_ssl_engine_get_hash Unexecuted instantiation: i31_decmod.c:br_ssl_engine_get_hash Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_get_hash Unexecuted instantiation: i31_add.c:br_ssl_engine_get_hash Unexecuted instantiation: i15_sub.c:br_ssl_engine_get_hash Unexecuted instantiation: i15_rshift.c:br_ssl_engine_get_hash Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_get_hash Unexecuted instantiation: i15_montmul.c:br_ssl_engine_get_hash Unexecuted instantiation: i15_modpow.c:br_ssl_engine_get_hash Unexecuted instantiation: i15_iszero.c:br_ssl_engine_get_hash Unexecuted instantiation: i15_fmont.c:br_ssl_engine_get_hash Unexecuted instantiation: i15_encode.c:br_ssl_engine_get_hash Unexecuted instantiation: i15_decode.c:br_ssl_engine_get_hash Unexecuted instantiation: i15_decmod.c:br_ssl_engine_get_hash Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_get_hash Unexecuted instantiation: i15_add.c:br_ssl_engine_get_hash Unexecuted instantiation: i31_tmont.c:br_ssl_engine_get_hash Unexecuted instantiation: i31_muladd.c:br_ssl_engine_get_hash Unexecuted instantiation: i15_tmont.c:br_ssl_engine_get_hash Unexecuted instantiation: i15_muladd.c:br_ssl_engine_get_hash Unexecuted instantiation: i32_div32.c:br_ssl_engine_get_hash |
1386 | | |
1387 | | /** |
1388 | | * \brief Set the PRF implementation (for TLS 1.0 and 1.1). |
1389 | | * |
1390 | | * This function sets (or removes, if `impl` is `NULL`) the implementation |
1391 | | * for the PRF used in TLS 1.0 and 1.1. |
1392 | | * |
1393 | | * \param cc SSL engine context. |
1394 | | * \param impl PRF implementation (or `NULL`). |
1395 | | */ |
1396 | | static inline void |
1397 | | br_ssl_engine_set_prf10(br_ssl_engine_context *cc, br_tls_prf_impl impl) |
1398 | 0 | { |
1399 | 0 | cc->prf10 = impl; |
1400 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_prf10(br_ssl_engine_context*, void (*)(void*, unsigned long, void const*, unsigned long, char const*, unsigned long, br_tls_prf_seed_chunk const*)) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_prf10 Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_prf10 Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_prf10 Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_prf10 Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_prf10 Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_prf10 Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_prf10 Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_prf10 Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_prf10 Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_prf10 Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_prf10 Unexecuted instantiation: aes_common.c:br_ssl_engine_set_prf10 Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_prf10 Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_prf10 Unexecuted instantiation: prf.c:br_ssl_engine_set_prf10 Unexecuted instantiation: sysrng.c:br_ssl_engine_set_prf10 Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_prf10 Unexecuted instantiation: hmac.c:br_ssl_engine_set_prf10 Unexecuted instantiation: shake.c:br_ssl_engine_set_prf10 Unexecuted instantiation: hkdf.c:br_ssl_engine_set_prf10 Unexecuted instantiation: sha2small.c:br_ssl_engine_set_prf10 Unexecuted instantiation: sha2big.c:br_ssl_engine_set_prf10 Unexecuted instantiation: sha1.c:br_ssl_engine_set_prf10 Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_prf10 Unexecuted instantiation: md5.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ec_default.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_prf10 Unexecuted instantiation: enc64be.c:br_ssl_engine_set_prf10 Unexecuted instantiation: enc32le.c:br_ssl_engine_set_prf10 Unexecuted instantiation: enc32be.c:br_ssl_engine_set_prf10 Unexecuted instantiation: dec64be.c:br_ssl_engine_set_prf10 Unexecuted instantiation: dec32le.c:br_ssl_engine_set_prf10 Unexecuted instantiation: dec32be.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ccopy.c:br_ssl_engine_set_prf10 Unexecuted instantiation: gcm.c:br_ssl_engine_set_prf10 Unexecuted instantiation: ccm.c:br_ssl_engine_set_prf10 Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_prf10 Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_prf10 Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_prf10 Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i31_add.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i15_add.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_prf10 Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_prf10 |
1401 | | |
1402 | | /** |
1403 | | * \brief Set the PRF implementation with SHA-256 (for TLS 1.2). |
1404 | | * |
1405 | | * This function sets (or removes, if `impl` is `NULL`) the implementation |
1406 | | * for the SHA-256 variant of the PRF used in TLS 1.2. |
1407 | | * |
1408 | | * \param cc SSL engine context. |
1409 | | * \param impl PRF implementation (or `NULL`). |
1410 | | */ |
1411 | | static inline void |
1412 | | br_ssl_engine_set_prf_sha256(br_ssl_engine_context *cc, br_tls_prf_impl impl) |
1413 | 0 | { |
1414 | 0 | cc->prf_sha256 = impl; |
1415 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_prf_sha256(br_ssl_engine_context*, void (*)(void*, unsigned long, void const*, unsigned long, char const*, unsigned long, br_tls_prf_seed_chunk const*)) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: aes_common.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: prf.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: sysrng.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: hmac.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: shake.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: hkdf.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: sha2small.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: sha2big.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: sha1.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: md5.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ec_default.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: enc64be.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: enc32le.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: enc32be.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: dec64be.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: dec32le.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: dec32be.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ccopy.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: gcm.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: ccm.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i31_add.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i15_add.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_prf_sha256 Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_prf_sha256 |
1416 | | |
1417 | | /** |
1418 | | * \brief Set the PRF implementation with SHA-384 (for TLS 1.2). |
1419 | | * |
1420 | | * This function sets (or removes, if `impl` is `NULL`) the implementation |
1421 | | * for the SHA-384 variant of the PRF used in TLS 1.2. |
1422 | | * |
1423 | | * \param cc SSL engine context. |
1424 | | * \param impl PRF implementation (or `NULL`). |
1425 | | */ |
1426 | | static inline void |
1427 | | br_ssl_engine_set_prf_sha384(br_ssl_engine_context *cc, br_tls_prf_impl impl) |
1428 | 0 | { |
1429 | 0 | cc->prf_sha384 = impl; |
1430 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_prf_sha384(br_ssl_engine_context*, void (*)(void*, unsigned long, void const*, unsigned long, char const*, unsigned long, br_tls_prf_seed_chunk const*)) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: aes_common.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: prf.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: sysrng.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: hmac.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: shake.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: hkdf.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: sha2small.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: sha2big.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: sha1.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: md5.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ec_default.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: enc64be.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: enc32le.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: enc32be.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: dec64be.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: dec32le.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: dec32be.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ccopy.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: gcm.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: ccm.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i31_add.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i15_add.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_prf_sha384 Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_prf_sha384 |
1431 | | |
1432 | | /** |
1433 | | * \brief Set the AES/CBC implementations. |
1434 | | * |
1435 | | * \param cc SSL engine context. |
1436 | | * \param impl_enc AES/CBC encryption implementation (or `NULL`). |
1437 | | * \param impl_dec AES/CBC decryption implementation (or `NULL`). |
1438 | | */ |
1439 | | static inline void |
1440 | | br_ssl_engine_set_aes_cbc(br_ssl_engine_context *cc, |
1441 | | const br_block_cbcenc_class *impl_enc, |
1442 | | const br_block_cbcdec_class *impl_dec) |
1443 | 0 | { |
1444 | 0 | cc->iaes_cbcenc = impl_enc; |
1445 | 0 | cc->iaes_cbcdec = impl_dec; |
1446 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_aes_cbc(br_ssl_engine_context*, br_block_cbcenc_class_ const*, br_block_cbcdec_class_ const*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: aes_common.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: prf.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: sysrng.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: hmac.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: shake.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: hkdf.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: sha2small.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: sha2big.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: sha1.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: md5.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ec_default.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: enc64be.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: enc32le.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: enc32be.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: dec64be.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: dec32le.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: dec32be.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ccopy.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: gcm.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: ccm.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i31_add.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i15_add.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_aes_cbc Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_aes_cbc |
1447 | | |
1448 | | /** |
1449 | | * \brief Set the "default" AES/CBC implementations. |
1450 | | * |
1451 | | * This function configures in the engine the AES implementations that |
1452 | | * should provide best runtime performance on the local system, while |
1453 | | * still being safe (in particular, constant-time). It also sets the |
1454 | | * handlers for CBC records. |
1455 | | * |
1456 | | * \param cc SSL engine context. |
1457 | | */ |
1458 | | void br_ssl_engine_set_default_aes_cbc(br_ssl_engine_context *cc); |
1459 | | |
1460 | | /** |
1461 | | * \brief Set the AES/CTR implementation. |
1462 | | * |
1463 | | * \param cc SSL engine context. |
1464 | | * \param impl AES/CTR encryption/decryption implementation (or `NULL`). |
1465 | | */ |
1466 | | static inline void |
1467 | | br_ssl_engine_set_aes_ctr(br_ssl_engine_context *cc, |
1468 | | const br_block_ctr_class *impl) |
1469 | 0 | { |
1470 | 0 | cc->iaes_ctr = impl; |
1471 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_aes_ctr(br_ssl_engine_context*, br_block_ctr_class_ const*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: aes_common.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: prf.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: sysrng.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: hmac.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: shake.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: hkdf.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: sha2small.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: sha2big.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: sha1.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: md5.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ec_default.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: enc64be.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: enc32le.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: enc32be.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: dec64be.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: dec32le.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: dec32be.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ccopy.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: gcm.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: ccm.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i31_add.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i15_add.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_aes_ctr Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_aes_ctr |
1472 | | |
1473 | | /** |
1474 | | * \brief Set the "default" implementations for AES/GCM (AES/CTR + GHASH). |
1475 | | * |
1476 | | * This function configures in the engine the AES/CTR and GHASH |
1477 | | * implementation that should provide best runtime performance on the local |
1478 | | * system, while still being safe (in particular, constant-time). It also |
1479 | | * sets the handlers for GCM records. |
1480 | | * |
1481 | | * \param cc SSL engine context. |
1482 | | */ |
1483 | | void br_ssl_engine_set_default_aes_gcm(br_ssl_engine_context *cc); |
1484 | | |
1485 | | /** |
1486 | | * \brief Set the DES/CBC implementations. |
1487 | | * |
1488 | | * \param cc SSL engine context. |
1489 | | * \param impl_enc DES/CBC encryption implementation (or `NULL`). |
1490 | | * \param impl_dec DES/CBC decryption implementation (or `NULL`). |
1491 | | */ |
1492 | | static inline void |
1493 | | br_ssl_engine_set_des_cbc(br_ssl_engine_context *cc, |
1494 | | const br_block_cbcenc_class *impl_enc, |
1495 | | const br_block_cbcdec_class *impl_dec) |
1496 | 0 | { |
1497 | 0 | cc->ides_cbcenc = impl_enc; |
1498 | 0 | cc->ides_cbcdec = impl_dec; |
1499 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_des_cbc(br_ssl_engine_context*, br_block_cbcenc_class_ const*, br_block_cbcdec_class_ const*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: aes_common.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: prf.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: sysrng.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: hmac.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: shake.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: hkdf.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: sha2small.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: sha2big.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: sha1.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: md5.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ec_default.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: enc64be.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: enc32le.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: enc32be.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: dec64be.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: dec32le.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: dec32be.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ccopy.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: gcm.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: ccm.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i31_add.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i15_add.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_des_cbc Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_des_cbc |
1500 | | |
1501 | | /** |
1502 | | * \brief Set the "default" DES/CBC implementations. |
1503 | | * |
1504 | | * This function configures in the engine the DES implementations that |
1505 | | * should provide best runtime performance on the local system, while |
1506 | | * still being safe (in particular, constant-time). It also sets the |
1507 | | * handlers for CBC records. |
1508 | | * |
1509 | | * \param cc SSL engine context. |
1510 | | */ |
1511 | | void br_ssl_engine_set_default_des_cbc(br_ssl_engine_context *cc); |
1512 | | |
1513 | | /** |
1514 | | * \brief Set the GHASH implementation (used in GCM mode). |
1515 | | * |
1516 | | * \param cc SSL engine context. |
1517 | | * \param impl GHASH implementation (or `NULL`). |
1518 | | */ |
1519 | | static inline void |
1520 | | br_ssl_engine_set_ghash(br_ssl_engine_context *cc, br_ghash impl) |
1521 | 0 | { |
1522 | 0 | cc->ighash = impl; |
1523 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_ghash(br_ssl_engine_context*, void (*)(void*, void const*, void const*, unsigned long)) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_ghash Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_ghash Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_ghash Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_ghash Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_ghash Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_ghash Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_ghash Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_ghash Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_ghash Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_ghash Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_ghash Unexecuted instantiation: aes_common.c:br_ssl_engine_set_ghash Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_ghash Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_ghash Unexecuted instantiation: prf.c:br_ssl_engine_set_ghash Unexecuted instantiation: sysrng.c:br_ssl_engine_set_ghash Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_ghash Unexecuted instantiation: hmac.c:br_ssl_engine_set_ghash Unexecuted instantiation: shake.c:br_ssl_engine_set_ghash Unexecuted instantiation: hkdf.c:br_ssl_engine_set_ghash Unexecuted instantiation: sha2small.c:br_ssl_engine_set_ghash Unexecuted instantiation: sha2big.c:br_ssl_engine_set_ghash Unexecuted instantiation: sha1.c:br_ssl_engine_set_ghash Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_ghash Unexecuted instantiation: md5.c:br_ssl_engine_set_ghash Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_ghash Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_ghash Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_ghash Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_ghash Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_ghash Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_ghash Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_ghash Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_ghash Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_ghash Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_ghash Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_ghash Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_ghash Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_ghash Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_ghash Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_ghash Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_ghash Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_ghash Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_ghash Unexecuted instantiation: ec_default.c:br_ssl_engine_set_ghash Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_ghash Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_ghash Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_ghash Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_ghash Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_ghash Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_ghash Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_ghash Unexecuted instantiation: enc64be.c:br_ssl_engine_set_ghash Unexecuted instantiation: enc32le.c:br_ssl_engine_set_ghash Unexecuted instantiation: enc32be.c:br_ssl_engine_set_ghash Unexecuted instantiation: dec64be.c:br_ssl_engine_set_ghash Unexecuted instantiation: dec32le.c:br_ssl_engine_set_ghash Unexecuted instantiation: dec32be.c:br_ssl_engine_set_ghash Unexecuted instantiation: ccopy.c:br_ssl_engine_set_ghash Unexecuted instantiation: gcm.c:br_ssl_engine_set_ghash Unexecuted instantiation: ccm.c:br_ssl_engine_set_ghash Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_ghash Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_ghash Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_ghash Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_ghash Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_ghash Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_ghash Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_ghash Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_ghash Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_ghash Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_ghash Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_ghash Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_ghash Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_ghash Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_ghash Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_ghash Unexecuted instantiation: i31_add.c:br_ssl_engine_set_ghash Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_ghash Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_ghash Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_ghash Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_ghash Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_ghash Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_ghash Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_ghash Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_ghash Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_ghash Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_ghash Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_ghash Unexecuted instantiation: i15_add.c:br_ssl_engine_set_ghash Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_ghash Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_ghash Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_ghash Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_ghash Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_ghash |
1524 | | |
1525 | | /** |
1526 | | * \brief Set the ChaCha20 implementation. |
1527 | | * |
1528 | | * \param cc SSL engine context. |
1529 | | * \param ichacha ChaCha20 implementation (or `NULL`). |
1530 | | */ |
1531 | | static inline void |
1532 | | br_ssl_engine_set_chacha20(br_ssl_engine_context *cc, |
1533 | | br_chacha20_run ichacha) |
1534 | 0 | { |
1535 | 0 | cc->ichacha = ichacha; |
1536 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_chacha20(br_ssl_engine_context*, unsigned int (*)(void const*, void const*, unsigned int, void*, unsigned long)) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: aes_common.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: prf.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: sysrng.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: hmac.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: shake.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: hkdf.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: sha2small.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: sha2big.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: sha1.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: md5.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ec_default.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: enc64be.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: enc32le.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: enc32be.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: dec64be.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: dec32le.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: dec32be.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ccopy.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: gcm.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: ccm.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i31_add.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i15_add.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_chacha20 Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_chacha20 |
1537 | | |
1538 | | /** |
1539 | | * \brief Set the Poly1305 implementation. |
1540 | | * |
1541 | | * \param cc SSL engine context. |
1542 | | * \param ipoly Poly1305 implementation (or `NULL`). |
1543 | | */ |
1544 | | static inline void |
1545 | | br_ssl_engine_set_poly1305(br_ssl_engine_context *cc, |
1546 | | br_poly1305_run ipoly) |
1547 | 0 | { |
1548 | 0 | cc->ipoly = ipoly; |
1549 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_poly1305(br_ssl_engine_context*, void (*)(void const*, void const*, void*, unsigned long, void const*, unsigned long, void*, unsigned int (*)(void const*, void const*, unsigned int, void*, unsigned long), int)) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: aes_common.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: prf.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: sysrng.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: hmac.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: shake.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: hkdf.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: sha2small.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: sha2big.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: sha1.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: md5.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ec_default.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: enc64be.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: enc32le.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: enc32be.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: dec64be.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: dec32le.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: dec32be.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ccopy.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: gcm.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: ccm.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i31_add.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i15_add.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_poly1305 Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_poly1305 |
1550 | | |
1551 | | /** |
1552 | | * \brief Set the "default" ChaCha20 and Poly1305 implementations. |
1553 | | * |
1554 | | * This function configures in the engine the ChaCha20 and Poly1305 |
1555 | | * implementations that should provide best runtime performance on the |
1556 | | * local system, while still being safe (in particular, constant-time). |
1557 | | * It also sets the handlers for ChaCha20+Poly1305 records. |
1558 | | * |
1559 | | * \param cc SSL engine context. |
1560 | | */ |
1561 | | void br_ssl_engine_set_default_chapol(br_ssl_engine_context *cc); |
1562 | | |
1563 | | /** |
1564 | | * \brief Set the AES/CTR+CBC implementation. |
1565 | | * |
1566 | | * \param cc SSL engine context. |
1567 | | * \param impl AES/CTR+CBC encryption/decryption implementation (or `NULL`). |
1568 | | */ |
1569 | | static inline void |
1570 | | br_ssl_engine_set_aes_ctrcbc(br_ssl_engine_context *cc, |
1571 | | const br_block_ctrcbc_class *impl) |
1572 | 0 | { |
1573 | 0 | cc->iaes_ctrcbc = impl; |
1574 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_aes_ctrcbc(br_ssl_engine_context*, br_block_ctrcbc_class_ const*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: aes_common.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: prf.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: sysrng.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: hmac.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: shake.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: hkdf.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: sha2small.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: sha2big.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: sha1.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: md5.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ec_default.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: enc64be.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: enc32le.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: enc32be.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: dec64be.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: dec32le.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: dec32be.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ccopy.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: gcm.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: ccm.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i31_add.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i15_add.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_aes_ctrcbc Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_aes_ctrcbc |
1575 | | |
1576 | | /** |
1577 | | * \brief Set the "default" implementations for AES/CCM. |
1578 | | * |
1579 | | * This function configures in the engine the AES/CTR+CBC |
1580 | | * implementation that should provide best runtime performance on the local |
1581 | | * system, while still being safe (in particular, constant-time). It also |
1582 | | * sets the handlers for CCM records. |
1583 | | * |
1584 | | * \param cc SSL engine context. |
1585 | | */ |
1586 | | void br_ssl_engine_set_default_aes_ccm(br_ssl_engine_context *cc); |
1587 | | |
1588 | | /** |
1589 | | * \brief Set the record encryption and decryption engines for CBC + HMAC. |
1590 | | * |
1591 | | * \param cc SSL engine context. |
1592 | | * \param impl_in record CBC decryption implementation (or `NULL`). |
1593 | | * \param impl_out record CBC encryption implementation (or `NULL`). |
1594 | | */ |
1595 | | static inline void |
1596 | | br_ssl_engine_set_cbc(br_ssl_engine_context *cc, |
1597 | | const br_sslrec_in_cbc_class *impl_in, |
1598 | | const br_sslrec_out_cbc_class *impl_out) |
1599 | 0 | { |
1600 | 0 | cc->icbc_in = impl_in; |
1601 | 0 | cc->icbc_out = impl_out; |
1602 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_cbc(br_ssl_engine_context*, br_sslrec_in_cbc_class_ const*, br_sslrec_out_cbc_class_ const*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_cbc Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_cbc Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_cbc Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_cbc Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_cbc Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_cbc Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_cbc Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_cbc Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_cbc Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_cbc Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_cbc Unexecuted instantiation: aes_common.c:br_ssl_engine_set_cbc Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_cbc Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_cbc Unexecuted instantiation: prf.c:br_ssl_engine_set_cbc Unexecuted instantiation: sysrng.c:br_ssl_engine_set_cbc Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_cbc Unexecuted instantiation: hmac.c:br_ssl_engine_set_cbc Unexecuted instantiation: shake.c:br_ssl_engine_set_cbc Unexecuted instantiation: hkdf.c:br_ssl_engine_set_cbc Unexecuted instantiation: sha2small.c:br_ssl_engine_set_cbc Unexecuted instantiation: sha2big.c:br_ssl_engine_set_cbc Unexecuted instantiation: sha1.c:br_ssl_engine_set_cbc Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_cbc Unexecuted instantiation: md5.c:br_ssl_engine_set_cbc Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_cbc Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_cbc Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_cbc Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_cbc Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_cbc Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_cbc Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_cbc Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_cbc Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_cbc Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_cbc Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_cbc Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_cbc Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_cbc Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_cbc Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_cbc Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_cbc Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_cbc Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_cbc Unexecuted instantiation: ec_default.c:br_ssl_engine_set_cbc Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_cbc Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_cbc Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_cbc Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_cbc Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_cbc Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_cbc Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_cbc Unexecuted instantiation: enc64be.c:br_ssl_engine_set_cbc Unexecuted instantiation: enc32le.c:br_ssl_engine_set_cbc Unexecuted instantiation: enc32be.c:br_ssl_engine_set_cbc Unexecuted instantiation: dec64be.c:br_ssl_engine_set_cbc Unexecuted instantiation: dec32le.c:br_ssl_engine_set_cbc Unexecuted instantiation: dec32be.c:br_ssl_engine_set_cbc Unexecuted instantiation: ccopy.c:br_ssl_engine_set_cbc Unexecuted instantiation: gcm.c:br_ssl_engine_set_cbc Unexecuted instantiation: ccm.c:br_ssl_engine_set_cbc Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_cbc Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_cbc Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_cbc Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_cbc Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_cbc Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_cbc Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_cbc Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_cbc Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_cbc Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_cbc Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_cbc Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_cbc Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_cbc Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_cbc Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_cbc Unexecuted instantiation: i31_add.c:br_ssl_engine_set_cbc Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_cbc Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_cbc Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_cbc Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_cbc Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_cbc Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_cbc Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_cbc Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_cbc Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_cbc Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_cbc Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_cbc Unexecuted instantiation: i15_add.c:br_ssl_engine_set_cbc Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_cbc Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_cbc Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_cbc Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_cbc Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_cbc |
1603 | | |
1604 | | /** |
1605 | | * \brief Set the record encryption and decryption engines for GCM. |
1606 | | * |
1607 | | * \param cc SSL engine context. |
1608 | | * \param impl_in record GCM decryption implementation (or `NULL`). |
1609 | | * \param impl_out record GCM encryption implementation (or `NULL`). |
1610 | | */ |
1611 | | static inline void |
1612 | | br_ssl_engine_set_gcm(br_ssl_engine_context *cc, |
1613 | | const br_sslrec_in_gcm_class *impl_in, |
1614 | | const br_sslrec_out_gcm_class *impl_out) |
1615 | 0 | { |
1616 | 0 | cc->igcm_in = impl_in; |
1617 | 0 | cc->igcm_out = impl_out; |
1618 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_gcm(br_ssl_engine_context*, br_sslrec_in_gcm_class_ const*, br_sslrec_out_gcm_class_ const*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_gcm Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_gcm Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_gcm Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_gcm Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_gcm Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_gcm Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_gcm Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_gcm Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_gcm Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_gcm Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_gcm Unexecuted instantiation: aes_common.c:br_ssl_engine_set_gcm Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_gcm Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_gcm Unexecuted instantiation: prf.c:br_ssl_engine_set_gcm Unexecuted instantiation: sysrng.c:br_ssl_engine_set_gcm Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_gcm Unexecuted instantiation: hmac.c:br_ssl_engine_set_gcm Unexecuted instantiation: shake.c:br_ssl_engine_set_gcm Unexecuted instantiation: hkdf.c:br_ssl_engine_set_gcm Unexecuted instantiation: sha2small.c:br_ssl_engine_set_gcm Unexecuted instantiation: sha2big.c:br_ssl_engine_set_gcm Unexecuted instantiation: sha1.c:br_ssl_engine_set_gcm Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_gcm Unexecuted instantiation: md5.c:br_ssl_engine_set_gcm Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_gcm Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_gcm Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_gcm Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_gcm Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_gcm Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_gcm Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_gcm Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_gcm Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_gcm Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_gcm Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_gcm Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_gcm Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_gcm Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_gcm Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_gcm Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_gcm Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_gcm Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_gcm Unexecuted instantiation: ec_default.c:br_ssl_engine_set_gcm Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_gcm Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_gcm Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_gcm Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_gcm Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_gcm Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_gcm Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_gcm Unexecuted instantiation: enc64be.c:br_ssl_engine_set_gcm Unexecuted instantiation: enc32le.c:br_ssl_engine_set_gcm Unexecuted instantiation: enc32be.c:br_ssl_engine_set_gcm Unexecuted instantiation: dec64be.c:br_ssl_engine_set_gcm Unexecuted instantiation: dec32le.c:br_ssl_engine_set_gcm Unexecuted instantiation: dec32be.c:br_ssl_engine_set_gcm Unexecuted instantiation: ccopy.c:br_ssl_engine_set_gcm Unexecuted instantiation: gcm.c:br_ssl_engine_set_gcm Unexecuted instantiation: ccm.c:br_ssl_engine_set_gcm Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_gcm Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_gcm Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_gcm Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_gcm Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_gcm Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_gcm Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_gcm Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_gcm Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_gcm Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_gcm Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_gcm Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_gcm Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_gcm Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_gcm Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_gcm Unexecuted instantiation: i31_add.c:br_ssl_engine_set_gcm Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_gcm Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_gcm Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_gcm Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_gcm Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_gcm Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_gcm Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_gcm Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_gcm Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_gcm Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_gcm Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_gcm Unexecuted instantiation: i15_add.c:br_ssl_engine_set_gcm Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_gcm Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_gcm Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_gcm Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_gcm Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_gcm |
1619 | | |
1620 | | /** |
1621 | | * \brief Set the record encryption and decryption engines for CCM. |
1622 | | * |
1623 | | * \param cc SSL engine context. |
1624 | | * \param impl_in record CCM decryption implementation (or `NULL`). |
1625 | | * \param impl_out record CCM encryption implementation (or `NULL`). |
1626 | | */ |
1627 | | static inline void |
1628 | | br_ssl_engine_set_ccm(br_ssl_engine_context *cc, |
1629 | | const br_sslrec_in_ccm_class *impl_in, |
1630 | | const br_sslrec_out_ccm_class *impl_out) |
1631 | 0 | { |
1632 | 0 | cc->iccm_in = impl_in; |
1633 | 0 | cc->iccm_out = impl_out; |
1634 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_ccm(br_ssl_engine_context*, br_sslrec_in_ccm_class_ const*, br_sslrec_out_ccm_class_ const*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_ccm Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_ccm Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_ccm Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_ccm Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_ccm Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_ccm Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_ccm Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_ccm Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_ccm Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_ccm Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_ccm Unexecuted instantiation: aes_common.c:br_ssl_engine_set_ccm Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_ccm Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_ccm Unexecuted instantiation: prf.c:br_ssl_engine_set_ccm Unexecuted instantiation: sysrng.c:br_ssl_engine_set_ccm Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_ccm Unexecuted instantiation: hmac.c:br_ssl_engine_set_ccm Unexecuted instantiation: shake.c:br_ssl_engine_set_ccm Unexecuted instantiation: hkdf.c:br_ssl_engine_set_ccm Unexecuted instantiation: sha2small.c:br_ssl_engine_set_ccm Unexecuted instantiation: sha2big.c:br_ssl_engine_set_ccm Unexecuted instantiation: sha1.c:br_ssl_engine_set_ccm Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_ccm Unexecuted instantiation: md5.c:br_ssl_engine_set_ccm Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_ccm Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_ccm Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_ccm Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_ccm Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_ccm Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_ccm Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_ccm Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_ccm Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_ccm Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_ccm Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_ccm Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_ccm Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_ccm Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_ccm Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_ccm Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_ccm Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_ccm Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_ccm Unexecuted instantiation: ec_default.c:br_ssl_engine_set_ccm Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_ccm Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_ccm Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_ccm Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_ccm Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_ccm Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_ccm Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_ccm Unexecuted instantiation: enc64be.c:br_ssl_engine_set_ccm Unexecuted instantiation: enc32le.c:br_ssl_engine_set_ccm Unexecuted instantiation: enc32be.c:br_ssl_engine_set_ccm Unexecuted instantiation: dec64be.c:br_ssl_engine_set_ccm Unexecuted instantiation: dec32le.c:br_ssl_engine_set_ccm Unexecuted instantiation: dec32be.c:br_ssl_engine_set_ccm Unexecuted instantiation: ccopy.c:br_ssl_engine_set_ccm Unexecuted instantiation: gcm.c:br_ssl_engine_set_ccm Unexecuted instantiation: ccm.c:br_ssl_engine_set_ccm Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_ccm Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_ccm Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_ccm Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_ccm Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_ccm Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_ccm Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_ccm Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_ccm Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_ccm Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_ccm Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_ccm Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_ccm Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_ccm Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_ccm Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_ccm Unexecuted instantiation: i31_add.c:br_ssl_engine_set_ccm Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_ccm Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_ccm Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_ccm Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_ccm Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_ccm Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_ccm Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_ccm Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_ccm Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_ccm Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_ccm Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_ccm Unexecuted instantiation: i15_add.c:br_ssl_engine_set_ccm Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_ccm Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_ccm Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_ccm Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_ccm Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_ccm |
1635 | | |
1636 | | /** |
1637 | | * \brief Set the record encryption and decryption engines for |
1638 | | * ChaCha20+Poly1305. |
1639 | | * |
1640 | | * \param cc SSL engine context. |
1641 | | * \param impl_in record ChaCha20 decryption implementation (or `NULL`). |
1642 | | * \param impl_out record ChaCha20 encryption implementation (or `NULL`). |
1643 | | */ |
1644 | | static inline void |
1645 | | br_ssl_engine_set_chapol(br_ssl_engine_context *cc, |
1646 | | const br_sslrec_in_chapol_class *impl_in, |
1647 | | const br_sslrec_out_chapol_class *impl_out) |
1648 | 0 | { |
1649 | 0 | cc->ichapol_in = impl_in; |
1650 | 0 | cc->ichapol_out = impl_out; |
1651 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_chapol(br_ssl_engine_context*, br_sslrec_in_chapol_class_ const*, br_sslrec_out_chapol_class_ const*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_chapol Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_chapol Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_chapol Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_chapol Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_chapol Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_chapol Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_chapol Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_chapol Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_chapol Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_chapol Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_chapol Unexecuted instantiation: aes_common.c:br_ssl_engine_set_chapol Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_chapol Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_chapol Unexecuted instantiation: prf.c:br_ssl_engine_set_chapol Unexecuted instantiation: sysrng.c:br_ssl_engine_set_chapol Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_chapol Unexecuted instantiation: hmac.c:br_ssl_engine_set_chapol Unexecuted instantiation: shake.c:br_ssl_engine_set_chapol Unexecuted instantiation: hkdf.c:br_ssl_engine_set_chapol Unexecuted instantiation: sha2small.c:br_ssl_engine_set_chapol Unexecuted instantiation: sha2big.c:br_ssl_engine_set_chapol Unexecuted instantiation: sha1.c:br_ssl_engine_set_chapol Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_chapol Unexecuted instantiation: md5.c:br_ssl_engine_set_chapol Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_chapol Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_chapol Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_chapol Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_chapol Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_chapol Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_chapol Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_chapol Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_chapol Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_chapol Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_chapol Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_chapol Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_chapol Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_chapol Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_chapol Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_chapol Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_chapol Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_chapol Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_chapol Unexecuted instantiation: ec_default.c:br_ssl_engine_set_chapol Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_chapol Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_chapol Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_chapol Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_chapol Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_chapol Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_chapol Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_chapol Unexecuted instantiation: enc64be.c:br_ssl_engine_set_chapol Unexecuted instantiation: enc32le.c:br_ssl_engine_set_chapol Unexecuted instantiation: enc32be.c:br_ssl_engine_set_chapol Unexecuted instantiation: dec64be.c:br_ssl_engine_set_chapol Unexecuted instantiation: dec32le.c:br_ssl_engine_set_chapol Unexecuted instantiation: dec32be.c:br_ssl_engine_set_chapol Unexecuted instantiation: ccopy.c:br_ssl_engine_set_chapol Unexecuted instantiation: gcm.c:br_ssl_engine_set_chapol Unexecuted instantiation: ccm.c:br_ssl_engine_set_chapol Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_chapol Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_chapol Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_chapol Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_chapol Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_chapol Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_chapol Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_chapol Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_chapol Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_chapol Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_chapol Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_chapol Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_chapol Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_chapol Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_chapol Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_chapol Unexecuted instantiation: i31_add.c:br_ssl_engine_set_chapol Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_chapol Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_chapol Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_chapol Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_chapol Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_chapol Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_chapol Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_chapol Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_chapol Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_chapol Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_chapol Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_chapol Unexecuted instantiation: i15_add.c:br_ssl_engine_set_chapol Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_chapol Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_chapol Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_chapol Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_chapol Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_chapol |
1652 | | |
1653 | | /** |
1654 | | * \brief Set the EC implementation. |
1655 | | * |
1656 | | * The elliptic curve implementation will be used for ECDH and ECDHE |
1657 | | * cipher suites, and for ECDSA support. |
1658 | | * |
1659 | | * \param cc SSL engine context. |
1660 | | * \param iec EC implementation (or `NULL`). |
1661 | | */ |
1662 | | static inline void |
1663 | | br_ssl_engine_set_ec(br_ssl_engine_context *cc, const br_ec_impl *iec) |
1664 | 0 | { |
1665 | 0 | cc->iec = iec; |
1666 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_ec(br_ssl_engine_context*, br_ec_impl const*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_ec Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_ec Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_ec Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_ec Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_ec Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_ec Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_ec Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_ec Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_ec Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_ec Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_ec Unexecuted instantiation: aes_common.c:br_ssl_engine_set_ec Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_ec Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_ec Unexecuted instantiation: prf.c:br_ssl_engine_set_ec Unexecuted instantiation: sysrng.c:br_ssl_engine_set_ec Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_ec Unexecuted instantiation: hmac.c:br_ssl_engine_set_ec Unexecuted instantiation: shake.c:br_ssl_engine_set_ec Unexecuted instantiation: hkdf.c:br_ssl_engine_set_ec Unexecuted instantiation: sha2small.c:br_ssl_engine_set_ec Unexecuted instantiation: sha2big.c:br_ssl_engine_set_ec Unexecuted instantiation: sha1.c:br_ssl_engine_set_ec Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_ec Unexecuted instantiation: md5.c:br_ssl_engine_set_ec Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_ec Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_ec Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_ec Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_ec Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_ec Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_ec Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_ec Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_ec Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_ec Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_ec Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_ec Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_ec Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_ec Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_ec Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_ec Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_ec Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_ec Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_ec Unexecuted instantiation: ec_default.c:br_ssl_engine_set_ec Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_ec Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_ec Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_ec Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_ec Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_ec Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_ec Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_ec Unexecuted instantiation: enc64be.c:br_ssl_engine_set_ec Unexecuted instantiation: enc32le.c:br_ssl_engine_set_ec Unexecuted instantiation: enc32be.c:br_ssl_engine_set_ec Unexecuted instantiation: dec64be.c:br_ssl_engine_set_ec Unexecuted instantiation: dec32le.c:br_ssl_engine_set_ec Unexecuted instantiation: dec32be.c:br_ssl_engine_set_ec Unexecuted instantiation: ccopy.c:br_ssl_engine_set_ec Unexecuted instantiation: gcm.c:br_ssl_engine_set_ec Unexecuted instantiation: ccm.c:br_ssl_engine_set_ec Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_ec Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_ec Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_ec Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_ec Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_ec Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_ec Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_ec Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_ec Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_ec Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_ec Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_ec Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_ec Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_ec Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_ec Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_ec Unexecuted instantiation: i31_add.c:br_ssl_engine_set_ec Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_ec Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_ec Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_ec Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_ec Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_ec Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_ec Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_ec Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_ec Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_ec Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_ec Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_ec Unexecuted instantiation: i15_add.c:br_ssl_engine_set_ec Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_ec Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_ec Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_ec Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_ec Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_ec |
1667 | | |
1668 | | /** |
1669 | | * \brief Set the "default" EC implementation. |
1670 | | * |
1671 | | * This function sets the elliptic curve implementation for ECDH and |
1672 | | * ECDHE cipher suites, and for ECDSA support. It selects the fastest |
1673 | | * implementation on the current system. |
1674 | | * |
1675 | | * \param cc SSL engine context. |
1676 | | */ |
1677 | | void br_ssl_engine_set_default_ec(br_ssl_engine_context *cc); |
1678 | | |
1679 | | /** |
1680 | | * \brief Get the EC implementation configured in the provided engine. |
1681 | | * |
1682 | | * \param cc SSL engine context. |
1683 | | * \return the EC implementation. |
1684 | | */ |
1685 | | static inline const br_ec_impl * |
1686 | | br_ssl_engine_get_ec(br_ssl_engine_context *cc) |
1687 | 0 | { |
1688 | 0 | return cc->iec; |
1689 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_get_ec(br_ssl_engine_context*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_get_ec Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_get_ec Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_get_ec Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_get_ec Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_get_ec Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_get_ec Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_get_ec Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_get_ec Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_get_ec Unexecuted instantiation: aes_ct64.c:br_ssl_engine_get_ec Unexecuted instantiation: aes_ct.c:br_ssl_engine_get_ec Unexecuted instantiation: aes_common.c:br_ssl_engine_get_ec Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_get_ec Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_get_ec Unexecuted instantiation: prf.c:br_ssl_engine_get_ec Unexecuted instantiation: sysrng.c:br_ssl_engine_get_ec Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_get_ec Unexecuted instantiation: hmac.c:br_ssl_engine_get_ec Unexecuted instantiation: shake.c:br_ssl_engine_get_ec Unexecuted instantiation: hkdf.c:br_ssl_engine_get_ec Unexecuted instantiation: sha2small.c:br_ssl_engine_get_ec Unexecuted instantiation: sha2big.c:br_ssl_engine_get_ec Unexecuted instantiation: sha1.c:br_ssl_engine_get_ec Unexecuted instantiation: md5sha1.c:br_ssl_engine_get_ec Unexecuted instantiation: md5.c:br_ssl_engine_get_ec Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_get_ec Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_get_ec Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_get_ec Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_get_ec Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_get_ec Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_get_ec Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_get_ec Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_get_ec Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_get_ec Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_get_ec Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_get_ec Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_get_ec Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_get_ec Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_get_ec Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_get_ec Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_get_ec Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_get_ec Unexecuted instantiation: ec_keygen.c:br_ssl_engine_get_ec Unexecuted instantiation: ec_default.c:br_ssl_engine_get_ec Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_get_ec Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_get_ec Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_get_ec Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_get_ec Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_get_ec Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_get_ec Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_get_ec Unexecuted instantiation: enc64be.c:br_ssl_engine_get_ec Unexecuted instantiation: enc32le.c:br_ssl_engine_get_ec Unexecuted instantiation: enc32be.c:br_ssl_engine_get_ec Unexecuted instantiation: dec64be.c:br_ssl_engine_get_ec Unexecuted instantiation: dec32le.c:br_ssl_engine_get_ec Unexecuted instantiation: dec32be.c:br_ssl_engine_get_ec Unexecuted instantiation: ccopy.c:br_ssl_engine_get_ec Unexecuted instantiation: gcm.c:br_ssl_engine_get_ec Unexecuted instantiation: ccm.c:br_ssl_engine_get_ec Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_get_ec Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_get_ec Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_get_ec Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_get_ec Unexecuted instantiation: i31_sub.c:br_ssl_engine_get_ec Unexecuted instantiation: i31_rshift.c:br_ssl_engine_get_ec Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_get_ec Unexecuted instantiation: i31_montmul.c:br_ssl_engine_get_ec Unexecuted instantiation: i31_modpow.c:br_ssl_engine_get_ec Unexecuted instantiation: i31_iszero.c:br_ssl_engine_get_ec Unexecuted instantiation: i31_fmont.c:br_ssl_engine_get_ec Unexecuted instantiation: i31_encode.c:br_ssl_engine_get_ec Unexecuted instantiation: i31_decode.c:br_ssl_engine_get_ec Unexecuted instantiation: i31_decmod.c:br_ssl_engine_get_ec Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_get_ec Unexecuted instantiation: i31_add.c:br_ssl_engine_get_ec Unexecuted instantiation: i15_sub.c:br_ssl_engine_get_ec Unexecuted instantiation: i15_rshift.c:br_ssl_engine_get_ec Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_get_ec Unexecuted instantiation: i15_montmul.c:br_ssl_engine_get_ec Unexecuted instantiation: i15_modpow.c:br_ssl_engine_get_ec Unexecuted instantiation: i15_iszero.c:br_ssl_engine_get_ec Unexecuted instantiation: i15_fmont.c:br_ssl_engine_get_ec Unexecuted instantiation: i15_encode.c:br_ssl_engine_get_ec Unexecuted instantiation: i15_decode.c:br_ssl_engine_get_ec Unexecuted instantiation: i15_decmod.c:br_ssl_engine_get_ec Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_get_ec Unexecuted instantiation: i15_add.c:br_ssl_engine_get_ec Unexecuted instantiation: i31_tmont.c:br_ssl_engine_get_ec Unexecuted instantiation: i31_muladd.c:br_ssl_engine_get_ec Unexecuted instantiation: i15_tmont.c:br_ssl_engine_get_ec Unexecuted instantiation: i15_muladd.c:br_ssl_engine_get_ec Unexecuted instantiation: i32_div32.c:br_ssl_engine_get_ec |
1690 | | |
1691 | | /** |
1692 | | * \brief Set the RSA signature verification implementation. |
1693 | | * |
1694 | | * On the client, this is used to verify the server's signature on its |
1695 | | * ServerKeyExchange message (for ECDHE_RSA cipher suites). On the server, |
1696 | | * this is used to verify the client's CertificateVerify message (if a |
1697 | | * client certificate is requested, and that certificate contains a RSA key). |
1698 | | * |
1699 | | * \param cc SSL engine context. |
1700 | | * \param irsavrfy RSA signature verification implementation. |
1701 | | */ |
1702 | | static inline void |
1703 | | br_ssl_engine_set_rsavrfy(br_ssl_engine_context *cc, br_rsa_pkcs1_vrfy irsavrfy) |
1704 | 0 | { |
1705 | 0 | cc->irsavrfy = irsavrfy; |
1706 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_rsavrfy(br_ssl_engine_context*, unsigned int (*)(unsigned char const*, unsigned long, unsigned char const*, unsigned long, br_rsa_public_key const*, unsigned char*)) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: aes_common.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: prf.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: sysrng.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: hmac.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: shake.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: hkdf.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: sha2small.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: sha2big.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: sha1.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: md5.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ec_default.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: enc64be.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: enc32le.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: enc32be.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: dec64be.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: dec32le.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: dec32be.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ccopy.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: gcm.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: ccm.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i31_add.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i15_add.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_rsavrfy Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_rsavrfy |
1707 | | |
1708 | | /** |
1709 | | * \brief Set the "default" RSA implementation (signature verification). |
1710 | | * |
1711 | | * This function sets the RSA implementation (signature verification) |
1712 | | * to the fastest implementation available on the current platform. |
1713 | | * |
1714 | | * \param cc SSL engine context. |
1715 | | */ |
1716 | | void br_ssl_engine_set_default_rsavrfy(br_ssl_engine_context *cc); |
1717 | | |
1718 | | /** |
1719 | | * \brief Get the RSA implementation (signature verification) configured |
1720 | | * in the provided engine. |
1721 | | * |
1722 | | * \param cc SSL engine context. |
1723 | | * \return the RSA signature verification implementation. |
1724 | | */ |
1725 | | static inline br_rsa_pkcs1_vrfy |
1726 | | br_ssl_engine_get_rsavrfy(br_ssl_engine_context *cc) |
1727 | 0 | { |
1728 | 0 | return cc->irsavrfy; |
1729 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_get_rsavrfy(br_ssl_engine_context*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: aes_ct64.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: aes_ct.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: aes_common.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: prf.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: sysrng.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: hmac.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: shake.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: hkdf.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: sha2small.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: sha2big.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: sha1.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: md5sha1.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: md5.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ec_keygen.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ec_default.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: enc64be.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: enc32le.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: enc32be.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: dec64be.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: dec32le.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: dec32be.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ccopy.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: gcm.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: ccm.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i31_sub.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i31_rshift.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i31_montmul.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i31_modpow.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i31_iszero.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i31_fmont.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i31_encode.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i31_decode.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i31_decmod.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i31_add.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i15_sub.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i15_rshift.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i15_montmul.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i15_modpow.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i15_iszero.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i15_fmont.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i15_encode.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i15_decode.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i15_decmod.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i15_add.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i31_tmont.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i31_muladd.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i15_tmont.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i15_muladd.c:br_ssl_engine_get_rsavrfy Unexecuted instantiation: i32_div32.c:br_ssl_engine_get_rsavrfy |
1730 | | |
1731 | | /* |
1732 | | * \brief Set the ECDSA implementation (signature verification). |
1733 | | * |
1734 | | * On the client, this is used to verify the server's signature on its |
1735 | | * ServerKeyExchange message (for ECDHE_ECDSA cipher suites). On the server, |
1736 | | * this is used to verify the client's CertificateVerify message (if a |
1737 | | * client certificate is requested, that certificate contains an EC key, |
1738 | | * and full-static ECDH is not used). |
1739 | | * |
1740 | | * The ECDSA implementation will use the EC core implementation configured |
1741 | | * in the engine context. |
1742 | | * |
1743 | | * \param cc client context. |
1744 | | * \param iecdsa ECDSA verification implementation. |
1745 | | */ |
1746 | | static inline void |
1747 | | br_ssl_engine_set_ecdsa(br_ssl_engine_context *cc, br_ecdsa_vrfy iecdsa) |
1748 | 0 | { |
1749 | 0 | cc->iecdsa = iecdsa; |
1750 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_ecdsa(br_ssl_engine_context*, unsigned int (*)(br_ec_impl const*, void const*, unsigned long, br_ec_public_key const*, void const*, unsigned long)) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: aes_common.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: prf.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: sysrng.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: hmac.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: shake.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: hkdf.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: sha2small.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: sha2big.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: sha1.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: md5.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ec_default.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: enc64be.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: enc32le.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: enc32be.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: dec64be.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: dec32le.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: dec32be.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ccopy.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: gcm.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: ccm.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i31_add.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i15_add.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_ecdsa Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_ecdsa |
1751 | | |
1752 | | /** |
1753 | | * \brief Set the "default" ECDSA implementation (signature verification). |
1754 | | * |
1755 | | * This function sets the ECDSA implementation (signature verification) |
1756 | | * to the fastest implementation available on the current platform. This |
1757 | | * call also sets the elliptic curve implementation itself, there again |
1758 | | * to the fastest EC implementation available. |
1759 | | * |
1760 | | * \param cc SSL engine context. |
1761 | | */ |
1762 | | void br_ssl_engine_set_default_ecdsa(br_ssl_engine_context *cc); |
1763 | | |
1764 | | /** |
1765 | | * \brief Get the ECDSA implementation (signature verification) configured |
1766 | | * in the provided engine. |
1767 | | * |
1768 | | * \param cc SSL engine context. |
1769 | | * \return the ECDSA signature verification implementation. |
1770 | | */ |
1771 | | static inline br_ecdsa_vrfy |
1772 | | br_ssl_engine_get_ecdsa(br_ssl_engine_context *cc) |
1773 | 0 | { |
1774 | 0 | return cc->iecdsa; |
1775 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_get_ecdsa(br_ssl_engine_context*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: aes_ct64.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: aes_ct.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: aes_common.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: prf.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: sysrng.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: hmac.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: shake.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: hkdf.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: sha2small.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: sha2big.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: sha1.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: md5sha1.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: md5.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ec_keygen.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ec_default.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: enc64be.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: enc32le.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: enc32be.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: dec64be.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: dec32le.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: dec32be.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ccopy.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: gcm.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: ccm.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i31_sub.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i31_rshift.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i31_montmul.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i31_modpow.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i31_iszero.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i31_fmont.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i31_encode.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i31_decode.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i31_decmod.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i31_add.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i15_sub.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i15_rshift.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i15_montmul.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i15_modpow.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i15_iszero.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i15_fmont.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i15_encode.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i15_decode.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i15_decmod.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i15_add.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i31_tmont.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i31_muladd.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i15_tmont.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i15_muladd.c:br_ssl_engine_get_ecdsa Unexecuted instantiation: i32_div32.c:br_ssl_engine_get_ecdsa |
1776 | | |
1777 | | /** |
1778 | | * \brief Set the I/O buffer for the SSL engine. |
1779 | | * |
1780 | | * Once this call has been made, `br_ssl_client_reset()` or |
1781 | | * `br_ssl_server_reset()` MUST be called before using the context. |
1782 | | * |
1783 | | * The provided buffer will be used as long as the engine context is |
1784 | | * used. The caller is responsible for keeping it available. |
1785 | | * |
1786 | | * If `bidi` is 0, then the engine will operate in half-duplex mode |
1787 | | * (it won't be able to send data while there is unprocessed incoming |
1788 | | * data in the buffer, and it won't be able to receive data while there |
1789 | | * is unsent data in the buffer). The optimal buffer size in half-duplex |
1790 | | * mode is `BR_SSL_BUFSIZE_MONO`; if the buffer is larger, then extra |
1791 | | * bytes are ignored. If the buffer is smaller, then this limits the |
1792 | | * capacity of the engine to support all allowed record sizes. |
1793 | | * |
1794 | | * If `bidi` is 1, then the engine will split the buffer into two |
1795 | | * parts, for separate handling of outgoing and incoming data. This |
1796 | | * enables full-duplex processing, but requires more RAM. The optimal |
1797 | | * buffer size in full-duplex mode is `BR_SSL_BUFSIZE_BIDI`; if the |
1798 | | * buffer is larger, then extra bytes are ignored. If the buffer is |
1799 | | * smaller, then the split will favour the incoming part, so that |
1800 | | * interoperability is maximised. |
1801 | | * |
1802 | | * \param cc SSL engine context |
1803 | | * \param iobuf I/O buffer. |
1804 | | * \param iobuf_len I/O buffer length (in bytes). |
1805 | | * \param bidi non-zero for full-duplex mode. |
1806 | | */ |
1807 | | void br_ssl_engine_set_buffer(br_ssl_engine_context *cc, |
1808 | | void *iobuf, size_t iobuf_len, int bidi); |
1809 | | |
1810 | | /** |
1811 | | * \brief Set the I/O buffers for the SSL engine. |
1812 | | * |
1813 | | * Once this call has been made, `br_ssl_client_reset()` or |
1814 | | * `br_ssl_server_reset()` MUST be called before using the context. |
1815 | | * |
1816 | | * This function is similar to `br_ssl_engine_set_buffer()`, except |
1817 | | * that it enforces full-duplex mode, and the two I/O buffers are |
1818 | | * provided as separate chunks. |
1819 | | * |
1820 | | * The macros `BR_SSL_BUFSIZE_INPUT` and `BR_SSL_BUFSIZE_OUTPUT` |
1821 | | * evaluate to the optimal (maximum) sizes for the input and output |
1822 | | * buffer, respectively. |
1823 | | * |
1824 | | * \param cc SSL engine context |
1825 | | * \param ibuf input buffer. |
1826 | | * \param ibuf_len input buffer length (in bytes). |
1827 | | * \param obuf output buffer. |
1828 | | * \param obuf_len output buffer length (in bytes). |
1829 | | */ |
1830 | | void br_ssl_engine_set_buffers_bidi(br_ssl_engine_context *cc, |
1831 | | void *ibuf, size_t ibuf_len, void *obuf, size_t obuf_len); |
1832 | | |
1833 | | /** |
1834 | | * \brief Inject some "initial entropy" in the context. |
1835 | | * |
1836 | | * This entropy will be added to what can be obtained from the |
1837 | | * underlying operating system, if that OS is supported. |
1838 | | * |
1839 | | * This function may be called several times; all injected entropy chunks |
1840 | | * are cumulatively mixed. |
1841 | | * |
1842 | | * If entropy gathering from the OS is supported and compiled in, then this |
1843 | | * step is optional. Otherwise, it is mandatory to inject randomness, and |
1844 | | * the caller MUST take care to push (as one or several successive calls) |
1845 | | * enough entropy to achieve cryptographic resistance (at least 80 bits, |
1846 | | * preferably 128 or more). The engine will report an error if no entropy |
1847 | | * was provided and none can be obtained from the OS. |
1848 | | * |
1849 | | * Take care that this function cannot assess the cryptographic quality of |
1850 | | * the provided bytes. |
1851 | | * |
1852 | | * In all generality, "entropy" must here be considered to mean "that |
1853 | | * which the attacker cannot predict". If your OS/architecture does not |
1854 | | * have a suitable source of randomness, then you can make do with the |
1855 | | * combination of a large enough secret value (possibly a copy of an |
1856 | | * asymmetric private key that you also store on the system) AND a |
1857 | | * non-repeating value (e.g. current time, provided that the local clock |
1858 | | * cannot be reset or altered by the attacker). |
1859 | | * |
1860 | | * \param cc SSL engine context. |
1861 | | * \param data extra entropy to inject. |
1862 | | * \param len length of the extra data (in bytes). |
1863 | | */ |
1864 | | void br_ssl_engine_inject_entropy(br_ssl_engine_context *cc, |
1865 | | const void *data, size_t len); |
1866 | | |
1867 | | /** |
1868 | | * \brief Get the "server name" in this engine. |
1869 | | * |
1870 | | * For clients, this is the name provided with `br_ssl_client_reset()`; |
1871 | | * for servers, this is the name received from the client as part of the |
1872 | | * ClientHello message. If there is no such name (e.g. the client did |
1873 | | * not send an SNI extension) then the returned string is empty |
1874 | | * (returned pointer points to a byte of value 0). |
1875 | | * |
1876 | | * The returned pointer refers to a buffer inside the context, which may |
1877 | | * be overwritten as part of normal SSL activity (even within the same |
1878 | | * connection, if a renegotiation occurs). |
1879 | | * |
1880 | | * \param cc SSL engine context. |
1881 | | * \return the server name (possibly empty). |
1882 | | */ |
1883 | | static inline const char * |
1884 | | br_ssl_engine_get_server_name(const br_ssl_engine_context *cc) |
1885 | 0 | { |
1886 | 0 | return cc->server_name; |
1887 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_get_server_name(br_ssl_engine_context const*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_get_server_name Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_get_server_name Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_get_server_name Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_get_server_name Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_get_server_name Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_get_server_name Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_get_server_name Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_get_server_name Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_get_server_name Unexecuted instantiation: aes_ct64.c:br_ssl_engine_get_server_name Unexecuted instantiation: aes_ct.c:br_ssl_engine_get_server_name Unexecuted instantiation: aes_common.c:br_ssl_engine_get_server_name Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_get_server_name Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_get_server_name Unexecuted instantiation: prf.c:br_ssl_engine_get_server_name Unexecuted instantiation: sysrng.c:br_ssl_engine_get_server_name Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_get_server_name Unexecuted instantiation: hmac.c:br_ssl_engine_get_server_name Unexecuted instantiation: shake.c:br_ssl_engine_get_server_name Unexecuted instantiation: hkdf.c:br_ssl_engine_get_server_name Unexecuted instantiation: sha2small.c:br_ssl_engine_get_server_name Unexecuted instantiation: sha2big.c:br_ssl_engine_get_server_name Unexecuted instantiation: sha1.c:br_ssl_engine_get_server_name Unexecuted instantiation: md5sha1.c:br_ssl_engine_get_server_name Unexecuted instantiation: md5.c:br_ssl_engine_get_server_name Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_get_server_name Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_get_server_name Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_get_server_name Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_get_server_name Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_get_server_name Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_get_server_name Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_get_server_name Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_get_server_name Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_get_server_name Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_get_server_name Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_get_server_name Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_get_server_name Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_get_server_name Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_get_server_name Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_get_server_name Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_get_server_name Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_get_server_name Unexecuted instantiation: ec_keygen.c:br_ssl_engine_get_server_name Unexecuted instantiation: ec_default.c:br_ssl_engine_get_server_name Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_get_server_name Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_get_server_name Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_get_server_name Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_get_server_name Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_get_server_name Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_get_server_name Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_get_server_name Unexecuted instantiation: enc64be.c:br_ssl_engine_get_server_name Unexecuted instantiation: enc32le.c:br_ssl_engine_get_server_name Unexecuted instantiation: enc32be.c:br_ssl_engine_get_server_name Unexecuted instantiation: dec64be.c:br_ssl_engine_get_server_name Unexecuted instantiation: dec32le.c:br_ssl_engine_get_server_name Unexecuted instantiation: dec32be.c:br_ssl_engine_get_server_name Unexecuted instantiation: ccopy.c:br_ssl_engine_get_server_name Unexecuted instantiation: gcm.c:br_ssl_engine_get_server_name Unexecuted instantiation: ccm.c:br_ssl_engine_get_server_name Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_get_server_name Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_get_server_name Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_get_server_name Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_get_server_name Unexecuted instantiation: i31_sub.c:br_ssl_engine_get_server_name Unexecuted instantiation: i31_rshift.c:br_ssl_engine_get_server_name Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_get_server_name Unexecuted instantiation: i31_montmul.c:br_ssl_engine_get_server_name Unexecuted instantiation: i31_modpow.c:br_ssl_engine_get_server_name Unexecuted instantiation: i31_iszero.c:br_ssl_engine_get_server_name Unexecuted instantiation: i31_fmont.c:br_ssl_engine_get_server_name Unexecuted instantiation: i31_encode.c:br_ssl_engine_get_server_name Unexecuted instantiation: i31_decode.c:br_ssl_engine_get_server_name Unexecuted instantiation: i31_decmod.c:br_ssl_engine_get_server_name Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_get_server_name Unexecuted instantiation: i31_add.c:br_ssl_engine_get_server_name Unexecuted instantiation: i15_sub.c:br_ssl_engine_get_server_name Unexecuted instantiation: i15_rshift.c:br_ssl_engine_get_server_name Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_get_server_name Unexecuted instantiation: i15_montmul.c:br_ssl_engine_get_server_name Unexecuted instantiation: i15_modpow.c:br_ssl_engine_get_server_name Unexecuted instantiation: i15_iszero.c:br_ssl_engine_get_server_name Unexecuted instantiation: i15_fmont.c:br_ssl_engine_get_server_name Unexecuted instantiation: i15_encode.c:br_ssl_engine_get_server_name Unexecuted instantiation: i15_decode.c:br_ssl_engine_get_server_name Unexecuted instantiation: i15_decmod.c:br_ssl_engine_get_server_name Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_get_server_name Unexecuted instantiation: i15_add.c:br_ssl_engine_get_server_name Unexecuted instantiation: i31_tmont.c:br_ssl_engine_get_server_name Unexecuted instantiation: i31_muladd.c:br_ssl_engine_get_server_name Unexecuted instantiation: i15_tmont.c:br_ssl_engine_get_server_name Unexecuted instantiation: i15_muladd.c:br_ssl_engine_get_server_name Unexecuted instantiation: i32_div32.c:br_ssl_engine_get_server_name |
1888 | | |
1889 | | /** |
1890 | | * \brief Get the protocol version. |
1891 | | * |
1892 | | * This function returns the protocol version that is used by the |
1893 | | * engine. That value is set after sending (for a server) or receiving |
1894 | | * (for a client) the ServerHello message. |
1895 | | * |
1896 | | * \param cc SSL engine context. |
1897 | | * \return the protocol version. |
1898 | | */ |
1899 | | static inline unsigned |
1900 | | br_ssl_engine_get_version(const br_ssl_engine_context *cc) |
1901 | 0 | { |
1902 | 0 | return cc->session.version; |
1903 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_get_version(br_ssl_engine_context const*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_get_version Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_get_version Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_get_version Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_get_version Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_get_version Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_get_version Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_get_version Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_get_version Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_get_version Unexecuted instantiation: aes_ct64.c:br_ssl_engine_get_version Unexecuted instantiation: aes_ct.c:br_ssl_engine_get_version Unexecuted instantiation: aes_common.c:br_ssl_engine_get_version Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_get_version Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_get_version Unexecuted instantiation: prf.c:br_ssl_engine_get_version Unexecuted instantiation: sysrng.c:br_ssl_engine_get_version Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_get_version Unexecuted instantiation: hmac.c:br_ssl_engine_get_version Unexecuted instantiation: shake.c:br_ssl_engine_get_version Unexecuted instantiation: hkdf.c:br_ssl_engine_get_version Unexecuted instantiation: sha2small.c:br_ssl_engine_get_version Unexecuted instantiation: sha2big.c:br_ssl_engine_get_version Unexecuted instantiation: sha1.c:br_ssl_engine_get_version Unexecuted instantiation: md5sha1.c:br_ssl_engine_get_version Unexecuted instantiation: md5.c:br_ssl_engine_get_version Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_get_version Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_get_version Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_get_version Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_get_version Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_get_version Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_get_version Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_get_version Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_get_version Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_get_version Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_get_version Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_get_version Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_get_version Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_get_version Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_get_version Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_get_version Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_get_version Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_get_version Unexecuted instantiation: ec_keygen.c:br_ssl_engine_get_version Unexecuted instantiation: ec_default.c:br_ssl_engine_get_version Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_get_version Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_get_version Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_get_version Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_get_version Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_get_version Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_get_version Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_get_version Unexecuted instantiation: enc64be.c:br_ssl_engine_get_version Unexecuted instantiation: enc32le.c:br_ssl_engine_get_version Unexecuted instantiation: enc32be.c:br_ssl_engine_get_version Unexecuted instantiation: dec64be.c:br_ssl_engine_get_version Unexecuted instantiation: dec32le.c:br_ssl_engine_get_version Unexecuted instantiation: dec32be.c:br_ssl_engine_get_version Unexecuted instantiation: ccopy.c:br_ssl_engine_get_version Unexecuted instantiation: gcm.c:br_ssl_engine_get_version Unexecuted instantiation: ccm.c:br_ssl_engine_get_version Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_get_version Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_get_version Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_get_version Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_get_version Unexecuted instantiation: i31_sub.c:br_ssl_engine_get_version Unexecuted instantiation: i31_rshift.c:br_ssl_engine_get_version Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_get_version Unexecuted instantiation: i31_montmul.c:br_ssl_engine_get_version Unexecuted instantiation: i31_modpow.c:br_ssl_engine_get_version Unexecuted instantiation: i31_iszero.c:br_ssl_engine_get_version Unexecuted instantiation: i31_fmont.c:br_ssl_engine_get_version Unexecuted instantiation: i31_encode.c:br_ssl_engine_get_version Unexecuted instantiation: i31_decode.c:br_ssl_engine_get_version Unexecuted instantiation: i31_decmod.c:br_ssl_engine_get_version Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_get_version Unexecuted instantiation: i31_add.c:br_ssl_engine_get_version Unexecuted instantiation: i15_sub.c:br_ssl_engine_get_version Unexecuted instantiation: i15_rshift.c:br_ssl_engine_get_version Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_get_version Unexecuted instantiation: i15_montmul.c:br_ssl_engine_get_version Unexecuted instantiation: i15_modpow.c:br_ssl_engine_get_version Unexecuted instantiation: i15_iszero.c:br_ssl_engine_get_version Unexecuted instantiation: i15_fmont.c:br_ssl_engine_get_version Unexecuted instantiation: i15_encode.c:br_ssl_engine_get_version Unexecuted instantiation: i15_decode.c:br_ssl_engine_get_version Unexecuted instantiation: i15_decmod.c:br_ssl_engine_get_version Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_get_version Unexecuted instantiation: i15_add.c:br_ssl_engine_get_version Unexecuted instantiation: i31_tmont.c:br_ssl_engine_get_version Unexecuted instantiation: i31_muladd.c:br_ssl_engine_get_version Unexecuted instantiation: i15_tmont.c:br_ssl_engine_get_version Unexecuted instantiation: i15_muladd.c:br_ssl_engine_get_version Unexecuted instantiation: i32_div32.c:br_ssl_engine_get_version |
1904 | | |
1905 | | /** |
1906 | | * \brief Get a copy of the session parameters. |
1907 | | * |
1908 | | * The session parameters are filled during the handshake, so this |
1909 | | * function shall not be called before completion of the handshake. |
1910 | | * The initial handshake is completed when the context first allows |
1911 | | * application data to be injected. |
1912 | | * |
1913 | | * This function copies the current session parameters into the provided |
1914 | | * structure. Beware that the session parameters include the master |
1915 | | * secret, which is sensitive data, to handle with great care. |
1916 | | * |
1917 | | * \param cc SSL engine context. |
1918 | | * \param pp destination structure for the session parameters. |
1919 | | */ |
1920 | | static inline void |
1921 | | br_ssl_engine_get_session_parameters(const br_ssl_engine_context *cc, |
1922 | | br_ssl_session_parameters *pp) |
1923 | 0 | { |
1924 | 0 | memcpy(pp, &cc->session, sizeof *pp); |
1925 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_get_session_parameters(br_ssl_engine_context const*, br_ssl_session_parameters*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: aes_ct64.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: aes_ct.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: aes_common.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: prf.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: sysrng.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: hmac.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: shake.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: hkdf.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: sha2small.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: sha2big.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: sha1.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: md5sha1.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: md5.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ec_keygen.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ec_default.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: enc64be.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: enc32le.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: enc32be.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: dec64be.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: dec32le.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: dec32be.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ccopy.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: gcm.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: ccm.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i31_sub.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i31_rshift.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i31_montmul.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i31_modpow.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i31_iszero.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i31_fmont.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i31_encode.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i31_decode.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i31_decmod.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i31_add.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i15_sub.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i15_rshift.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i15_montmul.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i15_modpow.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i15_iszero.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i15_fmont.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i15_encode.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i15_decode.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i15_decmod.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i15_add.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i31_tmont.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i31_muladd.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i15_tmont.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i15_muladd.c:br_ssl_engine_get_session_parameters Unexecuted instantiation: i32_div32.c:br_ssl_engine_get_session_parameters |
1926 | | |
1927 | | /** |
1928 | | * \brief Set the session parameters to the provided values. |
1929 | | * |
1930 | | * This function is meant to be used in the client, before doing a new |
1931 | | * handshake; a session resumption will be attempted with these |
1932 | | * parameters. In the server, this function has no effect. |
1933 | | * |
1934 | | * \param cc SSL engine context. |
1935 | | * \param pp source structure for the session parameters. |
1936 | | */ |
1937 | | static inline void |
1938 | | br_ssl_engine_set_session_parameters(br_ssl_engine_context *cc, |
1939 | | const br_ssl_session_parameters *pp) |
1940 | 0 | { |
1941 | 0 | memcpy(&cc->session, pp, sizeof *pp); |
1942 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_set_session_parameters(br_ssl_engine_context*, br_ssl_session_parameters const*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: aes_ct64.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: aes_ct.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: aes_common.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: prf.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: sysrng.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: hmac.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: shake.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: hkdf.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: sha2small.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: sha2big.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: sha1.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: md5sha1.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: md5.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ec_keygen.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ec_default.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: enc64be.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: enc32le.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: enc32be.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: dec64be.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: dec32le.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: dec32be.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ccopy.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: gcm.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: ccm.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i31_sub.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i31_rshift.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i31_montmul.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i31_modpow.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i31_iszero.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i31_fmont.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i31_encode.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i31_decode.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i31_decmod.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i31_add.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i15_sub.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i15_rshift.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i15_montmul.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i15_modpow.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i15_iszero.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i15_fmont.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i15_encode.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i15_decode.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i15_decmod.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i15_add.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i31_tmont.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i31_muladd.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i15_tmont.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i15_muladd.c:br_ssl_engine_set_session_parameters Unexecuted instantiation: i32_div32.c:br_ssl_engine_set_session_parameters |
1943 | | |
1944 | | /** |
1945 | | * \brief Get identifier for the curve used for key exchange. |
1946 | | * |
1947 | | * If the cipher suite uses ECDHE, then this function returns the |
1948 | | * identifier for the curve used for transient parameters. This is |
1949 | | * defined during the course of the handshake, when the ServerKeyExchange |
1950 | | * is sent (on the server) or received (on the client). If the |
1951 | | * cipher suite does not use ECDHE (e.g. static ECDH, or RSA key |
1952 | | * exchange), then this value is indeterminate. |
1953 | | * |
1954 | | * @param cc SSL engine context. |
1955 | | * @return the ECDHE curve identifier. |
1956 | | */ |
1957 | | static inline int |
1958 | | br_ssl_engine_get_ecdhe_curve(br_ssl_engine_context *cc) |
1959 | 0 | { |
1960 | 0 | return cc->ecdhe_curve; |
1961 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_get_ecdhe_curve(br_ssl_engine_context*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: aes_ct64.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: aes_ct.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: aes_common.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: prf.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: sysrng.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: hmac.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: shake.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: hkdf.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: sha2small.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: sha2big.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: sha1.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: md5sha1.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: md5.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ec_keygen.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ec_default.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: enc64be.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: enc32le.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: enc32be.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: dec64be.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: dec32le.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: dec32be.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ccopy.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: gcm.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: ccm.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i31_sub.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i31_rshift.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i31_montmul.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i31_modpow.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i31_iszero.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i31_fmont.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i31_encode.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i31_decode.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i31_decmod.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i31_add.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i15_sub.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i15_rshift.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i15_montmul.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i15_modpow.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i15_iszero.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i15_fmont.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i15_encode.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i15_decode.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i15_decmod.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i15_add.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i31_tmont.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i31_muladd.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i15_tmont.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i15_muladd.c:br_ssl_engine_get_ecdhe_curve Unexecuted instantiation: i32_div32.c:br_ssl_engine_get_ecdhe_curve |
1962 | | |
1963 | | /** |
1964 | | * \brief Get the current engine state. |
1965 | | * |
1966 | | * An SSL engine (client or server) has, at any time, a state which is |
1967 | | * the combination of zero, one or more of these flags: |
1968 | | * |
1969 | | * - `BR_SSL_CLOSED` |
1970 | | * |
1971 | | * Engine is finished, no more I/O (until next reset). |
1972 | | * |
1973 | | * - `BR_SSL_SENDREC` |
1974 | | * |
1975 | | * Engine has some bytes to send to the peer. |
1976 | | * |
1977 | | * - `BR_SSL_RECVREC` |
1978 | | * |
1979 | | * Engine expects some bytes from the peer. |
1980 | | * |
1981 | | * - `BR_SSL_SENDAPP` |
1982 | | * |
1983 | | * Engine may receive application data to send (or flush). |
1984 | | * |
1985 | | * - `BR_SSL_RECVAPP` |
1986 | | * |
1987 | | * Engine has obtained some application data from the peer, |
1988 | | * that should be read by the caller. |
1989 | | * |
1990 | | * If no flag at all is set (state value is 0), then the engine is not |
1991 | | * fully initialised yet. |
1992 | | * |
1993 | | * The `BR_SSL_CLOSED` flag is exclusive; when it is set, no other flag |
1994 | | * is set. To distinguish between a normal closure and an error, use |
1995 | | * `br_ssl_engine_last_error()`. |
1996 | | * |
1997 | | * Generally speaking, `BR_SSL_SENDREC` and `BR_SSL_SENDAPP` are mutually |
1998 | | * exclusive: the input buffer, at any point, either accumulates |
1999 | | * plaintext data, or contains an assembled record that is being sent. |
2000 | | * Similarly, `BR_SSL_RECVREC` and `BR_SSL_RECVAPP` are mutually exclusive. |
2001 | | * This may change in a future library version. |
2002 | | * |
2003 | | * \param cc SSL engine context. |
2004 | | * \return the current engine state. |
2005 | | */ |
2006 | | unsigned br_ssl_engine_current_state(const br_ssl_engine_context *cc); |
2007 | | |
2008 | | /** \brief SSL engine state: closed or failed. */ |
2009 | | #define BR_SSL_CLOSED 0x0001 |
2010 | | /** \brief SSL engine state: record data is ready to be sent to the peer. */ |
2011 | | #define BR_SSL_SENDREC 0x0002 |
2012 | | /** \brief SSL engine state: engine may receive records from the peer. */ |
2013 | | #define BR_SSL_RECVREC 0x0004 |
2014 | | /** \brief SSL engine state: engine may accept application data to send. */ |
2015 | | #define BR_SSL_SENDAPP 0x0008 |
2016 | | /** \brief SSL engine state: engine has received application data. */ |
2017 | | #define BR_SSL_RECVAPP 0x0010 |
2018 | | |
2019 | | /** |
2020 | | * \brief Get the engine error indicator. |
2021 | | * |
2022 | | * The error indicator is `BR_ERR_OK` (0) if no error was encountered |
2023 | | * since the last call to `br_ssl_client_reset()` or |
2024 | | * `br_ssl_server_reset()`. Other status values are "sticky": they |
2025 | | * remain set, and prevent all I/O activity, until cleared. Only the |
2026 | | * reset calls clear the error indicator. |
2027 | | * |
2028 | | * \param cc SSL engine context. |
2029 | | * \return 0, or a non-zero error code. |
2030 | | */ |
2031 | | static inline int |
2032 | | br_ssl_engine_last_error(const br_ssl_engine_context *cc) |
2033 | 0 | { |
2034 | 0 | return cc->err; |
2035 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_engine_last_error(br_ssl_engine_context const*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_engine_last_error Unexecuted instantiation: chacha20_sse2.c:br_ssl_engine_last_error Unexecuted instantiation: chacha20_ct.c:br_ssl_engine_last_error Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_engine_last_error Unexecuted instantiation: aes_x86ni.c:br_ssl_engine_last_error Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_engine_last_error Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_engine_last_error Unexecuted instantiation: aes_ct_ctr.c:br_ssl_engine_last_error Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_engine_last_error Unexecuted instantiation: aes_ct64.c:br_ssl_engine_last_error Unexecuted instantiation: aes_ct.c:br_ssl_engine_last_error Unexecuted instantiation: aes_common.c:br_ssl_engine_last_error Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_engine_last_error Unexecuted instantiation: prf_md5sha1.c:br_ssl_engine_last_error Unexecuted instantiation: prf.c:br_ssl_engine_last_error Unexecuted instantiation: sysrng.c:br_ssl_engine_last_error Unexecuted instantiation: hmac_drbg.c:br_ssl_engine_last_error Unexecuted instantiation: hmac.c:br_ssl_engine_last_error Unexecuted instantiation: shake.c:br_ssl_engine_last_error Unexecuted instantiation: hkdf.c:br_ssl_engine_last_error Unexecuted instantiation: sha2small.c:br_ssl_engine_last_error Unexecuted instantiation: sha2big.c:br_ssl_engine_last_error Unexecuted instantiation: sha1.c:br_ssl_engine_last_error Unexecuted instantiation: md5sha1.c:br_ssl_engine_last_error Unexecuted instantiation: md5.c:br_ssl_engine_last_error Unexecuted instantiation: ghash_ctmul32.c:br_ssl_engine_last_error Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_engine_last_error Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_engine_last_error Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_engine_last_error Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_engine_last_error Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_engine_last_error Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_engine_last_error Unexecuted instantiation: ec_secp521r1.c:br_ssl_engine_last_error Unexecuted instantiation: ec_secp384r1.c:br_ssl_engine_last_error Unexecuted instantiation: ec_secp256r1.c:br_ssl_engine_last_error Unexecuted instantiation: ec_pubkey.c:br_ssl_engine_last_error Unexecuted instantiation: ec_prime_i31.c:br_ssl_engine_last_error Unexecuted instantiation: ec_prime_i15.c:br_ssl_engine_last_error Unexecuted instantiation: ec_p256_m64.c:br_ssl_engine_last_error Unexecuted instantiation: ec_p256_m62.c:br_ssl_engine_last_error Unexecuted instantiation: ec_p256_m31.c:br_ssl_engine_last_error Unexecuted instantiation: ec_p256_m15.c:br_ssl_engine_last_error Unexecuted instantiation: ec_keygen.c:br_ssl_engine_last_error Unexecuted instantiation: ec_default.c:br_ssl_engine_last_error Unexecuted instantiation: ec_c25519_m64.c:br_ssl_engine_last_error Unexecuted instantiation: ec_c25519_m62.c:br_ssl_engine_last_error Unexecuted instantiation: ec_c25519_m31.c:br_ssl_engine_last_error Unexecuted instantiation: ec_c25519_m15.c:br_ssl_engine_last_error Unexecuted instantiation: ec_c25519_i31.c:br_ssl_engine_last_error Unexecuted instantiation: ec_c25519_i15.c:br_ssl_engine_last_error Unexecuted instantiation: ec_all_m31.c:br_ssl_engine_last_error Unexecuted instantiation: enc64be.c:br_ssl_engine_last_error Unexecuted instantiation: enc32le.c:br_ssl_engine_last_error Unexecuted instantiation: enc32be.c:br_ssl_engine_last_error Unexecuted instantiation: dec64be.c:br_ssl_engine_last_error Unexecuted instantiation: dec32le.c:br_ssl_engine_last_error Unexecuted instantiation: dec32be.c:br_ssl_engine_last_error Unexecuted instantiation: ccopy.c:br_ssl_engine_last_error Unexecuted instantiation: gcm.c:br_ssl_engine_last_error Unexecuted instantiation: ccm.c:br_ssl_engine_last_error Unexecuted instantiation: aes_small_enc.c:br_ssl_engine_last_error Unexecuted instantiation: aes_ct_enc.c:br_ssl_engine_last_error Unexecuted instantiation: aes_ct64_enc.c:br_ssl_engine_last_error Unexecuted instantiation: aes_big_enc.c:br_ssl_engine_last_error Unexecuted instantiation: i31_sub.c:br_ssl_engine_last_error Unexecuted instantiation: i31_rshift.c:br_ssl_engine_last_error Unexecuted instantiation: i31_ninv31.c:br_ssl_engine_last_error Unexecuted instantiation: i31_montmul.c:br_ssl_engine_last_error Unexecuted instantiation: i31_modpow.c:br_ssl_engine_last_error Unexecuted instantiation: i31_iszero.c:br_ssl_engine_last_error Unexecuted instantiation: i31_fmont.c:br_ssl_engine_last_error Unexecuted instantiation: i31_encode.c:br_ssl_engine_last_error Unexecuted instantiation: i31_decode.c:br_ssl_engine_last_error Unexecuted instantiation: i31_decmod.c:br_ssl_engine_last_error Unexecuted instantiation: i31_bitlen.c:br_ssl_engine_last_error Unexecuted instantiation: i31_add.c:br_ssl_engine_last_error Unexecuted instantiation: i15_sub.c:br_ssl_engine_last_error Unexecuted instantiation: i15_rshift.c:br_ssl_engine_last_error Unexecuted instantiation: i15_ninv15.c:br_ssl_engine_last_error Unexecuted instantiation: i15_montmul.c:br_ssl_engine_last_error Unexecuted instantiation: i15_modpow.c:br_ssl_engine_last_error Unexecuted instantiation: i15_iszero.c:br_ssl_engine_last_error Unexecuted instantiation: i15_fmont.c:br_ssl_engine_last_error Unexecuted instantiation: i15_encode.c:br_ssl_engine_last_error Unexecuted instantiation: i15_decode.c:br_ssl_engine_last_error Unexecuted instantiation: i15_decmod.c:br_ssl_engine_last_error Unexecuted instantiation: i15_bitlen.c:br_ssl_engine_last_error Unexecuted instantiation: i15_add.c:br_ssl_engine_last_error Unexecuted instantiation: i31_tmont.c:br_ssl_engine_last_error Unexecuted instantiation: i31_muladd.c:br_ssl_engine_last_error Unexecuted instantiation: i15_tmont.c:br_ssl_engine_last_error Unexecuted instantiation: i15_muladd.c:br_ssl_engine_last_error Unexecuted instantiation: i32_div32.c:br_ssl_engine_last_error |
2036 | | |
2037 | | /* |
2038 | | * There are four I/O operations, each identified by a symbolic name: |
2039 | | * |
2040 | | * sendapp inject application data in the engine |
2041 | | * recvapp retrieving application data from the engine |
2042 | | * sendrec sending records on the transport medium |
2043 | | * recvrec receiving records from the transport medium |
2044 | | * |
2045 | | * Terminology works thus: in a layered model where the SSL engine sits |
2046 | | * between the application and the network, "send" designates operations |
2047 | | * where bytes flow from application to network, and "recv" for the |
2048 | | * reverse operation. Application data (the plaintext that is to be |
2049 | | * conveyed through SSL) is "app", while encrypted records are "rec". |
2050 | | * Note that from the SSL engine point of view, "sendapp" and "recvrec" |
2051 | | * designate bytes that enter the engine ("inject" operation), while |
2052 | | * "recvapp" and "sendrec" designate bytes that exit the engine |
2053 | | * ("extract" operation). |
2054 | | * |
2055 | | * For the operation 'xxx', two functions are defined: |
2056 | | * |
2057 | | * br_ssl_engine_xxx_buf |
2058 | | * Returns a pointer and length to the buffer to use for that |
2059 | | * operation. '*len' is set to the number of bytes that may be read |
2060 | | * from the buffer (extract operation) or written to the buffer |
2061 | | * (inject operation). If no byte may be exchanged for that operation |
2062 | | * at that point, then '*len' is set to zero, and NULL is returned. |
2063 | | * The engine state is unmodified by this call. |
2064 | | * |
2065 | | * br_ssl_engine_xxx_ack |
2066 | | * Informs the engine that 'len' bytes have been read from the buffer |
2067 | | * (extract operation) or written to the buffer (inject operation). |
2068 | | * The 'len' value MUST NOT be zero. The 'len' value MUST NOT exceed |
2069 | | * that which was obtained from a preceding br_ssl_engine_xxx_buf() |
2070 | | * call. |
2071 | | */ |
2072 | | |
2073 | | /** |
2074 | | * \brief Get buffer for application data to send. |
2075 | | * |
2076 | | * If the engine is ready to accept application data to send to the |
2077 | | * peer, then this call returns a pointer to the buffer where such |
2078 | | * data shall be written, and its length is written in `*len`. |
2079 | | * Otherwise, `*len` is set to 0 and `NULL` is returned. |
2080 | | * |
2081 | | * \param cc SSL engine context. |
2082 | | * \param len receives the application data output buffer length, or 0. |
2083 | | * \return the application data output buffer, or `NULL`. |
2084 | | */ |
2085 | | unsigned char *br_ssl_engine_sendapp_buf( |
2086 | | const br_ssl_engine_context *cc, size_t *len); |
2087 | | |
2088 | | /** |
2089 | | * \brief Inform the engine of some new application data. |
2090 | | * |
2091 | | * After writing `len` bytes in the buffer returned by |
2092 | | * `br_ssl_engine_sendapp_buf()`, the application shall call this |
2093 | | * function to trigger any relevant processing. The `len` parameter |
2094 | | * MUST NOT be 0, and MUST NOT exceed the value obtained in the |
2095 | | * `br_ssl_engine_sendapp_buf()` call. |
2096 | | * |
2097 | | * \param cc SSL engine context. |
2098 | | * \param len number of bytes pushed (not zero). |
2099 | | */ |
2100 | | void br_ssl_engine_sendapp_ack(br_ssl_engine_context *cc, size_t len); |
2101 | | |
2102 | | /** |
2103 | | * \brief Get buffer for received application data. |
2104 | | * |
2105 | | * If the engine has received application data from the peer, then this |
2106 | | * call returns a pointer to the buffer from where such data shall be |
2107 | | * read, and its length is written in `*len`. Otherwise, `*len` is set |
2108 | | * to 0 and `NULL` is returned. |
2109 | | * |
2110 | | * \param cc SSL engine context. |
2111 | | * \param len receives the application data input buffer length, or 0. |
2112 | | * \return the application data input buffer, or `NULL`. |
2113 | | */ |
2114 | | unsigned char *br_ssl_engine_recvapp_buf( |
2115 | | const br_ssl_engine_context *cc, size_t *len); |
2116 | | |
2117 | | /** |
2118 | | * \brief Acknowledge some received application data. |
2119 | | * |
2120 | | * After reading `len` bytes from the buffer returned by |
2121 | | * `br_ssl_engine_recvapp_buf()`, the application shall call this |
2122 | | * function to trigger any relevant processing. The `len` parameter |
2123 | | * MUST NOT be 0, and MUST NOT exceed the value obtained in the |
2124 | | * `br_ssl_engine_recvapp_buf()` call. |
2125 | | * |
2126 | | * \param cc SSL engine context. |
2127 | | * \param len number of bytes read (not zero). |
2128 | | */ |
2129 | | void br_ssl_engine_recvapp_ack(br_ssl_engine_context *cc, size_t len); |
2130 | | |
2131 | | /** |
2132 | | * \brief Get buffer for record data to send. |
2133 | | * |
2134 | | * If the engine has prepared some records to send to the peer, then this |
2135 | | * call returns a pointer to the buffer from where such data shall be |
2136 | | * read, and its length is written in `*len`. Otherwise, `*len` is set |
2137 | | * to 0 and `NULL` is returned. |
2138 | | * |
2139 | | * \param cc SSL engine context. |
2140 | | * \param len receives the record data output buffer length, or 0. |
2141 | | * \return the record data output buffer, or `NULL`. |
2142 | | */ |
2143 | | unsigned char *br_ssl_engine_sendrec_buf( |
2144 | | const br_ssl_engine_context *cc, size_t *len); |
2145 | | |
2146 | | /** |
2147 | | * \brief Acknowledge some sent record data. |
2148 | | * |
2149 | | * After reading `len` bytes from the buffer returned by |
2150 | | * `br_ssl_engine_sendrec_buf()`, the application shall call this |
2151 | | * function to trigger any relevant processing. The `len` parameter |
2152 | | * MUST NOT be 0, and MUST NOT exceed the value obtained in the |
2153 | | * `br_ssl_engine_sendrec_buf()` call. |
2154 | | * |
2155 | | * \param cc SSL engine context. |
2156 | | * \param len number of bytes read (not zero). |
2157 | | */ |
2158 | | void br_ssl_engine_sendrec_ack(br_ssl_engine_context *cc, size_t len); |
2159 | | |
2160 | | /** |
2161 | | * \brief Get buffer for incoming records. |
2162 | | * |
2163 | | * If the engine is ready to accept records from the peer, then this |
2164 | | * call returns a pointer to the buffer where such data shall be |
2165 | | * written, and its length is written in `*len`. Otherwise, `*len` is |
2166 | | * set to 0 and `NULL` is returned. |
2167 | | * |
2168 | | * \param cc SSL engine context. |
2169 | | * \param len receives the record data input buffer length, or 0. |
2170 | | * \return the record data input buffer, or `NULL`. |
2171 | | */ |
2172 | | unsigned char *br_ssl_engine_recvrec_buf( |
2173 | | const br_ssl_engine_context *cc, size_t *len); |
2174 | | |
2175 | | /** |
2176 | | * \brief Inform the engine of some new record data. |
2177 | | * |
2178 | | * After writing `len` bytes in the buffer returned by |
2179 | | * `br_ssl_engine_recvrec_buf()`, the application shall call this |
2180 | | * function to trigger any relevant processing. The `len` parameter |
2181 | | * MUST NOT be 0, and MUST NOT exceed the value obtained in the |
2182 | | * `br_ssl_engine_recvrec_buf()` call. |
2183 | | * |
2184 | | * \param cc SSL engine context. |
2185 | | * \param len number of bytes pushed (not zero). |
2186 | | */ |
2187 | | void br_ssl_engine_recvrec_ack(br_ssl_engine_context *cc, size_t len); |
2188 | | |
2189 | | /** |
2190 | | * \brief Flush buffered application data. |
2191 | | * |
2192 | | * If some application data has been buffered in the engine, then wrap |
2193 | | * it into a record and mark it for sending. If no application data has |
2194 | | * been buffered but the engine would be ready to accept some, AND the |
2195 | | * `force` parameter is non-zero, then an empty record is assembled and |
2196 | | * marked for sending. In all other cases, this function does nothing. |
2197 | | * |
2198 | | * Empty records are technically legal, but not all existing SSL/TLS |
2199 | | * implementations support them. Empty records can be useful as a |
2200 | | * transparent "keep-alive" mechanism to maintain some low-level |
2201 | | * network activity. |
2202 | | * |
2203 | | * \param cc SSL engine context. |
2204 | | * \param force non-zero to force sending an empty record. |
2205 | | */ |
2206 | | void br_ssl_engine_flush(br_ssl_engine_context *cc, int force); |
2207 | | |
2208 | | /** |
2209 | | * \brief Initiate a closure. |
2210 | | * |
2211 | | * If, at that point, the context is open and in ready state, then a |
2212 | | * `close_notify` alert is assembled and marked for sending; this |
2213 | | * triggers the closure protocol. Otherwise, no such alert is assembled. |
2214 | | * |
2215 | | * \param cc SSL engine context. |
2216 | | */ |
2217 | | void br_ssl_engine_close(br_ssl_engine_context *cc); |
2218 | | |
2219 | | /** |
2220 | | * \brief Initiate a renegotiation. |
2221 | | * |
2222 | | * If the engine is failed or closed, or if the peer is known not to |
2223 | | * support secure renegotiation (RFC 5746), or if renegotiations have |
2224 | | * been disabled with the `BR_OPT_NO_RENEGOTIATION` flag, or if there |
2225 | | * is buffered incoming application data, then this function returns 0 |
2226 | | * and nothing else happens. |
2227 | | * |
2228 | | * Otherwise, this function returns 1, and a renegotiation attempt is |
2229 | | * triggered (if a handshake is already ongoing at that point, then |
2230 | | * no new handshake is triggered). |
2231 | | * |
2232 | | * \param cc SSL engine context. |
2233 | | * \return 1 on success, 0 on error. |
2234 | | */ |
2235 | | int br_ssl_engine_renegotiate(br_ssl_engine_context *cc); |
2236 | | |
2237 | | /** |
2238 | | * \brief Export key material from a connected SSL engine (RFC 5705). |
2239 | | * |
2240 | | * This calls compute a secret key of arbitrary length from the master |
2241 | | * secret of a connected SSL engine. If the provided context is not |
2242 | | * currently in "application data" state (initial handshake is not |
2243 | | * finished, another handshake is ongoing, or the connection failed or |
2244 | | * was closed), then this function returns 0. Otherwise, a secret key of |
2245 | | * length `len` bytes is computed and written in the buffer pointed to |
2246 | | * by `dst`, and 1 is returned. |
2247 | | * |
2248 | | * The computed key follows the specification described in RFC 5705. |
2249 | | * That RFC includes two key computations, with and without a "context |
2250 | | * value". If `context` is `NULL`, then the variant without context is |
2251 | | * used; otherwise, the `context_len` bytes located at the address |
2252 | | * pointed to by `context` are used in the computation. Note that it |
2253 | | * is possible to have a "with context" key with a context length of |
2254 | | * zero bytes, by setting `context` to a non-`NULL` value but |
2255 | | * `context_len` to 0. |
2256 | | * |
2257 | | * When context bytes are used, the context length MUST NOT exceed |
2258 | | * 65535 bytes. |
2259 | | * |
2260 | | * \param cc SSL engine context. |
2261 | | * \param dst destination buffer for exported key. |
2262 | | * \param len exported key length (in bytes). |
2263 | | * \param label disambiguation label. |
2264 | | * \param context context value (or `NULL`). |
2265 | | * \param context_len context length (in bytes). |
2266 | | * \return 1 on success, 0 on error. |
2267 | | */ |
2268 | | int br_ssl_key_export(br_ssl_engine_context *cc, |
2269 | | void *dst, size_t len, const char *label, |
2270 | | const void *context, size_t context_len); |
2271 | | |
2272 | | /* |
2273 | | * Pre-declaration for the SSL client context. |
2274 | | */ |
2275 | | typedef struct br_ssl_client_context_ br_ssl_client_context; |
2276 | | |
2277 | | /** |
2278 | | * \brief Type for the client certificate, if requested by the server. |
2279 | | */ |
2280 | | typedef struct { |
2281 | | /** |
2282 | | * \brief Authentication type. |
2283 | | * |
2284 | | * This is either `BR_AUTH_RSA` (RSA signature), `BR_AUTH_ECDSA` |
2285 | | * (ECDSA signature), or `BR_AUTH_ECDH` (static ECDH key exchange). |
2286 | | */ |
2287 | | int auth_type; |
2288 | | |
2289 | | /** |
2290 | | * \brief Hash function for computing the CertificateVerify. |
2291 | | * |
2292 | | * This is the symbolic identifier for the hash function that |
2293 | | * will be used to produce the hash of handshake messages, to |
2294 | | * be signed into the CertificateVerify. For full static ECDH |
2295 | | * (client and server certificates are both EC in the same |
2296 | | * curve, and static ECDH is used), this value is set to -1. |
2297 | | * |
2298 | | * Take care that with TLS 1.0 and 1.1, that value MUST match |
2299 | | * the protocol requirements: value must be 0 (MD5+SHA-1) for |
2300 | | * a RSA signature, or 2 (SHA-1) for an ECDSA signature. Only |
2301 | | * TLS 1.2 allows for other hash functions. |
2302 | | */ |
2303 | | int hash_id; |
2304 | | |
2305 | | /** |
2306 | | * \brief Certificate chain to send to the server. |
2307 | | * |
2308 | | * This is an array of `br_x509_certificate` objects, each |
2309 | | * normally containing a DER-encoded certificate. The client |
2310 | | * code does not try to decode these elements. If there is no |
2311 | | * chain to send to the server, then this pointer shall be |
2312 | | * set to `NULL`. |
2313 | | */ |
2314 | | const br_x509_certificate *chain; |
2315 | | |
2316 | | /** |
2317 | | * \brief Certificate chain length (number of certificates). |
2318 | | * |
2319 | | * If there is no chain to send to the server, then this value |
2320 | | * shall be set to 0. |
2321 | | */ |
2322 | | size_t chain_len; |
2323 | | |
2324 | | } br_ssl_client_certificate; |
2325 | | |
2326 | | /* |
2327 | | * Note: the constants below for signatures match the TLS constants. |
2328 | | */ |
2329 | | |
2330 | | /** \brief Client authentication type: static ECDH. */ |
2331 | | #define BR_AUTH_ECDH 0 |
2332 | | /** \brief Client authentication type: RSA signature. */ |
2333 | | #define BR_AUTH_RSA 1 |
2334 | | /** \brief Client authentication type: ECDSA signature. */ |
2335 | | #define BR_AUTH_ECDSA 3 |
2336 | | |
2337 | | /** |
2338 | | * \brief Class type for a certificate handler (client side). |
2339 | | * |
2340 | | * A certificate handler selects a client certificate chain to send to |
2341 | | * the server, upon explicit request from that server. It receives |
2342 | | * the list of trust anchor DN from the server, and supported types |
2343 | | * of certificates and signatures, and returns the chain to use. It |
2344 | | * is also invoked to perform the corresponding private key operation |
2345 | | * (a signature, or an ECDH computation). |
2346 | | * |
2347 | | * The SSL client engine will first push the trust anchor DN with |
2348 | | * `start_name_list()`, `start_name()`, `append_name()`, `end_name()` |
2349 | | * and `end_name_list()`. Then it will call `choose()`, to select the |
2350 | | * actual chain (and signature/hash algorithms). Finally, it will call |
2351 | | * either `do_sign()` or `do_keyx()`, depending on the algorithm choices. |
2352 | | */ |
2353 | | typedef struct br_ssl_client_certificate_class_ br_ssl_client_certificate_class; |
2354 | | struct br_ssl_client_certificate_class_ { |
2355 | | /** |
2356 | | * \brief Context size (in bytes). |
2357 | | */ |
2358 | | size_t context_size; |
2359 | | |
2360 | | /** |
2361 | | * \brief Begin reception of a list of trust anchor names. This |
2362 | | * is called while parsing the incoming CertificateRequest. |
2363 | | * |
2364 | | * \param pctx certificate handler context. |
2365 | | */ |
2366 | | void (*start_name_list)(const br_ssl_client_certificate_class **pctx); |
2367 | | |
2368 | | /** |
2369 | | * \brief Begin reception of a new trust anchor name. |
2370 | | * |
2371 | | * The total encoded name length is provided; it is less than |
2372 | | * 65535 bytes. |
2373 | | * |
2374 | | * \param pctx certificate handler context. |
2375 | | * \param len encoded name length (in bytes). |
2376 | | */ |
2377 | | void (*start_name)(const br_ssl_client_certificate_class **pctx, |
2378 | | size_t len); |
2379 | | |
2380 | | /** |
2381 | | * \brief Receive some more bytes for the current trust anchor name. |
2382 | | * |
2383 | | * The provided reference (`data`) points to a transient buffer |
2384 | | * they may be reused as soon as this function returns. The chunk |
2385 | | * length (`len`) is never zero. |
2386 | | * |
2387 | | * \param pctx certificate handler context. |
2388 | | * \param data anchor name chunk. |
2389 | | * \param len anchor name chunk length (in bytes). |
2390 | | */ |
2391 | | void (*append_name)(const br_ssl_client_certificate_class **pctx, |
2392 | | const unsigned char *data, size_t len); |
2393 | | |
2394 | | /** |
2395 | | * \brief End current trust anchor name. |
2396 | | * |
2397 | | * This function is called when all the encoded anchor name data |
2398 | | * has been provided. |
2399 | | * |
2400 | | * \param pctx certificate handler context. |
2401 | | */ |
2402 | | void (*end_name)(const br_ssl_client_certificate_class **pctx); |
2403 | | |
2404 | | /** |
2405 | | * \brief End list of trust anchor names. |
2406 | | * |
2407 | | * This function is called when all the anchor names in the |
2408 | | * CertificateRequest message have been obtained. |
2409 | | * |
2410 | | * \param pctx certificate handler context. |
2411 | | */ |
2412 | | void (*end_name_list)(const br_ssl_client_certificate_class **pctx); |
2413 | | |
2414 | | /** |
2415 | | * \brief Select client certificate and algorithms. |
2416 | | * |
2417 | | * This callback function shall fill the provided `choices` |
2418 | | * structure with the selected algorithms and certificate chain. |
2419 | | * The `hash_id`, `chain` and `chain_len` fields must be set. If |
2420 | | * the client cannot or does not wish to send a certificate, |
2421 | | * then it shall set `chain` to `NULL` and `chain_len` to 0. |
2422 | | * |
2423 | | * The `auth_types` parameter describes the authentication types, |
2424 | | * signature algorithms and hash functions that are supported by |
2425 | | * both the client context and the server, and compatible with |
2426 | | * the current protocol version. This is a bit field with the |
2427 | | * following contents: |
2428 | | * |
2429 | | * - If RSA signatures with hash function x are supported, then |
2430 | | * bit x is set. |
2431 | | * |
2432 | | * - If ECDSA signatures with hash function x are supported, |
2433 | | * then bit 8+x is set. |
2434 | | * |
2435 | | * - If static ECDH is supported, with a RSA-signed certificate, |
2436 | | * then bit 16 is set. |
2437 | | * |
2438 | | * - If static ECDH is supported, with an ECDSA-signed certificate, |
2439 | | * then bit 17 is set. |
2440 | | * |
2441 | | * Notes: |
2442 | | * |
2443 | | * - When using TLS 1.0 or 1.1, the hash function for RSA |
2444 | | * signatures is always the special MD5+SHA-1 (id 0), and the |
2445 | | * hash function for ECDSA signatures is always SHA-1 (id 2). |
2446 | | * |
2447 | | * - When using TLS 1.2, the list of hash functions is trimmed |
2448 | | * down to include only hash functions that the client context |
2449 | | * can support. The actual server list can be obtained with |
2450 | | * `br_ssl_client_get_server_hashes()`; that list may be used |
2451 | | * to select the certificate chain to send to the server. |
2452 | | * |
2453 | | * \param pctx certificate handler context. |
2454 | | * \param cc SSL client context. |
2455 | | * \param auth_types supported authentication types and algorithms. |
2456 | | * \param choices destination structure for the policy choices. |
2457 | | */ |
2458 | | void (*choose)(const br_ssl_client_certificate_class **pctx, |
2459 | | const br_ssl_client_context *cc, uint32_t auth_types, |
2460 | | br_ssl_client_certificate *choices); |
2461 | | |
2462 | | /** |
2463 | | * \brief Perform key exchange (client part). |
2464 | | * |
2465 | | * This callback is invoked in case of a full static ECDH key |
2466 | | * exchange: |
2467 | | * |
2468 | | * - the cipher suite uses `ECDH_RSA` or `ECDH_ECDSA`; |
2469 | | * |
2470 | | * - the server requests a client certificate; |
2471 | | * |
2472 | | * - the client has, and sends, a client certificate that |
2473 | | * uses an EC key in the same curve as the server's key, |
2474 | | * and chooses static ECDH (the `hash_id` field in the choice |
2475 | | * structure was set to -1). |
2476 | | * |
2477 | | * In that situation, this callback is invoked to compute the |
2478 | | * client-side ECDH: the provided `data` (of length `*len` bytes) |
2479 | | * is the server's public key point (as decoded from its |
2480 | | * certificate), and the client shall multiply that point with |
2481 | | * its own private key, and write back the X coordinate of the |
2482 | | * resulting point in the same buffer, starting at offset 0. |
2483 | | * The `*len` value shall be modified to designate the actual |
2484 | | * length of the X coordinate. |
2485 | | * |
2486 | | * The callback must uphold the following: |
2487 | | * |
2488 | | * - If the input array does not have the proper length for |
2489 | | * an encoded curve point, then an error (0) shall be reported. |
2490 | | * |
2491 | | * - If the input array has the proper length, then processing |
2492 | | * MUST be constant-time, even if the data is not a valid |
2493 | | * encoded point. |
2494 | | * |
2495 | | * - This callback MUST check that the input point is valid. |
2496 | | * |
2497 | | * Returned value is 1 on success, 0 on error. |
2498 | | * |
2499 | | * \param pctx certificate handler context. |
2500 | | * \param data server public key point. |
2501 | | * \param len public key point length / X coordinate length. |
2502 | | * \return 1 on success, 0 on error. |
2503 | | */ |
2504 | | uint32_t (*do_keyx)(const br_ssl_client_certificate_class **pctx, |
2505 | | unsigned char *data, size_t *len); |
2506 | | |
2507 | | /** |
2508 | | * \brief Perform a signature (client authentication). |
2509 | | * |
2510 | | * This callback is invoked when a client certificate was sent, |
2511 | | * and static ECDH is not used. It shall compute a signature, |
2512 | | * using the client's private key, over the provided hash value |
2513 | | * (which is the hash of all previous handshake messages). |
2514 | | * |
2515 | | * On input, the hash value to sign is in `data`, of size |
2516 | | * `hv_len`; the involved hash function is identified by |
2517 | | * `hash_id`. The signature shall be computed and written |
2518 | | * back into `data`; the total size of that buffer is `len` |
2519 | | * bytes. |
2520 | | * |
2521 | | * This callback shall verify that the signature length does not |
2522 | | * exceed `len` bytes, and abstain from writing the signature if |
2523 | | * it does not fit. |
2524 | | * |
2525 | | * For RSA signatures, the `hash_id` may be 0, in which case |
2526 | | * this is the special header-less signature specified in TLS 1.0 |
2527 | | * and 1.1, with a 36-byte hash value. Otherwise, normal PKCS#1 |
2528 | | * v1.5 signatures shall be computed. |
2529 | | * |
2530 | | * For ECDSA signatures, the signature value shall use the ASN.1 |
2531 | | * based encoding. |
2532 | | * |
2533 | | * Returned value is the signature length (in bytes), or 0 on error. |
2534 | | * |
2535 | | * \param pctx certificate handler context. |
2536 | | * \param hash_id hash function identifier. |
2537 | | * \param hv_len hash value length (in bytes). |
2538 | | * \param data input/output buffer (hash value, then signature). |
2539 | | * \param len total buffer length (in bytes). |
2540 | | * \return signature length (in bytes) on success, or 0 on error. |
2541 | | */ |
2542 | | size_t (*do_sign)(const br_ssl_client_certificate_class **pctx, |
2543 | | int hash_id, size_t hv_len, unsigned char *data, size_t len); |
2544 | | }; |
2545 | | |
2546 | | /** |
2547 | | * \brief A single-chain RSA client certificate handler. |
2548 | | * |
2549 | | * This handler uses a single certificate chain, with a RSA |
2550 | | * signature. The list of trust anchor DN is ignored. |
2551 | | * |
2552 | | * Apart from the first field (vtable pointer), its contents are |
2553 | | * opaque and shall not be accessed directly. |
2554 | | */ |
2555 | | typedef struct { |
2556 | | /** \brief Pointer to vtable. */ |
2557 | | const br_ssl_client_certificate_class *vtable; |
2558 | | #ifndef BR_DOXYGEN_IGNORE |
2559 | | const br_x509_certificate *chain; |
2560 | | size_t chain_len; |
2561 | | const br_rsa_private_key *sk; |
2562 | | br_rsa_pkcs1_sign irsasign; |
2563 | | #endif |
2564 | | } br_ssl_client_certificate_rsa_context; |
2565 | | |
2566 | | /** |
2567 | | * \brief A single-chain EC client certificate handler. |
2568 | | * |
2569 | | * This handler uses a single certificate chain, with a RSA |
2570 | | * signature. The list of trust anchor DN is ignored. |
2571 | | * |
2572 | | * This handler may support both static ECDH, and ECDSA signatures |
2573 | | * (either usage may be selectively disabled). |
2574 | | * |
2575 | | * Apart from the first field (vtable pointer), its contents are |
2576 | | * opaque and shall not be accessed directly. |
2577 | | */ |
2578 | | typedef struct { |
2579 | | /** \brief Pointer to vtable. */ |
2580 | | const br_ssl_client_certificate_class *vtable; |
2581 | | #ifndef BR_DOXYGEN_IGNORE |
2582 | | const br_x509_certificate *chain; |
2583 | | size_t chain_len; |
2584 | | const br_ec_private_key *sk; |
2585 | | unsigned allowed_usages; |
2586 | | unsigned issuer_key_type; |
2587 | | const br_multihash_context *mhash; |
2588 | | const br_ec_impl *iec; |
2589 | | br_ecdsa_sign iecdsa; |
2590 | | #endif |
2591 | | } br_ssl_client_certificate_ec_context; |
2592 | | |
2593 | | /** |
2594 | | * \brief Context structure for a SSL client. |
2595 | | * |
2596 | | * The first field (called `eng`) is the SSL engine; all functions that |
2597 | | * work on a `br_ssl_engine_context` structure shall take as parameter |
2598 | | * a pointer to that field. The other structure fields are opaque and |
2599 | | * must not be accessed directly. |
2600 | | */ |
2601 | | struct br_ssl_client_context_ { |
2602 | | /** |
2603 | | * \brief The encapsulated engine context. |
2604 | | */ |
2605 | | br_ssl_engine_context eng; |
2606 | | |
2607 | | #ifndef BR_DOXYGEN_IGNORE |
2608 | | /* |
2609 | | * Minimum ClientHello length; padding with an extension (RFC |
2610 | | * 7685) is added if necessary to match at least that length. |
2611 | | * Such padding is nominally unnecessary, but it has been used |
2612 | | * to work around some server implementation bugs. |
2613 | | */ |
2614 | | uint16_t min_clienthello_len; |
2615 | | |
2616 | | /* |
2617 | | * Bit field for algoithms (hash + signature) supported by the |
2618 | | * server when requesting a client certificate. |
2619 | | */ |
2620 | | uint32_t hashes; |
2621 | | |
2622 | | /* |
2623 | | * Server's public key curve. |
2624 | | */ |
2625 | | int server_curve; |
2626 | | |
2627 | | /* |
2628 | | * Context for certificate handler. |
2629 | | */ |
2630 | | const br_ssl_client_certificate_class **client_auth_vtable; |
2631 | | |
2632 | | /* |
2633 | | * Client authentication type. |
2634 | | */ |
2635 | | unsigned char auth_type; |
2636 | | |
2637 | | /* |
2638 | | * Hash function to use for the client signature. This is 0xFF |
2639 | | * if static ECDH is used. |
2640 | | */ |
2641 | | unsigned char hash_id; |
2642 | | |
2643 | | /* |
2644 | | * For the core certificate handlers, thus avoiding (in most |
2645 | | * cases) the need for an externally provided policy context. |
2646 | | */ |
2647 | | union { |
2648 | | const br_ssl_client_certificate_class *vtable; |
2649 | | br_ssl_client_certificate_rsa_context single_rsa; |
2650 | | br_ssl_client_certificate_ec_context single_ec; |
2651 | | } client_auth; |
2652 | | |
2653 | | /* |
2654 | | * Implementations. |
2655 | | */ |
2656 | | br_rsa_public irsapub; |
2657 | | #endif |
2658 | | }; |
2659 | | |
2660 | | /** |
2661 | | * \brief Get the hash functions and signature algorithms supported by |
2662 | | * the server. |
2663 | | * |
2664 | | * This value is a bit field: |
2665 | | * |
2666 | | * - If RSA (PKCS#1 v1.5) is supported with hash function of ID `x`, |
2667 | | * then bit `x` is set (hash function ID is 0 for the special MD5+SHA-1, |
2668 | | * or 2 to 6 for the SHA family). |
2669 | | * |
2670 | | * - If ECDSA is supported with hash function of ID `x`, then bit `8+x` |
2671 | | * is set. |
2672 | | * |
2673 | | * - Newer algorithms are symbolic 16-bit identifiers that do not |
2674 | | * represent signature algorithm and hash function separately. If |
2675 | | * the TLS-level identifier is `0x0800+x` for a `x` in the 0..15 |
2676 | | * range, then bit `16+x` is set. |
2677 | | * |
2678 | | * "New algorithms" are currently defined only in draft documents, so |
2679 | | * this support is subject to possible change. Right now (early 2017), |
2680 | | * this maps ed25519 (EdDSA on Curve25519) to bit 23, and ed448 (EdDSA |
2681 | | * on Curve448) to bit 24. If the identifiers on the wire change in |
2682 | | * future document, then the decoding mechanism in BearSSL will be |
2683 | | * amended to keep mapping ed25519 and ed448 on bits 23 and 24, |
2684 | | * respectively. Mapping of other new algorithms (e.g. RSA/PSS) is not |
2685 | | * guaranteed yet. |
2686 | | * |
2687 | | * \param cc client context. |
2688 | | * \return the server-supported hash functions and signature algorithms. |
2689 | | */ |
2690 | | static inline uint32_t |
2691 | | br_ssl_client_get_server_hashes(const br_ssl_client_context *cc) |
2692 | 0 | { |
2693 | 0 | return cc->hashes; |
2694 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_client_get_server_hashes(br_ssl_client_context_ const*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_client_get_server_hashes Unexecuted instantiation: chacha20_sse2.c:br_ssl_client_get_server_hashes Unexecuted instantiation: chacha20_ct.c:br_ssl_client_get_server_hashes Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_client_get_server_hashes Unexecuted instantiation: aes_x86ni.c:br_ssl_client_get_server_hashes Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_client_get_server_hashes Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_client_get_server_hashes Unexecuted instantiation: aes_ct_ctr.c:br_ssl_client_get_server_hashes Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_client_get_server_hashes Unexecuted instantiation: aes_ct64.c:br_ssl_client_get_server_hashes Unexecuted instantiation: aes_ct.c:br_ssl_client_get_server_hashes Unexecuted instantiation: aes_common.c:br_ssl_client_get_server_hashes Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_client_get_server_hashes Unexecuted instantiation: prf_md5sha1.c:br_ssl_client_get_server_hashes Unexecuted instantiation: prf.c:br_ssl_client_get_server_hashes Unexecuted instantiation: sysrng.c:br_ssl_client_get_server_hashes Unexecuted instantiation: hmac_drbg.c:br_ssl_client_get_server_hashes Unexecuted instantiation: hmac.c:br_ssl_client_get_server_hashes Unexecuted instantiation: shake.c:br_ssl_client_get_server_hashes Unexecuted instantiation: hkdf.c:br_ssl_client_get_server_hashes Unexecuted instantiation: sha2small.c:br_ssl_client_get_server_hashes Unexecuted instantiation: sha2big.c:br_ssl_client_get_server_hashes Unexecuted instantiation: sha1.c:br_ssl_client_get_server_hashes Unexecuted instantiation: md5sha1.c:br_ssl_client_get_server_hashes Unexecuted instantiation: md5.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ghash_ctmul32.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ec_secp521r1.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ec_secp384r1.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ec_secp256r1.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ec_pubkey.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ec_prime_i31.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ec_prime_i15.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ec_p256_m64.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ec_p256_m62.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ec_p256_m31.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ec_p256_m15.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ec_keygen.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ec_default.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ec_c25519_m64.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ec_c25519_m62.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ec_c25519_m31.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ec_c25519_m15.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ec_c25519_i31.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ec_c25519_i15.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ec_all_m31.c:br_ssl_client_get_server_hashes Unexecuted instantiation: enc64be.c:br_ssl_client_get_server_hashes Unexecuted instantiation: enc32le.c:br_ssl_client_get_server_hashes Unexecuted instantiation: enc32be.c:br_ssl_client_get_server_hashes Unexecuted instantiation: dec64be.c:br_ssl_client_get_server_hashes Unexecuted instantiation: dec32le.c:br_ssl_client_get_server_hashes Unexecuted instantiation: dec32be.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ccopy.c:br_ssl_client_get_server_hashes Unexecuted instantiation: gcm.c:br_ssl_client_get_server_hashes Unexecuted instantiation: ccm.c:br_ssl_client_get_server_hashes Unexecuted instantiation: aes_small_enc.c:br_ssl_client_get_server_hashes Unexecuted instantiation: aes_ct_enc.c:br_ssl_client_get_server_hashes Unexecuted instantiation: aes_ct64_enc.c:br_ssl_client_get_server_hashes Unexecuted instantiation: aes_big_enc.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i31_sub.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i31_rshift.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i31_ninv31.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i31_montmul.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i31_modpow.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i31_iszero.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i31_fmont.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i31_encode.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i31_decode.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i31_decmod.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i31_bitlen.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i31_add.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i15_sub.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i15_rshift.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i15_ninv15.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i15_montmul.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i15_modpow.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i15_iszero.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i15_fmont.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i15_encode.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i15_decode.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i15_decmod.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i15_bitlen.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i15_add.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i31_tmont.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i31_muladd.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i15_tmont.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i15_muladd.c:br_ssl_client_get_server_hashes Unexecuted instantiation: i32_div32.c:br_ssl_client_get_server_hashes |
2695 | | |
2696 | | /** |
2697 | | * \brief Get the server key curve. |
2698 | | * |
2699 | | * This function returns the ID for the curve used by the server's public |
2700 | | * key. This is set when the server's certificate chain is processed; |
2701 | | * this value is 0 if the server's key is not an EC key. |
2702 | | * |
2703 | | * \return the server's public key curve ID, or 0. |
2704 | | */ |
2705 | | static inline int |
2706 | | br_ssl_client_get_server_curve(const br_ssl_client_context *cc) |
2707 | 0 | { |
2708 | 0 | return cc->server_curve; |
2709 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_client_get_server_curve(br_ssl_client_context_ const*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_client_get_server_curve Unexecuted instantiation: chacha20_sse2.c:br_ssl_client_get_server_curve Unexecuted instantiation: chacha20_ct.c:br_ssl_client_get_server_curve Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_client_get_server_curve Unexecuted instantiation: aes_x86ni.c:br_ssl_client_get_server_curve Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_client_get_server_curve Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_client_get_server_curve Unexecuted instantiation: aes_ct_ctr.c:br_ssl_client_get_server_curve Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_client_get_server_curve Unexecuted instantiation: aes_ct64.c:br_ssl_client_get_server_curve Unexecuted instantiation: aes_ct.c:br_ssl_client_get_server_curve Unexecuted instantiation: aes_common.c:br_ssl_client_get_server_curve Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_client_get_server_curve Unexecuted instantiation: prf_md5sha1.c:br_ssl_client_get_server_curve Unexecuted instantiation: prf.c:br_ssl_client_get_server_curve Unexecuted instantiation: sysrng.c:br_ssl_client_get_server_curve Unexecuted instantiation: hmac_drbg.c:br_ssl_client_get_server_curve Unexecuted instantiation: hmac.c:br_ssl_client_get_server_curve Unexecuted instantiation: shake.c:br_ssl_client_get_server_curve Unexecuted instantiation: hkdf.c:br_ssl_client_get_server_curve Unexecuted instantiation: sha2small.c:br_ssl_client_get_server_curve Unexecuted instantiation: sha2big.c:br_ssl_client_get_server_curve Unexecuted instantiation: sha1.c:br_ssl_client_get_server_curve Unexecuted instantiation: md5sha1.c:br_ssl_client_get_server_curve Unexecuted instantiation: md5.c:br_ssl_client_get_server_curve Unexecuted instantiation: ghash_ctmul32.c:br_ssl_client_get_server_curve Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_client_get_server_curve Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_client_get_server_curve Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_client_get_server_curve Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_client_get_server_curve Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_client_get_server_curve Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_client_get_server_curve Unexecuted instantiation: ec_secp521r1.c:br_ssl_client_get_server_curve Unexecuted instantiation: ec_secp384r1.c:br_ssl_client_get_server_curve Unexecuted instantiation: ec_secp256r1.c:br_ssl_client_get_server_curve Unexecuted instantiation: ec_pubkey.c:br_ssl_client_get_server_curve Unexecuted instantiation: ec_prime_i31.c:br_ssl_client_get_server_curve Unexecuted instantiation: ec_prime_i15.c:br_ssl_client_get_server_curve Unexecuted instantiation: ec_p256_m64.c:br_ssl_client_get_server_curve Unexecuted instantiation: ec_p256_m62.c:br_ssl_client_get_server_curve Unexecuted instantiation: ec_p256_m31.c:br_ssl_client_get_server_curve Unexecuted instantiation: ec_p256_m15.c:br_ssl_client_get_server_curve Unexecuted instantiation: ec_keygen.c:br_ssl_client_get_server_curve Unexecuted instantiation: ec_default.c:br_ssl_client_get_server_curve Unexecuted instantiation: ec_c25519_m64.c:br_ssl_client_get_server_curve Unexecuted instantiation: ec_c25519_m62.c:br_ssl_client_get_server_curve Unexecuted instantiation: ec_c25519_m31.c:br_ssl_client_get_server_curve Unexecuted instantiation: ec_c25519_m15.c:br_ssl_client_get_server_curve Unexecuted instantiation: ec_c25519_i31.c:br_ssl_client_get_server_curve Unexecuted instantiation: ec_c25519_i15.c:br_ssl_client_get_server_curve Unexecuted instantiation: ec_all_m31.c:br_ssl_client_get_server_curve Unexecuted instantiation: enc64be.c:br_ssl_client_get_server_curve Unexecuted instantiation: enc32le.c:br_ssl_client_get_server_curve Unexecuted instantiation: enc32be.c:br_ssl_client_get_server_curve Unexecuted instantiation: dec64be.c:br_ssl_client_get_server_curve Unexecuted instantiation: dec32le.c:br_ssl_client_get_server_curve Unexecuted instantiation: dec32be.c:br_ssl_client_get_server_curve Unexecuted instantiation: ccopy.c:br_ssl_client_get_server_curve Unexecuted instantiation: gcm.c:br_ssl_client_get_server_curve Unexecuted instantiation: ccm.c:br_ssl_client_get_server_curve Unexecuted instantiation: aes_small_enc.c:br_ssl_client_get_server_curve Unexecuted instantiation: aes_ct_enc.c:br_ssl_client_get_server_curve Unexecuted instantiation: aes_ct64_enc.c:br_ssl_client_get_server_curve Unexecuted instantiation: aes_big_enc.c:br_ssl_client_get_server_curve Unexecuted instantiation: i31_sub.c:br_ssl_client_get_server_curve Unexecuted instantiation: i31_rshift.c:br_ssl_client_get_server_curve Unexecuted instantiation: i31_ninv31.c:br_ssl_client_get_server_curve Unexecuted instantiation: i31_montmul.c:br_ssl_client_get_server_curve Unexecuted instantiation: i31_modpow.c:br_ssl_client_get_server_curve Unexecuted instantiation: i31_iszero.c:br_ssl_client_get_server_curve Unexecuted instantiation: i31_fmont.c:br_ssl_client_get_server_curve Unexecuted instantiation: i31_encode.c:br_ssl_client_get_server_curve Unexecuted instantiation: i31_decode.c:br_ssl_client_get_server_curve Unexecuted instantiation: i31_decmod.c:br_ssl_client_get_server_curve Unexecuted instantiation: i31_bitlen.c:br_ssl_client_get_server_curve Unexecuted instantiation: i31_add.c:br_ssl_client_get_server_curve Unexecuted instantiation: i15_sub.c:br_ssl_client_get_server_curve Unexecuted instantiation: i15_rshift.c:br_ssl_client_get_server_curve Unexecuted instantiation: i15_ninv15.c:br_ssl_client_get_server_curve Unexecuted instantiation: i15_montmul.c:br_ssl_client_get_server_curve Unexecuted instantiation: i15_modpow.c:br_ssl_client_get_server_curve Unexecuted instantiation: i15_iszero.c:br_ssl_client_get_server_curve Unexecuted instantiation: i15_fmont.c:br_ssl_client_get_server_curve Unexecuted instantiation: i15_encode.c:br_ssl_client_get_server_curve Unexecuted instantiation: i15_decode.c:br_ssl_client_get_server_curve Unexecuted instantiation: i15_decmod.c:br_ssl_client_get_server_curve Unexecuted instantiation: i15_bitlen.c:br_ssl_client_get_server_curve Unexecuted instantiation: i15_add.c:br_ssl_client_get_server_curve Unexecuted instantiation: i31_tmont.c:br_ssl_client_get_server_curve Unexecuted instantiation: i31_muladd.c:br_ssl_client_get_server_curve Unexecuted instantiation: i15_tmont.c:br_ssl_client_get_server_curve Unexecuted instantiation: i15_muladd.c:br_ssl_client_get_server_curve Unexecuted instantiation: i32_div32.c:br_ssl_client_get_server_curve |
2710 | | |
2711 | | /* |
2712 | | * Each br_ssl_client_init_xxx() function sets the list of supported |
2713 | | * cipher suites and used implementations, as specified by the profile |
2714 | | * name 'xxx'. Defined profile names are: |
2715 | | * |
2716 | | * full all supported versions and suites; constant-time implementations |
2717 | | * TODO: add other profiles |
2718 | | */ |
2719 | | |
2720 | | /** |
2721 | | * \brief SSL client profile: full. |
2722 | | * |
2723 | | * This function initialises the provided SSL client context with |
2724 | | * all supported algorithms and cipher suites. It also initialises |
2725 | | * a companion X.509 validation engine with all supported algorithms, |
2726 | | * and the provided trust anchors; the X.509 engine will be used by |
2727 | | * the client context to validate the server's certificate. |
2728 | | * |
2729 | | * \param cc client context to initialise. |
2730 | | * \param xc X.509 validation context to initialise. |
2731 | | * \param trust_anchors trust anchors to use. |
2732 | | * \param trust_anchors_num number of trust anchors. |
2733 | | */ |
2734 | | void br_ssl_client_init_full(br_ssl_client_context *cc, |
2735 | | br_x509_minimal_context *xc, |
2736 | | const br_x509_trust_anchor *trust_anchors, size_t trust_anchors_num); |
2737 | | |
2738 | | /** |
2739 | | * \brief Clear the complete contents of a SSL client context. |
2740 | | * |
2741 | | * Everything is cleared, including the reference to the configured buffer, |
2742 | | * implementations, cipher suites and state. This is a preparatory step |
2743 | | * to assembling a custom profile. |
2744 | | * |
2745 | | * \param cc client context to clear. |
2746 | | */ |
2747 | | void br_ssl_client_zero(br_ssl_client_context *cc); |
2748 | | |
2749 | | /** |
2750 | | * \brief Set an externally provided client certificate handler context. |
2751 | | * |
2752 | | * The handler's methods are invoked when the server requests a client |
2753 | | * certificate. |
2754 | | * |
2755 | | * \param cc client context. |
2756 | | * \param pctx certificate handler context (pointer to its vtable field). |
2757 | | */ |
2758 | | static inline void |
2759 | | br_ssl_client_set_client_certificate(br_ssl_client_context *cc, |
2760 | | const br_ssl_client_certificate_class **pctx) |
2761 | 0 | { |
2762 | 0 | cc->client_auth_vtable = pctx; |
2763 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_client_set_client_certificate(br_ssl_client_context_*, br_ssl_client_certificate_class_ const**) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_client_set_client_certificate Unexecuted instantiation: chacha20_sse2.c:br_ssl_client_set_client_certificate Unexecuted instantiation: chacha20_ct.c:br_ssl_client_set_client_certificate Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_client_set_client_certificate Unexecuted instantiation: aes_x86ni.c:br_ssl_client_set_client_certificate Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_client_set_client_certificate Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_client_set_client_certificate Unexecuted instantiation: aes_ct_ctr.c:br_ssl_client_set_client_certificate Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_client_set_client_certificate Unexecuted instantiation: aes_ct64.c:br_ssl_client_set_client_certificate Unexecuted instantiation: aes_ct.c:br_ssl_client_set_client_certificate Unexecuted instantiation: aes_common.c:br_ssl_client_set_client_certificate Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_client_set_client_certificate Unexecuted instantiation: prf_md5sha1.c:br_ssl_client_set_client_certificate Unexecuted instantiation: prf.c:br_ssl_client_set_client_certificate Unexecuted instantiation: sysrng.c:br_ssl_client_set_client_certificate Unexecuted instantiation: hmac_drbg.c:br_ssl_client_set_client_certificate Unexecuted instantiation: hmac.c:br_ssl_client_set_client_certificate Unexecuted instantiation: shake.c:br_ssl_client_set_client_certificate Unexecuted instantiation: hkdf.c:br_ssl_client_set_client_certificate Unexecuted instantiation: sha2small.c:br_ssl_client_set_client_certificate Unexecuted instantiation: sha2big.c:br_ssl_client_set_client_certificate Unexecuted instantiation: sha1.c:br_ssl_client_set_client_certificate Unexecuted instantiation: md5sha1.c:br_ssl_client_set_client_certificate Unexecuted instantiation: md5.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ghash_ctmul32.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ec_secp521r1.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ec_secp384r1.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ec_secp256r1.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ec_pubkey.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ec_prime_i31.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ec_prime_i15.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ec_p256_m64.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ec_p256_m62.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ec_p256_m31.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ec_p256_m15.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ec_keygen.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ec_default.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ec_c25519_m64.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ec_c25519_m62.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ec_c25519_m31.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ec_c25519_m15.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ec_c25519_i31.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ec_c25519_i15.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ec_all_m31.c:br_ssl_client_set_client_certificate Unexecuted instantiation: enc64be.c:br_ssl_client_set_client_certificate Unexecuted instantiation: enc32le.c:br_ssl_client_set_client_certificate Unexecuted instantiation: enc32be.c:br_ssl_client_set_client_certificate Unexecuted instantiation: dec64be.c:br_ssl_client_set_client_certificate Unexecuted instantiation: dec32le.c:br_ssl_client_set_client_certificate Unexecuted instantiation: dec32be.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ccopy.c:br_ssl_client_set_client_certificate Unexecuted instantiation: gcm.c:br_ssl_client_set_client_certificate Unexecuted instantiation: ccm.c:br_ssl_client_set_client_certificate Unexecuted instantiation: aes_small_enc.c:br_ssl_client_set_client_certificate Unexecuted instantiation: aes_ct_enc.c:br_ssl_client_set_client_certificate Unexecuted instantiation: aes_ct64_enc.c:br_ssl_client_set_client_certificate Unexecuted instantiation: aes_big_enc.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i31_sub.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i31_rshift.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i31_ninv31.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i31_montmul.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i31_modpow.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i31_iszero.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i31_fmont.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i31_encode.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i31_decode.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i31_decmod.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i31_bitlen.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i31_add.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i15_sub.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i15_rshift.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i15_ninv15.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i15_montmul.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i15_modpow.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i15_iszero.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i15_fmont.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i15_encode.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i15_decode.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i15_decmod.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i15_bitlen.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i15_add.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i31_tmont.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i31_muladd.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i15_tmont.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i15_muladd.c:br_ssl_client_set_client_certificate Unexecuted instantiation: i32_div32.c:br_ssl_client_set_client_certificate |
2764 | | |
2765 | | /** |
2766 | | * \brief Set the RSA public-key operations implementation. |
2767 | | * |
2768 | | * This will be used to encrypt the pre-master secret with the server's |
2769 | | * RSA public key (RSA-encryption cipher suites only). |
2770 | | * |
2771 | | * \param cc client context. |
2772 | | * \param irsapub RSA public-key encryption implementation. |
2773 | | */ |
2774 | | static inline void |
2775 | | br_ssl_client_set_rsapub(br_ssl_client_context *cc, br_rsa_public irsapub) |
2776 | 0 | { |
2777 | 0 | cc->irsapub = irsapub; |
2778 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_client_set_rsapub(br_ssl_client_context_*, unsigned int (*)(unsigned char*, unsigned long, br_rsa_public_key const*)) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_client_set_rsapub Unexecuted instantiation: chacha20_sse2.c:br_ssl_client_set_rsapub Unexecuted instantiation: chacha20_ct.c:br_ssl_client_set_rsapub Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_client_set_rsapub Unexecuted instantiation: aes_x86ni.c:br_ssl_client_set_rsapub Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_client_set_rsapub Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_client_set_rsapub Unexecuted instantiation: aes_ct_ctr.c:br_ssl_client_set_rsapub Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_client_set_rsapub Unexecuted instantiation: aes_ct64.c:br_ssl_client_set_rsapub Unexecuted instantiation: aes_ct.c:br_ssl_client_set_rsapub Unexecuted instantiation: aes_common.c:br_ssl_client_set_rsapub Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_client_set_rsapub Unexecuted instantiation: prf_md5sha1.c:br_ssl_client_set_rsapub Unexecuted instantiation: prf.c:br_ssl_client_set_rsapub Unexecuted instantiation: sysrng.c:br_ssl_client_set_rsapub Unexecuted instantiation: hmac_drbg.c:br_ssl_client_set_rsapub Unexecuted instantiation: hmac.c:br_ssl_client_set_rsapub Unexecuted instantiation: shake.c:br_ssl_client_set_rsapub Unexecuted instantiation: hkdf.c:br_ssl_client_set_rsapub Unexecuted instantiation: sha2small.c:br_ssl_client_set_rsapub Unexecuted instantiation: sha2big.c:br_ssl_client_set_rsapub Unexecuted instantiation: sha1.c:br_ssl_client_set_rsapub Unexecuted instantiation: md5sha1.c:br_ssl_client_set_rsapub Unexecuted instantiation: md5.c:br_ssl_client_set_rsapub Unexecuted instantiation: ghash_ctmul32.c:br_ssl_client_set_rsapub Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_client_set_rsapub Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_client_set_rsapub Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_client_set_rsapub Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_client_set_rsapub Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_client_set_rsapub Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_client_set_rsapub Unexecuted instantiation: ec_secp521r1.c:br_ssl_client_set_rsapub Unexecuted instantiation: ec_secp384r1.c:br_ssl_client_set_rsapub Unexecuted instantiation: ec_secp256r1.c:br_ssl_client_set_rsapub Unexecuted instantiation: ec_pubkey.c:br_ssl_client_set_rsapub Unexecuted instantiation: ec_prime_i31.c:br_ssl_client_set_rsapub Unexecuted instantiation: ec_prime_i15.c:br_ssl_client_set_rsapub Unexecuted instantiation: ec_p256_m64.c:br_ssl_client_set_rsapub Unexecuted instantiation: ec_p256_m62.c:br_ssl_client_set_rsapub Unexecuted instantiation: ec_p256_m31.c:br_ssl_client_set_rsapub Unexecuted instantiation: ec_p256_m15.c:br_ssl_client_set_rsapub Unexecuted instantiation: ec_keygen.c:br_ssl_client_set_rsapub Unexecuted instantiation: ec_default.c:br_ssl_client_set_rsapub Unexecuted instantiation: ec_c25519_m64.c:br_ssl_client_set_rsapub Unexecuted instantiation: ec_c25519_m62.c:br_ssl_client_set_rsapub Unexecuted instantiation: ec_c25519_m31.c:br_ssl_client_set_rsapub Unexecuted instantiation: ec_c25519_m15.c:br_ssl_client_set_rsapub Unexecuted instantiation: ec_c25519_i31.c:br_ssl_client_set_rsapub Unexecuted instantiation: ec_c25519_i15.c:br_ssl_client_set_rsapub Unexecuted instantiation: ec_all_m31.c:br_ssl_client_set_rsapub Unexecuted instantiation: enc64be.c:br_ssl_client_set_rsapub Unexecuted instantiation: enc32le.c:br_ssl_client_set_rsapub Unexecuted instantiation: enc32be.c:br_ssl_client_set_rsapub Unexecuted instantiation: dec64be.c:br_ssl_client_set_rsapub Unexecuted instantiation: dec32le.c:br_ssl_client_set_rsapub Unexecuted instantiation: dec32be.c:br_ssl_client_set_rsapub Unexecuted instantiation: ccopy.c:br_ssl_client_set_rsapub Unexecuted instantiation: gcm.c:br_ssl_client_set_rsapub Unexecuted instantiation: ccm.c:br_ssl_client_set_rsapub Unexecuted instantiation: aes_small_enc.c:br_ssl_client_set_rsapub Unexecuted instantiation: aes_ct_enc.c:br_ssl_client_set_rsapub Unexecuted instantiation: aes_ct64_enc.c:br_ssl_client_set_rsapub Unexecuted instantiation: aes_big_enc.c:br_ssl_client_set_rsapub Unexecuted instantiation: i31_sub.c:br_ssl_client_set_rsapub Unexecuted instantiation: i31_rshift.c:br_ssl_client_set_rsapub Unexecuted instantiation: i31_ninv31.c:br_ssl_client_set_rsapub Unexecuted instantiation: i31_montmul.c:br_ssl_client_set_rsapub Unexecuted instantiation: i31_modpow.c:br_ssl_client_set_rsapub Unexecuted instantiation: i31_iszero.c:br_ssl_client_set_rsapub Unexecuted instantiation: i31_fmont.c:br_ssl_client_set_rsapub Unexecuted instantiation: i31_encode.c:br_ssl_client_set_rsapub Unexecuted instantiation: i31_decode.c:br_ssl_client_set_rsapub Unexecuted instantiation: i31_decmod.c:br_ssl_client_set_rsapub Unexecuted instantiation: i31_bitlen.c:br_ssl_client_set_rsapub Unexecuted instantiation: i31_add.c:br_ssl_client_set_rsapub Unexecuted instantiation: i15_sub.c:br_ssl_client_set_rsapub Unexecuted instantiation: i15_rshift.c:br_ssl_client_set_rsapub Unexecuted instantiation: i15_ninv15.c:br_ssl_client_set_rsapub Unexecuted instantiation: i15_montmul.c:br_ssl_client_set_rsapub Unexecuted instantiation: i15_modpow.c:br_ssl_client_set_rsapub Unexecuted instantiation: i15_iszero.c:br_ssl_client_set_rsapub Unexecuted instantiation: i15_fmont.c:br_ssl_client_set_rsapub Unexecuted instantiation: i15_encode.c:br_ssl_client_set_rsapub Unexecuted instantiation: i15_decode.c:br_ssl_client_set_rsapub Unexecuted instantiation: i15_decmod.c:br_ssl_client_set_rsapub Unexecuted instantiation: i15_bitlen.c:br_ssl_client_set_rsapub Unexecuted instantiation: i15_add.c:br_ssl_client_set_rsapub Unexecuted instantiation: i31_tmont.c:br_ssl_client_set_rsapub Unexecuted instantiation: i31_muladd.c:br_ssl_client_set_rsapub Unexecuted instantiation: i15_tmont.c:br_ssl_client_set_rsapub Unexecuted instantiation: i15_muladd.c:br_ssl_client_set_rsapub Unexecuted instantiation: i32_div32.c:br_ssl_client_set_rsapub |
2779 | | |
2780 | | /** |
2781 | | * \brief Set the "default" RSA implementation for public-key operations. |
2782 | | * |
2783 | | * This sets the RSA implementation in the client context (for encrypting |
2784 | | * the pre-master secret, in `TLS_RSA_*` cipher suites) to the fastest |
2785 | | * available on the current platform. |
2786 | | * |
2787 | | * \param cc client context. |
2788 | | */ |
2789 | | void br_ssl_client_set_default_rsapub(br_ssl_client_context *cc); |
2790 | | |
2791 | | /** |
2792 | | * \brief Set the minimum ClientHello length (RFC 7685 padding). |
2793 | | * |
2794 | | * If this value is set and the ClientHello would be shorter, then |
2795 | | * the Pad ClientHello extension will be added with enough padding bytes |
2796 | | * to reach the target size. Because of the extension header, the resulting |
2797 | | * size will sometimes be slightly more than `len` bytes if the target |
2798 | | * size cannot be exactly met. |
2799 | | * |
2800 | | * The target length relates to the _contents_ of the ClientHello, not |
2801 | | * counting its 4-byte header. For instance, if `len` is set to 512, |
2802 | | * then the padding will bring the ClientHello size to 516 bytes with its |
2803 | | * header, and 521 bytes when counting the 5-byte record header. |
2804 | | * |
2805 | | * \param cc client context. |
2806 | | * \param len minimum ClientHello length (in bytes). |
2807 | | */ |
2808 | | static inline void |
2809 | | br_ssl_client_set_min_clienthello_len(br_ssl_client_context *cc, uint16_t len) |
2810 | 0 | { |
2811 | 0 | cc->min_clienthello_len = len; |
2812 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_client_set_min_clienthello_len(br_ssl_client_context_*, unsigned short) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: chacha20_sse2.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: chacha20_ct.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: aes_x86ni.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: aes_ct_ctr.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: aes_ct64.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: aes_ct.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: aes_common.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: prf_md5sha1.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: prf.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: sysrng.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: hmac_drbg.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: hmac.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: shake.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: hkdf.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: sha2small.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: sha2big.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: sha1.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: md5sha1.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: md5.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ghash_ctmul32.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ec_secp521r1.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ec_secp384r1.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ec_secp256r1.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ec_pubkey.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ec_prime_i31.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ec_prime_i15.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ec_p256_m64.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ec_p256_m62.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ec_p256_m31.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ec_p256_m15.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ec_keygen.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ec_default.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ec_c25519_m64.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ec_c25519_m62.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ec_c25519_m31.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ec_c25519_m15.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ec_c25519_i31.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ec_c25519_i15.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ec_all_m31.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: enc64be.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: enc32le.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: enc32be.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: dec64be.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: dec32le.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: dec32be.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ccopy.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: gcm.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: ccm.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: aes_small_enc.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: aes_ct_enc.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: aes_ct64_enc.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: aes_big_enc.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i31_sub.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i31_rshift.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i31_ninv31.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i31_montmul.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i31_modpow.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i31_iszero.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i31_fmont.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i31_encode.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i31_decode.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i31_decmod.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i31_bitlen.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i31_add.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i15_sub.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i15_rshift.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i15_ninv15.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i15_montmul.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i15_modpow.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i15_iszero.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i15_fmont.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i15_encode.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i15_decode.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i15_decmod.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i15_bitlen.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i15_add.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i31_tmont.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i31_muladd.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i15_tmont.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i15_muladd.c:br_ssl_client_set_min_clienthello_len Unexecuted instantiation: i32_div32.c:br_ssl_client_set_min_clienthello_len |
2813 | | |
2814 | | /** |
2815 | | * \brief Prepare or reset a client context for a new connection. |
2816 | | * |
2817 | | * The `server_name` parameter is used to fill the SNI extension; the |
2818 | | * X.509 "minimal" engine will also match that name against the server |
2819 | | * names included in the server's certificate. If the parameter is |
2820 | | * `NULL` then no SNI extension will be sent, and the X.509 "minimal" |
2821 | | * engine (if used for server certificate validation) will not check |
2822 | | * presence of any specific name in the received certificate. |
2823 | | * |
2824 | | * Therefore, setting the `server_name` to `NULL` shall be reserved |
2825 | | * to cases where alternate or additional methods are used to ascertain |
2826 | | * that the right server public key is used (e.g. a "known key" model). |
2827 | | * |
2828 | | * If `resume_session` is non-zero and the context was previously used |
2829 | | * then the session parameters may be reused (depending on whether the |
2830 | | * server previously sent a non-empty session ID, and accepts the session |
2831 | | * resumption). The session parameters for session resumption can also |
2832 | | * be set explicitly with `br_ssl_engine_set_session_parameters()`. |
2833 | | * |
2834 | | * On failure, the context is marked as failed, and this function |
2835 | | * returns 0. A possible failure condition is when no initial entropy |
2836 | | * was injected, and none could be obtained from the OS (either OS |
2837 | | * randomness gathering is not supported, or it failed). |
2838 | | * |
2839 | | * \param cc client context. |
2840 | | * \param server_name target server name, or `NULL`. |
2841 | | * \param resume_session non-zero to try session resumption. |
2842 | | * \return 0 on failure, 1 on success. |
2843 | | */ |
2844 | | int br_ssl_client_reset(br_ssl_client_context *cc, |
2845 | | const char *server_name, int resume_session); |
2846 | | |
2847 | | /** |
2848 | | * \brief Forget any session in the context. |
2849 | | * |
2850 | | * This means that the next handshake that uses this context will |
2851 | | * necessarily be a full handshake (this applies both to new connections |
2852 | | * and to renegotiations). |
2853 | | * |
2854 | | * \param cc client context. |
2855 | | */ |
2856 | | static inline void |
2857 | | br_ssl_client_forget_session(br_ssl_client_context *cc) |
2858 | 0 | { |
2859 | 0 | cc->eng.session.session_id_len = 0; |
2860 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_client_forget_session(br_ssl_client_context_*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_client_forget_session Unexecuted instantiation: chacha20_sse2.c:br_ssl_client_forget_session Unexecuted instantiation: chacha20_ct.c:br_ssl_client_forget_session Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_client_forget_session Unexecuted instantiation: aes_x86ni.c:br_ssl_client_forget_session Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_client_forget_session Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_client_forget_session Unexecuted instantiation: aes_ct_ctr.c:br_ssl_client_forget_session Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_client_forget_session Unexecuted instantiation: aes_ct64.c:br_ssl_client_forget_session Unexecuted instantiation: aes_ct.c:br_ssl_client_forget_session Unexecuted instantiation: aes_common.c:br_ssl_client_forget_session Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_client_forget_session Unexecuted instantiation: prf_md5sha1.c:br_ssl_client_forget_session Unexecuted instantiation: prf.c:br_ssl_client_forget_session Unexecuted instantiation: sysrng.c:br_ssl_client_forget_session Unexecuted instantiation: hmac_drbg.c:br_ssl_client_forget_session Unexecuted instantiation: hmac.c:br_ssl_client_forget_session Unexecuted instantiation: shake.c:br_ssl_client_forget_session Unexecuted instantiation: hkdf.c:br_ssl_client_forget_session Unexecuted instantiation: sha2small.c:br_ssl_client_forget_session Unexecuted instantiation: sha2big.c:br_ssl_client_forget_session Unexecuted instantiation: sha1.c:br_ssl_client_forget_session Unexecuted instantiation: md5sha1.c:br_ssl_client_forget_session Unexecuted instantiation: md5.c:br_ssl_client_forget_session Unexecuted instantiation: ghash_ctmul32.c:br_ssl_client_forget_session Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_client_forget_session Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_client_forget_session Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_client_forget_session Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_client_forget_session Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_client_forget_session Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_client_forget_session Unexecuted instantiation: ec_secp521r1.c:br_ssl_client_forget_session Unexecuted instantiation: ec_secp384r1.c:br_ssl_client_forget_session Unexecuted instantiation: ec_secp256r1.c:br_ssl_client_forget_session Unexecuted instantiation: ec_pubkey.c:br_ssl_client_forget_session Unexecuted instantiation: ec_prime_i31.c:br_ssl_client_forget_session Unexecuted instantiation: ec_prime_i15.c:br_ssl_client_forget_session Unexecuted instantiation: ec_p256_m64.c:br_ssl_client_forget_session Unexecuted instantiation: ec_p256_m62.c:br_ssl_client_forget_session Unexecuted instantiation: ec_p256_m31.c:br_ssl_client_forget_session Unexecuted instantiation: ec_p256_m15.c:br_ssl_client_forget_session Unexecuted instantiation: ec_keygen.c:br_ssl_client_forget_session Unexecuted instantiation: ec_default.c:br_ssl_client_forget_session Unexecuted instantiation: ec_c25519_m64.c:br_ssl_client_forget_session Unexecuted instantiation: ec_c25519_m62.c:br_ssl_client_forget_session Unexecuted instantiation: ec_c25519_m31.c:br_ssl_client_forget_session Unexecuted instantiation: ec_c25519_m15.c:br_ssl_client_forget_session Unexecuted instantiation: ec_c25519_i31.c:br_ssl_client_forget_session Unexecuted instantiation: ec_c25519_i15.c:br_ssl_client_forget_session Unexecuted instantiation: ec_all_m31.c:br_ssl_client_forget_session Unexecuted instantiation: enc64be.c:br_ssl_client_forget_session Unexecuted instantiation: enc32le.c:br_ssl_client_forget_session Unexecuted instantiation: enc32be.c:br_ssl_client_forget_session Unexecuted instantiation: dec64be.c:br_ssl_client_forget_session Unexecuted instantiation: dec32le.c:br_ssl_client_forget_session Unexecuted instantiation: dec32be.c:br_ssl_client_forget_session Unexecuted instantiation: ccopy.c:br_ssl_client_forget_session Unexecuted instantiation: gcm.c:br_ssl_client_forget_session Unexecuted instantiation: ccm.c:br_ssl_client_forget_session Unexecuted instantiation: aes_small_enc.c:br_ssl_client_forget_session Unexecuted instantiation: aes_ct_enc.c:br_ssl_client_forget_session Unexecuted instantiation: aes_ct64_enc.c:br_ssl_client_forget_session Unexecuted instantiation: aes_big_enc.c:br_ssl_client_forget_session Unexecuted instantiation: i31_sub.c:br_ssl_client_forget_session Unexecuted instantiation: i31_rshift.c:br_ssl_client_forget_session Unexecuted instantiation: i31_ninv31.c:br_ssl_client_forget_session Unexecuted instantiation: i31_montmul.c:br_ssl_client_forget_session Unexecuted instantiation: i31_modpow.c:br_ssl_client_forget_session Unexecuted instantiation: i31_iszero.c:br_ssl_client_forget_session Unexecuted instantiation: i31_fmont.c:br_ssl_client_forget_session Unexecuted instantiation: i31_encode.c:br_ssl_client_forget_session Unexecuted instantiation: i31_decode.c:br_ssl_client_forget_session Unexecuted instantiation: i31_decmod.c:br_ssl_client_forget_session Unexecuted instantiation: i31_bitlen.c:br_ssl_client_forget_session Unexecuted instantiation: i31_add.c:br_ssl_client_forget_session Unexecuted instantiation: i15_sub.c:br_ssl_client_forget_session Unexecuted instantiation: i15_rshift.c:br_ssl_client_forget_session Unexecuted instantiation: i15_ninv15.c:br_ssl_client_forget_session Unexecuted instantiation: i15_montmul.c:br_ssl_client_forget_session Unexecuted instantiation: i15_modpow.c:br_ssl_client_forget_session Unexecuted instantiation: i15_iszero.c:br_ssl_client_forget_session Unexecuted instantiation: i15_fmont.c:br_ssl_client_forget_session Unexecuted instantiation: i15_encode.c:br_ssl_client_forget_session Unexecuted instantiation: i15_decode.c:br_ssl_client_forget_session Unexecuted instantiation: i15_decmod.c:br_ssl_client_forget_session Unexecuted instantiation: i15_bitlen.c:br_ssl_client_forget_session Unexecuted instantiation: i15_add.c:br_ssl_client_forget_session Unexecuted instantiation: i31_tmont.c:br_ssl_client_forget_session Unexecuted instantiation: i31_muladd.c:br_ssl_client_forget_session Unexecuted instantiation: i15_tmont.c:br_ssl_client_forget_session Unexecuted instantiation: i15_muladd.c:br_ssl_client_forget_session Unexecuted instantiation: i32_div32.c:br_ssl_client_forget_session |
2861 | | |
2862 | | /** |
2863 | | * \brief Set client certificate chain and key (single RSA case). |
2864 | | * |
2865 | | * This function sets a client certificate chain, that the client will |
2866 | | * send to the server whenever a client certificate is requested. This |
2867 | | * certificate uses an RSA public key; the corresponding private key is |
2868 | | * invoked for authentication. Trust anchor names sent by the server are |
2869 | | * ignored. |
2870 | | * |
2871 | | * The provided chain and private key are linked in the client context; |
2872 | | * they must remain valid as long as they may be used, i.e. normally |
2873 | | * for the duration of the connection, since they might be invoked |
2874 | | * again upon renegotiations. |
2875 | | * |
2876 | | * \param cc SSL client context. |
2877 | | * \param chain client certificate chain (SSL order: EE comes first). |
2878 | | * \param chain_len client chain length (number of certificates). |
2879 | | * \param sk client private key. |
2880 | | * \param irsasign RSA signature implementation (PKCS#1 v1.5). |
2881 | | */ |
2882 | | void br_ssl_client_set_single_rsa(br_ssl_client_context *cc, |
2883 | | const br_x509_certificate *chain, size_t chain_len, |
2884 | | const br_rsa_private_key *sk, br_rsa_pkcs1_sign irsasign); |
2885 | | |
2886 | | /* |
2887 | | * \brief Set the client certificate chain and key (single EC case). |
2888 | | * |
2889 | | * This function sets a client certificate chain, that the client will |
2890 | | * send to the server whenever a client certificate is requested. This |
2891 | | * certificate uses an EC public key; the corresponding private key is |
2892 | | * invoked for authentication. Trust anchor names sent by the server are |
2893 | | * ignored. |
2894 | | * |
2895 | | * The provided chain and private key are linked in the client context; |
2896 | | * they must remain valid as long as they may be used, i.e. normally |
2897 | | * for the duration of the connection, since they might be invoked |
2898 | | * again upon renegotiations. |
2899 | | * |
2900 | | * The `allowed_usages` is a combination of usages, namely |
2901 | | * `BR_KEYTYPE_KEYX` and/or `BR_KEYTYPE_SIGN`. The `BR_KEYTYPE_KEYX` |
2902 | | * value allows full static ECDH, while the `BR_KEYTYPE_SIGN` value |
2903 | | * allows ECDSA signatures. If ECDSA signatures are used, then an ECDSA |
2904 | | * signature implementation must be provided; otherwise, the `iecdsa` |
2905 | | * parameter may be 0. |
2906 | | * |
2907 | | * The `cert_issuer_key_type` value is either `BR_KEYTYPE_RSA` or |
2908 | | * `BR_KEYTYPE_EC`; it is the type of the public key used the the CA |
2909 | | * that issued (signed) the client certificate. That value is used with |
2910 | | * full static ECDH: support of the certificate by the server depends |
2911 | | * on how the certificate was signed. (Note: when using TLS 1.2, this |
2912 | | * parameter is ignored; but its value matters for TLS 1.0 and 1.1.) |
2913 | | * |
2914 | | * \param cc server context. |
2915 | | * \param chain server certificate chain to send. |
2916 | | * \param chain_len chain length (number of certificates). |
2917 | | * \param sk server private key (EC). |
2918 | | * \param allowed_usages allowed private key usages. |
2919 | | * \param cert_issuer_key_type issuing CA's key type. |
2920 | | * \param iec EC core implementation. |
2921 | | * \param iecdsa ECDSA signature implementation ("asn1" format). |
2922 | | */ |
2923 | | void br_ssl_client_set_single_ec(br_ssl_client_context *cc, |
2924 | | const br_x509_certificate *chain, size_t chain_len, |
2925 | | const br_ec_private_key *sk, unsigned allowed_usages, |
2926 | | unsigned cert_issuer_key_type, |
2927 | | const br_ec_impl *iec, br_ecdsa_sign iecdsa); |
2928 | | |
2929 | | /** |
2930 | | * \brief Type for a "translated cipher suite", as an array of two |
2931 | | * 16-bit integers. |
2932 | | * |
2933 | | * The first element is the cipher suite identifier (as used on the wire). |
2934 | | * The second element is the concatenation of four 4-bit elements which |
2935 | | * characterise the cipher suite contents. In most to least significant |
2936 | | * order, these 4-bit elements are: |
2937 | | * |
2938 | | * - Bits 12 to 15: key exchange + server key type |
2939 | | * |
2940 | | * | val | symbolic constant | suite type | details | |
2941 | | * | :-- | :----------------------- | :---------- | :----------------------------------------------- | |
2942 | | * | 0 | `BR_SSLKEYX_RSA` | RSA | RSA key exchange, key is RSA (encryption) | |
2943 | | * | 1 | `BR_SSLKEYX_ECDHE_RSA` | ECDHE_RSA | ECDHE key exchange, key is RSA (signature) | |
2944 | | * | 2 | `BR_SSLKEYX_ECDHE_ECDSA` | ECDHE_ECDSA | ECDHE key exchange, key is EC (signature) | |
2945 | | * | 3 | `BR_SSLKEYX_ECDH_RSA` | ECDH_RSA | Key is EC (key exchange), cert signed with RSA | |
2946 | | * | 4 | `BR_SSLKEYX_ECDH_ECDSA` | ECDH_ECDSA | Key is EC (key exchange), cert signed with ECDSA | |
2947 | | * |
2948 | | * - Bits 8 to 11: symmetric encryption algorithm |
2949 | | * |
2950 | | * | val | symbolic constant | symmetric encryption | key strength (bits) | |
2951 | | * | :-- | :--------------------- | :------------------- | :------------------ | |
2952 | | * | 0 | `BR_SSLENC_3DES_CBC` | 3DES/CBC | 168 | |
2953 | | * | 1 | `BR_SSLENC_AES128_CBC` | AES-128/CBC | 128 | |
2954 | | * | 2 | `BR_SSLENC_AES256_CBC` | AES-256/CBC | 256 | |
2955 | | * | 3 | `BR_SSLENC_AES128_GCM` | AES-128/GCM | 128 | |
2956 | | * | 4 | `BR_SSLENC_AES256_GCM` | AES-256/GCM | 256 | |
2957 | | * | 5 | `BR_SSLENC_CHACHA20` | ChaCha20/Poly1305 | 256 | |
2958 | | * |
2959 | | * - Bits 4 to 7: MAC algorithm |
2960 | | * |
2961 | | * | val | symbolic constant | MAC type | details | |
2962 | | * | :-- | :----------------- | :----------- | :------------------------------------ | |
2963 | | * | 0 | `BR_SSLMAC_AEAD` | AEAD | No dedicated MAC (encryption is AEAD) | |
2964 | | * | 2 | `BR_SSLMAC_SHA1` | HMAC/SHA-1 | Value matches `br_sha1_ID` | |
2965 | | * | 4 | `BR_SSLMAC_SHA256` | HMAC/SHA-256 | Value matches `br_sha256_ID` | |
2966 | | * | 5 | `BR_SSLMAC_SHA384` | HMAC/SHA-384 | Value matches `br_sha384_ID` | |
2967 | | * |
2968 | | * - Bits 0 to 3: hash function for PRF when used with TLS-1.2 |
2969 | | * |
2970 | | * | val | symbolic constant | hash function | details | |
2971 | | * | :-- | :----------------- | :------------ | :----------------------------------- | |
2972 | | * | 4 | `BR_SSLPRF_SHA256` | SHA-256 | Value matches `br_sha256_ID` | |
2973 | | * | 5 | `BR_SSLPRF_SHA384` | SHA-384 | Value matches `br_sha384_ID` | |
2974 | | * |
2975 | | * For instance, cipher suite `TLS_RSA_WITH_AES_128_GCM_SHA256` has |
2976 | | * standard identifier 0x009C, and is translated to 0x0304, for, in |
2977 | | * that order: RSA key exchange (0), AES-128/GCM (3), AEAD integrity (0), |
2978 | | * SHA-256 in the TLS PRF (4). |
2979 | | */ |
2980 | | typedef uint16_t br_suite_translated[2]; |
2981 | | |
2982 | | #ifndef BR_DOXYGEN_IGNORE |
2983 | | /* |
2984 | | * Constants are already documented in the br_suite_translated type. |
2985 | | */ |
2986 | | |
2987 | | #define BR_SSLKEYX_RSA 0 |
2988 | | #define BR_SSLKEYX_ECDHE_RSA 1 |
2989 | | #define BR_SSLKEYX_ECDHE_ECDSA 2 |
2990 | | #define BR_SSLKEYX_ECDH_RSA 3 |
2991 | | #define BR_SSLKEYX_ECDH_ECDSA 4 |
2992 | | |
2993 | | #define BR_SSLENC_3DES_CBC 0 |
2994 | | #define BR_SSLENC_AES128_CBC 1 |
2995 | | #define BR_SSLENC_AES256_CBC 2 |
2996 | | #define BR_SSLENC_AES128_GCM 3 |
2997 | | #define BR_SSLENC_AES256_GCM 4 |
2998 | | #define BR_SSLENC_CHACHA20 5 |
2999 | | |
3000 | | #define BR_SSLMAC_AEAD 0 |
3001 | | #define BR_SSLMAC_SHA1 br_sha1_ID |
3002 | | #define BR_SSLMAC_SHA256 br_sha256_ID |
3003 | | #define BR_SSLMAC_SHA384 br_sha384_ID |
3004 | | |
3005 | | #define BR_SSLPRF_SHA256 br_sha256_ID |
3006 | | #define BR_SSLPRF_SHA384 br_sha384_ID |
3007 | | |
3008 | | #endif |
3009 | | |
3010 | | /* |
3011 | | * Pre-declaration for the SSL server context. |
3012 | | */ |
3013 | | typedef struct br_ssl_server_context_ br_ssl_server_context; |
3014 | | |
3015 | | /** |
3016 | | * \brief Type for the server policy choices, taken after analysis of |
3017 | | * the client message (ClientHello). |
3018 | | */ |
3019 | | typedef struct { |
3020 | | /** |
3021 | | * \brief Cipher suite to use with that client. |
3022 | | */ |
3023 | | uint16_t cipher_suite; |
3024 | | |
3025 | | /** |
3026 | | * \brief Hash function or algorithm for signing the ServerKeyExchange. |
3027 | | * |
3028 | | * This parameter is ignored for `TLS_RSA_*` and `TLS_ECDH_*` |
3029 | | * cipher suites; it is used only for `TLS_ECDHE_*` suites, in |
3030 | | * which the server _signs_ the ephemeral EC Diffie-Hellman |
3031 | | * parameters sent to the client. |
3032 | | * |
3033 | | * This identifier must be one of the following values: |
3034 | | * |
3035 | | * - `0xFF00 + id`, where `id` is a hash function identifier |
3036 | | * (0 for MD5+SHA-1, or 2 to 6 for one of the SHA functions); |
3037 | | * |
3038 | | * - a full 16-bit identifier, lower than `0xFF00`. |
3039 | | * |
3040 | | * If the first option is used, then the SSL engine will |
3041 | | * compute the hash of the data that is to be signed, with the |
3042 | | * designated hash function. The `do_sign()` method will be |
3043 | | * invoked with that hash value provided in the the `data` |
3044 | | * buffer. |
3045 | | * |
3046 | | * If the second option is used, then the SSL engine will NOT |
3047 | | * compute a hash on the data; instead, it will provide the |
3048 | | * to-be-signed data itself in `data`, i.e. the concatenation of |
3049 | | * the client random, server random, and encoded ECDH |
3050 | | * parameters. Furthermore, with TLS-1.2 and later, the 16-bit |
3051 | | * identifier will be used "as is" in the protocol, in the |
3052 | | * SignatureAndHashAlgorithm; for instance, `0x0401` stands for |
3053 | | * RSA PKCS#1 v1.5 signature (the `01`) with SHA-256 as hash |
3054 | | * function (the `04`). |
3055 | | * |
3056 | | * Take care that with TLS 1.0 and 1.1, the hash function is |
3057 | | * constrainted by the protocol: RSA signature must use |
3058 | | * MD5+SHA-1 (so use `0xFF00`), while ECDSA must use SHA-1 |
3059 | | * (`0xFF02`). Since TLS 1.0 and 1.1 don't include a |
3060 | | * SignatureAndHashAlgorithm field in their ServerKeyExchange |
3061 | | * messages, any value below `0xFF00` will be usable to send the |
3062 | | * raw ServerKeyExchange data to the `do_sign()` callback, but |
3063 | | * that callback must still follow the protocol requirements |
3064 | | * when generating the signature. |
3065 | | */ |
3066 | | unsigned algo_id; |
3067 | | |
3068 | | /** |
3069 | | * \brief Certificate chain to send to the client. |
3070 | | * |
3071 | | * This is an array of `br_x509_certificate` objects, each |
3072 | | * normally containing a DER-encoded certificate. The server |
3073 | | * code does not try to decode these elements. |
3074 | | */ |
3075 | | const br_x509_certificate *chain; |
3076 | | |
3077 | | /** |
3078 | | * \brief Certificate chain length (number of certificates). |
3079 | | */ |
3080 | | size_t chain_len; |
3081 | | |
3082 | | } br_ssl_server_choices; |
3083 | | |
3084 | | /** |
3085 | | * \brief Class type for a policy handler (server side). |
3086 | | * |
3087 | | * A policy handler selects the policy parameters for a connection |
3088 | | * (cipher suite and other algorithms, and certificate chain to send to |
3089 | | * the client); it also performs the server-side computations involving |
3090 | | * its permanent private key. |
3091 | | * |
3092 | | * The SSL server engine will invoke first `choose()`, once the |
3093 | | * ClientHello message has been received, then either `do_keyx()` |
3094 | | * `do_sign()`, depending on the cipher suite. |
3095 | | */ |
3096 | | typedef struct br_ssl_server_policy_class_ br_ssl_server_policy_class; |
3097 | | struct br_ssl_server_policy_class_ { |
3098 | | /** |
3099 | | * \brief Context size (in bytes). |
3100 | | */ |
3101 | | size_t context_size; |
3102 | | |
3103 | | /** |
3104 | | * \brief Select algorithms and certificates for this connection. |
3105 | | * |
3106 | | * This callback function shall fill the provided `choices` |
3107 | | * structure with the policy choices for this connection. This |
3108 | | * entails selecting the cipher suite, hash function for signing |
3109 | | * the ServerKeyExchange (applicable only to ECDHE cipher suites), |
3110 | | * and certificate chain to send. |
3111 | | * |
3112 | | * The callback receives a pointer to the server context that |
3113 | | * contains the relevant data. In particular, the functions |
3114 | | * `br_ssl_server_get_client_suites()`, |
3115 | | * `br_ssl_server_get_client_hashes()` and |
3116 | | * `br_ssl_server_get_client_curves()` can be used to obtain |
3117 | | * the cipher suites, hash functions and elliptic curves |
3118 | | * supported by both the client and server, respectively. The |
3119 | | * `br_ssl_engine_get_version()` and `br_ssl_engine_get_server_name()` |
3120 | | * functions yield the protocol version and requested server name |
3121 | | * (SNI), respectively. |
3122 | | * |
3123 | | * This function may modify its context structure (`pctx`) in |
3124 | | * arbitrary ways to keep track of its own choices. |
3125 | | * |
3126 | | * This function shall return 1 if appropriate policy choices |
3127 | | * could be made, or 0 if this connection cannot be pursued. |
3128 | | * |
3129 | | * \param pctx policy context. |
3130 | | * \param cc SSL server context. |
3131 | | * \param choices destination structure for the policy choices. |
3132 | | * \return 1 on success, 0 on error. |
3133 | | */ |
3134 | | int (*choose)(const br_ssl_server_policy_class **pctx, |
3135 | | const br_ssl_server_context *cc, |
3136 | | br_ssl_server_choices *choices); |
3137 | | |
3138 | | /** |
3139 | | * \brief Perform key exchange (server part). |
3140 | | * |
3141 | | * This callback is invoked to perform the server-side cryptographic |
3142 | | * operation for a key exchange that is not ECDHE. This callback |
3143 | | * uses the private key. |
3144 | | * |
3145 | | * **For RSA key exchange**, the provided `data` (of length `*len` |
3146 | | * bytes) shall be decrypted with the server's private key, and |
3147 | | * the 48-byte premaster secret copied back to the first 48 bytes |
3148 | | * of `data`. |
3149 | | * |
3150 | | * - The caller makes sure that `*len` is at least 59 bytes. |
3151 | | * |
3152 | | * - This callback MUST check that the provided length matches |
3153 | | * that of the key modulus; it shall report an error otherwise. |
3154 | | * |
3155 | | * - If the length matches that of the RSA key modulus, then |
3156 | | * processing MUST be constant-time, even if decryption fails, |
3157 | | * or the padding is incorrect, or the plaintext message length |
3158 | | * is not exactly 48 bytes. |
3159 | | * |
3160 | | * - This callback needs not check the two first bytes of the |
3161 | | * obtained pre-master secret (the caller will do that). |
3162 | | * |
3163 | | * - If an error is reported (0), then what the callback put |
3164 | | * in the first 48 bytes of `data` is unimportant (the caller |
3165 | | * will use random bytes instead). |
3166 | | * |
3167 | | * **For ECDH key exchange**, the provided `data` (of length `*len` |
3168 | | * bytes) is the elliptic curve point from the client. The |
3169 | | * callback shall multiply it with its private key, and store |
3170 | | * the resulting X coordinate in `data`, starting at offset 0, |
3171 | | * and set `*len` to the length of the X coordinate. |
3172 | | * |
3173 | | * - If the input array does not have the proper length for |
3174 | | * an encoded curve point, then an error (0) shall be reported. |
3175 | | * |
3176 | | * - If the input array has the proper length, then processing |
3177 | | * MUST be constant-time, even if the data is not a valid |
3178 | | * encoded point. |
3179 | | * |
3180 | | * - This callback MUST check that the input point is valid. |
3181 | | * |
3182 | | * Returned value is 1 on success, 0 on error. |
3183 | | * |
3184 | | * \param pctx policy context. |
3185 | | * \param data key exchange data from the client. |
3186 | | * \param len key exchange data length (in bytes). |
3187 | | * \return 1 on success, 0 on error. |
3188 | | */ |
3189 | | uint32_t (*do_keyx)(const br_ssl_server_policy_class **pctx, |
3190 | | unsigned char *data, size_t *len); |
3191 | | |
3192 | | /** |
3193 | | * \brief Perform a signature (for a ServerKeyExchange message). |
3194 | | * |
3195 | | * This callback function is invoked for ECDHE cipher suites. On |
3196 | | * input, the hash value or message to sign is in `data`, of |
3197 | | * size `hv_len`; the involved hash function or algorithm is |
3198 | | * identified by `algo_id`. The signature shall be computed and |
3199 | | * written back into `data`; the total size of that buffer is |
3200 | | * `len` bytes. |
3201 | | * |
3202 | | * This callback shall verify that the signature length does not |
3203 | | * exceed `len` bytes, and abstain from writing the signature if |
3204 | | * it does not fit. |
3205 | | * |
3206 | | * The `algo_id` value matches that which was written in the |
3207 | | * `choices` structures by the `choose()` callback. This will be |
3208 | | * one of the following: |
3209 | | * |
3210 | | * - `0xFF00 + id` for a hash function identifier `id`. In |
3211 | | * that case, the `data` buffer contains a hash value |
3212 | | * already computed over the data that is to be signed, |
3213 | | * of length `hv_len`. The `id` may be 0 to designate the |
3214 | | * special MD5+SHA-1 concatenation (old-style RSA signing). |
3215 | | * |
3216 | | * - Another value, lower than `0xFF00`. The `data` buffer |
3217 | | * then contains the raw, non-hashed data to be signed |
3218 | | * (concatenation of the client and server randoms and |
3219 | | * ECDH parameters). The callback is responsible to apply |
3220 | | * any relevant hashing as part of the signing process. |
3221 | | * |
3222 | | * Returned value is the signature length (in bytes), or 0 on error. |
3223 | | * |
3224 | | * \param pctx policy context. |
3225 | | * \param algo_id hash function / algorithm identifier. |
3226 | | * \param data input/output buffer (message/hash, then signature). |
3227 | | * \param hv_len hash value or message length (in bytes). |
3228 | | * \param len total buffer length (in bytes). |
3229 | | * \return signature length (in bytes) on success, or 0 on error. |
3230 | | */ |
3231 | | size_t (*do_sign)(const br_ssl_server_policy_class **pctx, |
3232 | | unsigned algo_id, |
3233 | | unsigned char *data, size_t hv_len, size_t len); |
3234 | | }; |
3235 | | |
3236 | | /** |
3237 | | * \brief A single-chain RSA policy handler. |
3238 | | * |
3239 | | * This policy context uses a single certificate chain, and a RSA |
3240 | | * private key. The context can be restricted to only signatures or |
3241 | | * only key exchange. |
3242 | | * |
3243 | | * Apart from the first field (vtable pointer), its contents are |
3244 | | * opaque and shall not be accessed directly. |
3245 | | */ |
3246 | | typedef struct { |
3247 | | /** \brief Pointer to vtable. */ |
3248 | | const br_ssl_server_policy_class *vtable; |
3249 | | #ifndef BR_DOXYGEN_IGNORE |
3250 | | const br_x509_certificate *chain; |
3251 | | size_t chain_len; |
3252 | | const br_rsa_private_key *sk; |
3253 | | unsigned allowed_usages; |
3254 | | br_rsa_private irsacore; |
3255 | | br_rsa_pkcs1_sign irsasign; |
3256 | | #endif |
3257 | | } br_ssl_server_policy_rsa_context; |
3258 | | |
3259 | | /** |
3260 | | * \brief A single-chain EC policy handler. |
3261 | | * |
3262 | | * This policy context uses a single certificate chain, and an EC |
3263 | | * private key. The context can be restricted to only signatures or |
3264 | | * only key exchange. |
3265 | | * |
3266 | | * Due to how TLS is defined, this context must be made aware whether |
3267 | | * the server certificate was itself signed with RSA or ECDSA. The code |
3268 | | * does not try to decode the certificate to obtain that information. |
3269 | | * |
3270 | | * Apart from the first field (vtable pointer), its contents are |
3271 | | * opaque and shall not be accessed directly. |
3272 | | */ |
3273 | | typedef struct { |
3274 | | /** \brief Pointer to vtable. */ |
3275 | | const br_ssl_server_policy_class *vtable; |
3276 | | #ifndef BR_DOXYGEN_IGNORE |
3277 | | const br_x509_certificate *chain; |
3278 | | size_t chain_len; |
3279 | | const br_ec_private_key *sk; |
3280 | | unsigned allowed_usages; |
3281 | | unsigned cert_issuer_key_type; |
3282 | | const br_multihash_context *mhash; |
3283 | | const br_ec_impl *iec; |
3284 | | br_ecdsa_sign iecdsa; |
3285 | | #endif |
3286 | | } br_ssl_server_policy_ec_context; |
3287 | | |
3288 | | /** |
3289 | | * \brief Class type for a session parameter cache. |
3290 | | * |
3291 | | * Session parameters are saved in the cache with `save()`, and |
3292 | | * retrieved with `load()`. The cache implementation can apply any |
3293 | | * storage and eviction strategy that it sees fit. The SSL server |
3294 | | * context that performs the request is provided, so that its |
3295 | | * functionalities may be used by the implementation (e.g. hash |
3296 | | * functions or random number generation). |
3297 | | */ |
3298 | | typedef struct br_ssl_session_cache_class_ br_ssl_session_cache_class; |
3299 | | struct br_ssl_session_cache_class_ { |
3300 | | /** |
3301 | | * \brief Context size (in bytes). |
3302 | | */ |
3303 | | size_t context_size; |
3304 | | |
3305 | | /** |
3306 | | * \brief Record a session. |
3307 | | * |
3308 | | * This callback should record the provided session parameters. |
3309 | | * The `params` structure is transient, so its contents shall |
3310 | | * be copied into the cache. The session ID has been randomly |
3311 | | * generated and always has length exactly 32 bytes. |
3312 | | * |
3313 | | * \param ctx session cache context. |
3314 | | * \param server_ctx SSL server context. |
3315 | | * \param params session parameters to save. |
3316 | | */ |
3317 | | void (*save)(const br_ssl_session_cache_class **ctx, |
3318 | | br_ssl_server_context *server_ctx, |
3319 | | const br_ssl_session_parameters *params); |
3320 | | |
3321 | | /** |
3322 | | * \brief Lookup a session in the cache. |
3323 | | * |
3324 | | * The session ID to lookup is in `params` and always has length |
3325 | | * exactly 32 bytes. If the session parameters are found in the |
3326 | | * cache, then the parameters shall be copied into the `params` |
3327 | | * structure. Returned value is 1 on successful lookup, 0 |
3328 | | * otherwise. |
3329 | | * |
3330 | | * \param ctx session cache context. |
3331 | | * \param server_ctx SSL server context. |
3332 | | * \param params destination for session parameters. |
3333 | | * \return 1 if found, 0 otherwise. |
3334 | | */ |
3335 | | int (*load)(const br_ssl_session_cache_class **ctx, |
3336 | | br_ssl_server_context *server_ctx, |
3337 | | br_ssl_session_parameters *params); |
3338 | | }; |
3339 | | |
3340 | | /** |
3341 | | * \brief Context for a basic cache system. |
3342 | | * |
3343 | | * The system stores session parameters in a buffer provided at |
3344 | | * initialisation time. Each entry uses exactly 100 bytes, and |
3345 | | * buffer sizes up to 4294967295 bytes are supported. |
3346 | | * |
3347 | | * Entries are evicted with a LRU (Least Recently Used) policy. A |
3348 | | * search tree is maintained to keep lookups fast even with large |
3349 | | * caches. |
3350 | | * |
3351 | | * Apart from the first field (vtable pointer), the structure |
3352 | | * contents are opaque and shall not be accessed directly. |
3353 | | */ |
3354 | | typedef struct { |
3355 | | /** \brief Pointer to vtable. */ |
3356 | | const br_ssl_session_cache_class *vtable; |
3357 | | #ifndef BR_DOXYGEN_IGNORE |
3358 | | unsigned char *store; |
3359 | | size_t store_len, store_ptr; |
3360 | | unsigned char index_key[32]; |
3361 | | const br_hash_class *hash; |
3362 | | int init_done; |
3363 | | uint32_t head, tail, root; |
3364 | | #endif |
3365 | | } br_ssl_session_cache_lru; |
3366 | | |
3367 | | /** |
3368 | | * \brief Initialise a LRU session cache with the provided storage space. |
3369 | | * |
3370 | | * The provided storage space must remain valid as long as the cache |
3371 | | * is used. Arbitrary lengths are supported, up to 4294967295 bytes; |
3372 | | * each entry uses up exactly 100 bytes. |
3373 | | * |
3374 | | * \param cc session cache context. |
3375 | | * \param store storage space for cached entries. |
3376 | | * \param store_len storage space length (in bytes). |
3377 | | */ |
3378 | | void br_ssl_session_cache_lru_init(br_ssl_session_cache_lru *cc, |
3379 | | unsigned char *store, size_t store_len); |
3380 | | |
3381 | | /** |
3382 | | * \brief Forget an entry in an LRU session cache. |
3383 | | * |
3384 | | * The session cache context must have been initialised. The entry |
3385 | | * with the provided session ID (of exactly 32 bytes) is looked for |
3386 | | * in the cache; if located, it is disabled. |
3387 | | * |
3388 | | * \param cc session cache context. |
3389 | | * \param id session ID to forget. |
3390 | | */ |
3391 | | void br_ssl_session_cache_lru_forget( |
3392 | | br_ssl_session_cache_lru *cc, const unsigned char *id); |
3393 | | |
3394 | | /** |
3395 | | * \brief Context structure for a SSL server. |
3396 | | * |
3397 | | * The first field (called `eng`) is the SSL engine; all functions that |
3398 | | * work on a `br_ssl_engine_context` structure shall take as parameter |
3399 | | * a pointer to that field. The other structure fields are opaque and |
3400 | | * must not be accessed directly. |
3401 | | */ |
3402 | | struct br_ssl_server_context_ { |
3403 | | /** |
3404 | | * \brief The encapsulated engine context. |
3405 | | */ |
3406 | | br_ssl_engine_context eng; |
3407 | | |
3408 | | #ifndef BR_DOXYGEN_IGNORE |
3409 | | /* |
3410 | | * Maximum version from the client. |
3411 | | */ |
3412 | | uint16_t client_max_version; |
3413 | | |
3414 | | /* |
3415 | | * Session cache. |
3416 | | */ |
3417 | | const br_ssl_session_cache_class **cache_vtable; |
3418 | | |
3419 | | /* |
3420 | | * Translated cipher suites supported by the client. The list |
3421 | | * is trimmed to include only the cipher suites that the |
3422 | | * server also supports; they are in the same order as in the |
3423 | | * client message. |
3424 | | */ |
3425 | | br_suite_translated client_suites[BR_MAX_CIPHER_SUITES]; |
3426 | | unsigned char client_suites_num; |
3427 | | |
3428 | | /* |
3429 | | * Hash functions supported by the client, with ECDSA and RSA |
3430 | | * (bit mask). For hash function with id 'x', set bit index is |
3431 | | * x for RSA, x+8 for ECDSA. For newer algorithms, with ID |
3432 | | * 0x08**, bit 16+k is set for algorithm 0x0800+k. |
3433 | | */ |
3434 | | uint32_t hashes; |
3435 | | |
3436 | | /* |
3437 | | * Curves supported by the client (bit mask, for named curves). |
3438 | | */ |
3439 | | uint32_t curves; |
3440 | | |
3441 | | /* |
3442 | | * Context for chain handler. |
3443 | | */ |
3444 | | const br_ssl_server_policy_class **policy_vtable; |
3445 | | uint16_t sign_hash_id; |
3446 | | |
3447 | | /* |
3448 | | * For the core handlers, thus avoiding (in most cases) the |
3449 | | * need for an externally provided policy context. |
3450 | | */ |
3451 | | union { |
3452 | | const br_ssl_server_policy_class *vtable; |
3453 | | br_ssl_server_policy_rsa_context single_rsa; |
3454 | | br_ssl_server_policy_ec_context single_ec; |
3455 | | } chain_handler; |
3456 | | |
3457 | | /* |
3458 | | * Buffer for the ECDHE private key. |
3459 | | */ |
3460 | | unsigned char ecdhe_key[70]; |
3461 | | size_t ecdhe_key_len; |
3462 | | |
3463 | | /* |
3464 | | * Trust anchor names for client authentication. "ta_names" and |
3465 | | * "tas" cannot be both non-NULL. |
3466 | | */ |
3467 | | const br_x500_name *ta_names; |
3468 | | const br_x509_trust_anchor *tas; |
3469 | | size_t num_tas; |
3470 | | size_t cur_dn_index; |
3471 | | const unsigned char *cur_dn; |
3472 | | size_t cur_dn_len; |
3473 | | |
3474 | | /* |
3475 | | * Buffer for the hash value computed over all handshake messages |
3476 | | * prior to CertificateVerify, and identifier for the hash function. |
3477 | | */ |
3478 | | unsigned char hash_CV[64]; |
3479 | | size_t hash_CV_len; |
3480 | | int hash_CV_id; |
3481 | | |
3482 | | /* |
3483 | | * Server-specific implementations. |
3484 | | * (none for now) |
3485 | | */ |
3486 | | #endif |
3487 | | }; |
3488 | | |
3489 | | /* |
3490 | | * Each br_ssl_server_init_xxx() function sets the list of supported |
3491 | | * cipher suites and used implementations, as specified by the profile |
3492 | | * name 'xxx'. Defined profile names are: |
3493 | | * |
3494 | | * full_rsa all supported algorithm, server key type is RSA |
3495 | | * full_ec all supported algorithm, server key type is EC |
3496 | | * TODO: add other profiles |
3497 | | * |
3498 | | * Naming scheme for "minimal" profiles: min123 |
3499 | | * |
3500 | | * -- character 1: key exchange |
3501 | | * r = RSA |
3502 | | * e = ECDHE_RSA |
3503 | | * f = ECDHE_ECDSA |
3504 | | * u = ECDH_RSA |
3505 | | * v = ECDH_ECDSA |
3506 | | * -- character 2: version / PRF |
3507 | | * 0 = TLS 1.0 / 1.1 with MD5+SHA-1 |
3508 | | * 2 = TLS 1.2 with SHA-256 |
3509 | | * 3 = TLS 1.2 with SHA-384 |
3510 | | * -- character 3: encryption |
3511 | | * a = AES/CBC |
3512 | | * d = 3DES/CBC |
3513 | | * g = AES/GCM |
3514 | | * c = ChaCha20+Poly1305 |
3515 | | */ |
3516 | | |
3517 | | /** |
3518 | | * \brief SSL server profile: full_rsa. |
3519 | | * |
3520 | | * This function initialises the provided SSL server context with |
3521 | | * all supported algorithms and cipher suites that rely on a RSA |
3522 | | * key pair. |
3523 | | * |
3524 | | * \param cc server context to initialise. |
3525 | | * \param chain server certificate chain. |
3526 | | * \param chain_len certificate chain length (number of certificate). |
3527 | | * \param sk RSA private key. |
3528 | | */ |
3529 | | void br_ssl_server_init_full_rsa(br_ssl_server_context *cc, |
3530 | | const br_x509_certificate *chain, size_t chain_len, |
3531 | | const br_rsa_private_key *sk); |
3532 | | |
3533 | | /** |
3534 | | * \brief SSL server profile: full_ec. |
3535 | | * |
3536 | | * This function initialises the provided SSL server context with |
3537 | | * all supported algorithms and cipher suites that rely on an EC |
3538 | | * key pair. |
3539 | | * |
3540 | | * The key type of the CA that issued the server's certificate must |
3541 | | * be provided, since it matters for ECDH cipher suites (ECDH_RSA |
3542 | | * suites require a RSA-powered CA). The key type is either |
3543 | | * `BR_KEYTYPE_RSA` or `BR_KEYTYPE_EC`. |
3544 | | * |
3545 | | * \param cc server context to initialise. |
3546 | | * \param chain server certificate chain. |
3547 | | * \param chain_len chain length (number of certificates). |
3548 | | * \param cert_issuer_key_type certificate issuer's key type. |
3549 | | * \param sk EC private key. |
3550 | | */ |
3551 | | void br_ssl_server_init_full_ec(br_ssl_server_context *cc, |
3552 | | const br_x509_certificate *chain, size_t chain_len, |
3553 | | unsigned cert_issuer_key_type, const br_ec_private_key *sk); |
3554 | | |
3555 | | /** |
3556 | | * \brief SSL server profile: minr2g. |
3557 | | * |
3558 | | * This profile uses only TLS_RSA_WITH_AES_128_GCM_SHA256. Server key is |
3559 | | * RSA, and RSA key exchange is used (not forward secure, but uses little |
3560 | | * CPU in the client). |
3561 | | * |
3562 | | * \param cc server context to initialise. |
3563 | | * \param chain server certificate chain. |
3564 | | * \param chain_len certificate chain length (number of certificate). |
3565 | | * \param sk RSA private key. |
3566 | | */ |
3567 | | void br_ssl_server_init_minr2g(br_ssl_server_context *cc, |
3568 | | const br_x509_certificate *chain, size_t chain_len, |
3569 | | const br_rsa_private_key *sk); |
3570 | | |
3571 | | /** |
3572 | | * \brief SSL server profile: mine2g. |
3573 | | * |
3574 | | * This profile uses only TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256. Server key |
3575 | | * is RSA, and ECDHE key exchange is used. This suite provides forward |
3576 | | * security, with a higher CPU expense on the client, and a somewhat |
3577 | | * larger code footprint (compared to "minr2g"). |
3578 | | * |
3579 | | * \param cc server context to initialise. |
3580 | | * \param chain server certificate chain. |
3581 | | * \param chain_len certificate chain length (number of certificate). |
3582 | | * \param sk RSA private key. |
3583 | | */ |
3584 | | void br_ssl_server_init_mine2g(br_ssl_server_context *cc, |
3585 | | const br_x509_certificate *chain, size_t chain_len, |
3586 | | const br_rsa_private_key *sk); |
3587 | | |
3588 | | /** |
3589 | | * \brief SSL server profile: minf2g. |
3590 | | * |
3591 | | * This profile uses only TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256. |
3592 | | * Server key is EC, and ECDHE key exchange is used. This suite provides |
3593 | | * forward security, with a higher CPU expense on the client and server |
3594 | | * (by a factor of about 3 to 4), and a somewhat larger code footprint |
3595 | | * (compared to "minu2g" and "minv2g"). |
3596 | | * |
3597 | | * \param cc server context to initialise. |
3598 | | * \param chain server certificate chain. |
3599 | | * \param chain_len certificate chain length (number of certificate). |
3600 | | * \param sk EC private key. |
3601 | | */ |
3602 | | void br_ssl_server_init_minf2g(br_ssl_server_context *cc, |
3603 | | const br_x509_certificate *chain, size_t chain_len, |
3604 | | const br_ec_private_key *sk); |
3605 | | |
3606 | | /** |
3607 | | * \brief SSL server profile: minu2g. |
3608 | | * |
3609 | | * This profile uses only TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256. |
3610 | | * Server key is EC, and ECDH key exchange is used; the issuing CA used |
3611 | | * a RSA key. |
3612 | | * |
3613 | | * The "minu2g" and "minv2g" profiles do not provide forward secrecy, |
3614 | | * but are the lightest on the server (for CPU usage), and are rather |
3615 | | * inexpensive on the client as well. |
3616 | | * |
3617 | | * \param cc server context to initialise. |
3618 | | * \param chain server certificate chain. |
3619 | | * \param chain_len certificate chain length (number of certificate). |
3620 | | * \param sk EC private key. |
3621 | | */ |
3622 | | void br_ssl_server_init_minu2g(br_ssl_server_context *cc, |
3623 | | const br_x509_certificate *chain, size_t chain_len, |
3624 | | const br_ec_private_key *sk); |
3625 | | |
3626 | | /** |
3627 | | * \brief SSL server profile: minv2g. |
3628 | | * |
3629 | | * This profile uses only TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256. |
3630 | | * Server key is EC, and ECDH key exchange is used; the issuing CA used |
3631 | | * an EC key. |
3632 | | * |
3633 | | * The "minu2g" and "minv2g" profiles do not provide forward secrecy, |
3634 | | * but are the lightest on the server (for CPU usage), and are rather |
3635 | | * inexpensive on the client as well. |
3636 | | * |
3637 | | * \param cc server context to initialise. |
3638 | | * \param chain server certificate chain. |
3639 | | * \param chain_len certificate chain length (number of certificate). |
3640 | | * \param sk EC private key. |
3641 | | */ |
3642 | | void br_ssl_server_init_minv2g(br_ssl_server_context *cc, |
3643 | | const br_x509_certificate *chain, size_t chain_len, |
3644 | | const br_ec_private_key *sk); |
3645 | | |
3646 | | /** |
3647 | | * \brief SSL server profile: mine2c. |
3648 | | * |
3649 | | * This profile uses only TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256. |
3650 | | * Server key is RSA, and ECDHE key exchange is used. This suite |
3651 | | * provides forward security. |
3652 | | * |
3653 | | * \param cc server context to initialise. |
3654 | | * \param chain server certificate chain. |
3655 | | * \param chain_len certificate chain length (number of certificate). |
3656 | | * \param sk RSA private key. |
3657 | | */ |
3658 | | void br_ssl_server_init_mine2c(br_ssl_server_context *cc, |
3659 | | const br_x509_certificate *chain, size_t chain_len, |
3660 | | const br_rsa_private_key *sk); |
3661 | | |
3662 | | /** |
3663 | | * \brief SSL server profile: minf2c. |
3664 | | * |
3665 | | * This profile uses only TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256. |
3666 | | * Server key is EC, and ECDHE key exchange is used. This suite provides |
3667 | | * forward security. |
3668 | | * |
3669 | | * \param cc server context to initialise. |
3670 | | * \param chain server certificate chain. |
3671 | | * \param chain_len certificate chain length (number of certificate). |
3672 | | * \param sk EC private key. |
3673 | | */ |
3674 | | void br_ssl_server_init_minf2c(br_ssl_server_context *cc, |
3675 | | const br_x509_certificate *chain, size_t chain_len, |
3676 | | const br_ec_private_key *sk); |
3677 | | |
3678 | | /** |
3679 | | * \brief Get the supported client suites. |
3680 | | * |
3681 | | * This function shall be called only after the ClientHello has been |
3682 | | * processed, typically from the policy engine. The returned array |
3683 | | * contains the cipher suites that are supported by both the client |
3684 | | * and the server; these suites are in client preference order, unless |
3685 | | * the `BR_OPT_ENFORCE_SERVER_PREFERENCES` flag was set, in which case |
3686 | | * they are in server preference order. |
3687 | | * |
3688 | | * The suites are _translated_, which means that each suite is given |
3689 | | * as two 16-bit integers: the standard suite identifier, and its |
3690 | | * translated version, broken down into its individual components, |
3691 | | * as explained with the `br_suite_translated` type. |
3692 | | * |
3693 | | * The returned array is allocated in the context and will be rewritten |
3694 | | * by each handshake. |
3695 | | * |
3696 | | * \param cc server context. |
3697 | | * \param num receives the array size (number of suites). |
3698 | | * \return the translated common cipher suites, in preference order. |
3699 | | */ |
3700 | | static inline const br_suite_translated * |
3701 | | br_ssl_server_get_client_suites(const br_ssl_server_context *cc, size_t *num) |
3702 | 0 | { |
3703 | 0 | *num = cc->client_suites_num; |
3704 | 0 | return cc->client_suites; |
3705 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_server_get_client_suites(br_ssl_server_context_ const*, unsigned long*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_server_get_client_suites Unexecuted instantiation: chacha20_sse2.c:br_ssl_server_get_client_suites Unexecuted instantiation: chacha20_ct.c:br_ssl_server_get_client_suites Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_server_get_client_suites Unexecuted instantiation: aes_x86ni.c:br_ssl_server_get_client_suites Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_server_get_client_suites Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_server_get_client_suites Unexecuted instantiation: aes_ct_ctr.c:br_ssl_server_get_client_suites Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_server_get_client_suites Unexecuted instantiation: aes_ct64.c:br_ssl_server_get_client_suites Unexecuted instantiation: aes_ct.c:br_ssl_server_get_client_suites Unexecuted instantiation: aes_common.c:br_ssl_server_get_client_suites Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_server_get_client_suites Unexecuted instantiation: prf_md5sha1.c:br_ssl_server_get_client_suites Unexecuted instantiation: prf.c:br_ssl_server_get_client_suites Unexecuted instantiation: sysrng.c:br_ssl_server_get_client_suites Unexecuted instantiation: hmac_drbg.c:br_ssl_server_get_client_suites Unexecuted instantiation: hmac.c:br_ssl_server_get_client_suites Unexecuted instantiation: shake.c:br_ssl_server_get_client_suites Unexecuted instantiation: hkdf.c:br_ssl_server_get_client_suites Unexecuted instantiation: sha2small.c:br_ssl_server_get_client_suites Unexecuted instantiation: sha2big.c:br_ssl_server_get_client_suites Unexecuted instantiation: sha1.c:br_ssl_server_get_client_suites Unexecuted instantiation: md5sha1.c:br_ssl_server_get_client_suites Unexecuted instantiation: md5.c:br_ssl_server_get_client_suites Unexecuted instantiation: ghash_ctmul32.c:br_ssl_server_get_client_suites Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_server_get_client_suites Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_server_get_client_suites Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_server_get_client_suites Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_server_get_client_suites Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_server_get_client_suites Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_server_get_client_suites Unexecuted instantiation: ec_secp521r1.c:br_ssl_server_get_client_suites Unexecuted instantiation: ec_secp384r1.c:br_ssl_server_get_client_suites Unexecuted instantiation: ec_secp256r1.c:br_ssl_server_get_client_suites Unexecuted instantiation: ec_pubkey.c:br_ssl_server_get_client_suites Unexecuted instantiation: ec_prime_i31.c:br_ssl_server_get_client_suites Unexecuted instantiation: ec_prime_i15.c:br_ssl_server_get_client_suites Unexecuted instantiation: ec_p256_m64.c:br_ssl_server_get_client_suites Unexecuted instantiation: ec_p256_m62.c:br_ssl_server_get_client_suites Unexecuted instantiation: ec_p256_m31.c:br_ssl_server_get_client_suites Unexecuted instantiation: ec_p256_m15.c:br_ssl_server_get_client_suites Unexecuted instantiation: ec_keygen.c:br_ssl_server_get_client_suites Unexecuted instantiation: ec_default.c:br_ssl_server_get_client_suites Unexecuted instantiation: ec_c25519_m64.c:br_ssl_server_get_client_suites Unexecuted instantiation: ec_c25519_m62.c:br_ssl_server_get_client_suites Unexecuted instantiation: ec_c25519_m31.c:br_ssl_server_get_client_suites Unexecuted instantiation: ec_c25519_m15.c:br_ssl_server_get_client_suites Unexecuted instantiation: ec_c25519_i31.c:br_ssl_server_get_client_suites Unexecuted instantiation: ec_c25519_i15.c:br_ssl_server_get_client_suites Unexecuted instantiation: ec_all_m31.c:br_ssl_server_get_client_suites Unexecuted instantiation: enc64be.c:br_ssl_server_get_client_suites Unexecuted instantiation: enc32le.c:br_ssl_server_get_client_suites Unexecuted instantiation: enc32be.c:br_ssl_server_get_client_suites Unexecuted instantiation: dec64be.c:br_ssl_server_get_client_suites Unexecuted instantiation: dec32le.c:br_ssl_server_get_client_suites Unexecuted instantiation: dec32be.c:br_ssl_server_get_client_suites Unexecuted instantiation: ccopy.c:br_ssl_server_get_client_suites Unexecuted instantiation: gcm.c:br_ssl_server_get_client_suites Unexecuted instantiation: ccm.c:br_ssl_server_get_client_suites Unexecuted instantiation: aes_small_enc.c:br_ssl_server_get_client_suites Unexecuted instantiation: aes_ct_enc.c:br_ssl_server_get_client_suites Unexecuted instantiation: aes_ct64_enc.c:br_ssl_server_get_client_suites Unexecuted instantiation: aes_big_enc.c:br_ssl_server_get_client_suites Unexecuted instantiation: i31_sub.c:br_ssl_server_get_client_suites Unexecuted instantiation: i31_rshift.c:br_ssl_server_get_client_suites Unexecuted instantiation: i31_ninv31.c:br_ssl_server_get_client_suites Unexecuted instantiation: i31_montmul.c:br_ssl_server_get_client_suites Unexecuted instantiation: i31_modpow.c:br_ssl_server_get_client_suites Unexecuted instantiation: i31_iszero.c:br_ssl_server_get_client_suites Unexecuted instantiation: i31_fmont.c:br_ssl_server_get_client_suites Unexecuted instantiation: i31_encode.c:br_ssl_server_get_client_suites Unexecuted instantiation: i31_decode.c:br_ssl_server_get_client_suites Unexecuted instantiation: i31_decmod.c:br_ssl_server_get_client_suites Unexecuted instantiation: i31_bitlen.c:br_ssl_server_get_client_suites Unexecuted instantiation: i31_add.c:br_ssl_server_get_client_suites Unexecuted instantiation: i15_sub.c:br_ssl_server_get_client_suites Unexecuted instantiation: i15_rshift.c:br_ssl_server_get_client_suites Unexecuted instantiation: i15_ninv15.c:br_ssl_server_get_client_suites Unexecuted instantiation: i15_montmul.c:br_ssl_server_get_client_suites Unexecuted instantiation: i15_modpow.c:br_ssl_server_get_client_suites Unexecuted instantiation: i15_iszero.c:br_ssl_server_get_client_suites Unexecuted instantiation: i15_fmont.c:br_ssl_server_get_client_suites Unexecuted instantiation: i15_encode.c:br_ssl_server_get_client_suites Unexecuted instantiation: i15_decode.c:br_ssl_server_get_client_suites Unexecuted instantiation: i15_decmod.c:br_ssl_server_get_client_suites Unexecuted instantiation: i15_bitlen.c:br_ssl_server_get_client_suites Unexecuted instantiation: i15_add.c:br_ssl_server_get_client_suites Unexecuted instantiation: i31_tmont.c:br_ssl_server_get_client_suites Unexecuted instantiation: i31_muladd.c:br_ssl_server_get_client_suites Unexecuted instantiation: i15_tmont.c:br_ssl_server_get_client_suites Unexecuted instantiation: i15_muladd.c:br_ssl_server_get_client_suites Unexecuted instantiation: i32_div32.c:br_ssl_server_get_client_suites |
3706 | | |
3707 | | /** |
3708 | | * \brief Get the hash functions and signature algorithms supported by |
3709 | | * the client. |
3710 | | * |
3711 | | * This value is a bit field: |
3712 | | * |
3713 | | * - If RSA (PKCS#1 v1.5) is supported with hash function of ID `x`, |
3714 | | * then bit `x` is set (hash function ID is 0 for the special MD5+SHA-1, |
3715 | | * or 2 to 6 for the SHA family). |
3716 | | * |
3717 | | * - If ECDSA is supported with hash function of ID `x`, then bit `8+x` |
3718 | | * is set. |
3719 | | * |
3720 | | * - Newer algorithms are symbolic 16-bit identifiers that do not |
3721 | | * represent signature algorithm and hash function separately. If |
3722 | | * the TLS-level identifier is `0x0800+x` for a `x` in the 0..15 |
3723 | | * range, then bit `16+x` is set. |
3724 | | * |
3725 | | * "New algorithms" are currently defined only in draft documents, so |
3726 | | * this support is subject to possible change. Right now (early 2017), |
3727 | | * this maps ed25519 (EdDSA on Curve25519) to bit 23, and ed448 (EdDSA |
3728 | | * on Curve448) to bit 24. If the identifiers on the wire change in |
3729 | | * future document, then the decoding mechanism in BearSSL will be |
3730 | | * amended to keep mapping ed25519 and ed448 on bits 23 and 24, |
3731 | | * respectively. Mapping of other new algorithms (e.g. RSA/PSS) is not |
3732 | | * guaranteed yet. |
3733 | | * |
3734 | | * \param cc server context. |
3735 | | * \return the client-supported hash functions and signature algorithms. |
3736 | | */ |
3737 | | static inline uint32_t |
3738 | | br_ssl_server_get_client_hashes(const br_ssl_server_context *cc) |
3739 | 0 | { |
3740 | 0 | return cc->hashes; |
3741 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_server_get_client_hashes(br_ssl_server_context_ const*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_server_get_client_hashes Unexecuted instantiation: chacha20_sse2.c:br_ssl_server_get_client_hashes Unexecuted instantiation: chacha20_ct.c:br_ssl_server_get_client_hashes Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_server_get_client_hashes Unexecuted instantiation: aes_x86ni.c:br_ssl_server_get_client_hashes Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_server_get_client_hashes Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_server_get_client_hashes Unexecuted instantiation: aes_ct_ctr.c:br_ssl_server_get_client_hashes Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_server_get_client_hashes Unexecuted instantiation: aes_ct64.c:br_ssl_server_get_client_hashes Unexecuted instantiation: aes_ct.c:br_ssl_server_get_client_hashes Unexecuted instantiation: aes_common.c:br_ssl_server_get_client_hashes Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_server_get_client_hashes Unexecuted instantiation: prf_md5sha1.c:br_ssl_server_get_client_hashes Unexecuted instantiation: prf.c:br_ssl_server_get_client_hashes Unexecuted instantiation: sysrng.c:br_ssl_server_get_client_hashes Unexecuted instantiation: hmac_drbg.c:br_ssl_server_get_client_hashes Unexecuted instantiation: hmac.c:br_ssl_server_get_client_hashes Unexecuted instantiation: shake.c:br_ssl_server_get_client_hashes Unexecuted instantiation: hkdf.c:br_ssl_server_get_client_hashes Unexecuted instantiation: sha2small.c:br_ssl_server_get_client_hashes Unexecuted instantiation: sha2big.c:br_ssl_server_get_client_hashes Unexecuted instantiation: sha1.c:br_ssl_server_get_client_hashes Unexecuted instantiation: md5sha1.c:br_ssl_server_get_client_hashes Unexecuted instantiation: md5.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ghash_ctmul32.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ec_secp521r1.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ec_secp384r1.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ec_secp256r1.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ec_pubkey.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ec_prime_i31.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ec_prime_i15.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ec_p256_m64.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ec_p256_m62.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ec_p256_m31.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ec_p256_m15.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ec_keygen.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ec_default.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ec_c25519_m64.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ec_c25519_m62.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ec_c25519_m31.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ec_c25519_m15.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ec_c25519_i31.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ec_c25519_i15.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ec_all_m31.c:br_ssl_server_get_client_hashes Unexecuted instantiation: enc64be.c:br_ssl_server_get_client_hashes Unexecuted instantiation: enc32le.c:br_ssl_server_get_client_hashes Unexecuted instantiation: enc32be.c:br_ssl_server_get_client_hashes Unexecuted instantiation: dec64be.c:br_ssl_server_get_client_hashes Unexecuted instantiation: dec32le.c:br_ssl_server_get_client_hashes Unexecuted instantiation: dec32be.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ccopy.c:br_ssl_server_get_client_hashes Unexecuted instantiation: gcm.c:br_ssl_server_get_client_hashes Unexecuted instantiation: ccm.c:br_ssl_server_get_client_hashes Unexecuted instantiation: aes_small_enc.c:br_ssl_server_get_client_hashes Unexecuted instantiation: aes_ct_enc.c:br_ssl_server_get_client_hashes Unexecuted instantiation: aes_ct64_enc.c:br_ssl_server_get_client_hashes Unexecuted instantiation: aes_big_enc.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i31_sub.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i31_rshift.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i31_ninv31.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i31_montmul.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i31_modpow.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i31_iszero.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i31_fmont.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i31_encode.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i31_decode.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i31_decmod.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i31_bitlen.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i31_add.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i15_sub.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i15_rshift.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i15_ninv15.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i15_montmul.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i15_modpow.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i15_iszero.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i15_fmont.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i15_encode.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i15_decode.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i15_decmod.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i15_bitlen.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i15_add.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i31_tmont.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i31_muladd.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i15_tmont.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i15_muladd.c:br_ssl_server_get_client_hashes Unexecuted instantiation: i32_div32.c:br_ssl_server_get_client_hashes |
3742 | | |
3743 | | /** |
3744 | | * \brief Get the elliptic curves supported by the client. |
3745 | | * |
3746 | | * This is a bit field (bit x is set if curve of ID x is supported). |
3747 | | * |
3748 | | * \param cc server context. |
3749 | | * \return the client-supported elliptic curves. |
3750 | | */ |
3751 | | static inline uint32_t |
3752 | | br_ssl_server_get_client_curves(const br_ssl_server_context *cc) |
3753 | 0 | { |
3754 | 0 | return cc->curves; |
3755 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_server_get_client_curves(br_ssl_server_context_ const*) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_server_get_client_curves Unexecuted instantiation: chacha20_sse2.c:br_ssl_server_get_client_curves Unexecuted instantiation: chacha20_ct.c:br_ssl_server_get_client_curves Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_server_get_client_curves Unexecuted instantiation: aes_x86ni.c:br_ssl_server_get_client_curves Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_server_get_client_curves Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_server_get_client_curves Unexecuted instantiation: aes_ct_ctr.c:br_ssl_server_get_client_curves Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_server_get_client_curves Unexecuted instantiation: aes_ct64.c:br_ssl_server_get_client_curves Unexecuted instantiation: aes_ct.c:br_ssl_server_get_client_curves Unexecuted instantiation: aes_common.c:br_ssl_server_get_client_curves Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_server_get_client_curves Unexecuted instantiation: prf_md5sha1.c:br_ssl_server_get_client_curves Unexecuted instantiation: prf.c:br_ssl_server_get_client_curves Unexecuted instantiation: sysrng.c:br_ssl_server_get_client_curves Unexecuted instantiation: hmac_drbg.c:br_ssl_server_get_client_curves Unexecuted instantiation: hmac.c:br_ssl_server_get_client_curves Unexecuted instantiation: shake.c:br_ssl_server_get_client_curves Unexecuted instantiation: hkdf.c:br_ssl_server_get_client_curves Unexecuted instantiation: sha2small.c:br_ssl_server_get_client_curves Unexecuted instantiation: sha2big.c:br_ssl_server_get_client_curves Unexecuted instantiation: sha1.c:br_ssl_server_get_client_curves Unexecuted instantiation: md5sha1.c:br_ssl_server_get_client_curves Unexecuted instantiation: md5.c:br_ssl_server_get_client_curves Unexecuted instantiation: ghash_ctmul32.c:br_ssl_server_get_client_curves Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_server_get_client_curves Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_server_get_client_curves Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_server_get_client_curves Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_server_get_client_curves Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_server_get_client_curves Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_server_get_client_curves Unexecuted instantiation: ec_secp521r1.c:br_ssl_server_get_client_curves Unexecuted instantiation: ec_secp384r1.c:br_ssl_server_get_client_curves Unexecuted instantiation: ec_secp256r1.c:br_ssl_server_get_client_curves Unexecuted instantiation: ec_pubkey.c:br_ssl_server_get_client_curves Unexecuted instantiation: ec_prime_i31.c:br_ssl_server_get_client_curves Unexecuted instantiation: ec_prime_i15.c:br_ssl_server_get_client_curves Unexecuted instantiation: ec_p256_m64.c:br_ssl_server_get_client_curves Unexecuted instantiation: ec_p256_m62.c:br_ssl_server_get_client_curves Unexecuted instantiation: ec_p256_m31.c:br_ssl_server_get_client_curves Unexecuted instantiation: ec_p256_m15.c:br_ssl_server_get_client_curves Unexecuted instantiation: ec_keygen.c:br_ssl_server_get_client_curves Unexecuted instantiation: ec_default.c:br_ssl_server_get_client_curves Unexecuted instantiation: ec_c25519_m64.c:br_ssl_server_get_client_curves Unexecuted instantiation: ec_c25519_m62.c:br_ssl_server_get_client_curves Unexecuted instantiation: ec_c25519_m31.c:br_ssl_server_get_client_curves Unexecuted instantiation: ec_c25519_m15.c:br_ssl_server_get_client_curves Unexecuted instantiation: ec_c25519_i31.c:br_ssl_server_get_client_curves Unexecuted instantiation: ec_c25519_i15.c:br_ssl_server_get_client_curves Unexecuted instantiation: ec_all_m31.c:br_ssl_server_get_client_curves Unexecuted instantiation: enc64be.c:br_ssl_server_get_client_curves Unexecuted instantiation: enc32le.c:br_ssl_server_get_client_curves Unexecuted instantiation: enc32be.c:br_ssl_server_get_client_curves Unexecuted instantiation: dec64be.c:br_ssl_server_get_client_curves Unexecuted instantiation: dec32le.c:br_ssl_server_get_client_curves Unexecuted instantiation: dec32be.c:br_ssl_server_get_client_curves Unexecuted instantiation: ccopy.c:br_ssl_server_get_client_curves Unexecuted instantiation: gcm.c:br_ssl_server_get_client_curves Unexecuted instantiation: ccm.c:br_ssl_server_get_client_curves Unexecuted instantiation: aes_small_enc.c:br_ssl_server_get_client_curves Unexecuted instantiation: aes_ct_enc.c:br_ssl_server_get_client_curves Unexecuted instantiation: aes_ct64_enc.c:br_ssl_server_get_client_curves Unexecuted instantiation: aes_big_enc.c:br_ssl_server_get_client_curves Unexecuted instantiation: i31_sub.c:br_ssl_server_get_client_curves Unexecuted instantiation: i31_rshift.c:br_ssl_server_get_client_curves Unexecuted instantiation: i31_ninv31.c:br_ssl_server_get_client_curves Unexecuted instantiation: i31_montmul.c:br_ssl_server_get_client_curves Unexecuted instantiation: i31_modpow.c:br_ssl_server_get_client_curves Unexecuted instantiation: i31_iszero.c:br_ssl_server_get_client_curves Unexecuted instantiation: i31_fmont.c:br_ssl_server_get_client_curves Unexecuted instantiation: i31_encode.c:br_ssl_server_get_client_curves Unexecuted instantiation: i31_decode.c:br_ssl_server_get_client_curves Unexecuted instantiation: i31_decmod.c:br_ssl_server_get_client_curves Unexecuted instantiation: i31_bitlen.c:br_ssl_server_get_client_curves Unexecuted instantiation: i31_add.c:br_ssl_server_get_client_curves Unexecuted instantiation: i15_sub.c:br_ssl_server_get_client_curves Unexecuted instantiation: i15_rshift.c:br_ssl_server_get_client_curves Unexecuted instantiation: i15_ninv15.c:br_ssl_server_get_client_curves Unexecuted instantiation: i15_montmul.c:br_ssl_server_get_client_curves Unexecuted instantiation: i15_modpow.c:br_ssl_server_get_client_curves Unexecuted instantiation: i15_iszero.c:br_ssl_server_get_client_curves Unexecuted instantiation: i15_fmont.c:br_ssl_server_get_client_curves Unexecuted instantiation: i15_encode.c:br_ssl_server_get_client_curves Unexecuted instantiation: i15_decode.c:br_ssl_server_get_client_curves Unexecuted instantiation: i15_decmod.c:br_ssl_server_get_client_curves Unexecuted instantiation: i15_bitlen.c:br_ssl_server_get_client_curves Unexecuted instantiation: i15_add.c:br_ssl_server_get_client_curves Unexecuted instantiation: i31_tmont.c:br_ssl_server_get_client_curves Unexecuted instantiation: i31_muladd.c:br_ssl_server_get_client_curves Unexecuted instantiation: i15_tmont.c:br_ssl_server_get_client_curves Unexecuted instantiation: i15_muladd.c:br_ssl_server_get_client_curves Unexecuted instantiation: i32_div32.c:br_ssl_server_get_client_curves |
3756 | | |
3757 | | /** |
3758 | | * \brief Clear the complete contents of a SSL server context. |
3759 | | * |
3760 | | * Everything is cleared, including the reference to the configured buffer, |
3761 | | * implementations, cipher suites and state. This is a preparatory step |
3762 | | * to assembling a custom profile. |
3763 | | * |
3764 | | * \param cc server context to clear. |
3765 | | */ |
3766 | | void br_ssl_server_zero(br_ssl_server_context *cc); |
3767 | | |
3768 | | /** |
3769 | | * \brief Set an externally provided policy context. |
3770 | | * |
3771 | | * The policy context's methods are invoked to decide the cipher suite |
3772 | | * and certificate chain, and to perform operations involving the server's |
3773 | | * private key. |
3774 | | * |
3775 | | * \param cc server context. |
3776 | | * \param pctx policy context (pointer to its vtable field). |
3777 | | */ |
3778 | | static inline void |
3779 | | br_ssl_server_set_policy(br_ssl_server_context *cc, |
3780 | | const br_ssl_server_policy_class **pctx) |
3781 | 0 | { |
3782 | 0 | cc->policy_vtable = pctx; |
3783 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_server_set_policy(br_ssl_server_context_*, br_ssl_server_policy_class_ const**) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_server_set_policy Unexecuted instantiation: chacha20_sse2.c:br_ssl_server_set_policy Unexecuted instantiation: chacha20_ct.c:br_ssl_server_set_policy Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_server_set_policy Unexecuted instantiation: aes_x86ni.c:br_ssl_server_set_policy Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_server_set_policy Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_server_set_policy Unexecuted instantiation: aes_ct_ctr.c:br_ssl_server_set_policy Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_server_set_policy Unexecuted instantiation: aes_ct64.c:br_ssl_server_set_policy Unexecuted instantiation: aes_ct.c:br_ssl_server_set_policy Unexecuted instantiation: aes_common.c:br_ssl_server_set_policy Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_server_set_policy Unexecuted instantiation: prf_md5sha1.c:br_ssl_server_set_policy Unexecuted instantiation: prf.c:br_ssl_server_set_policy Unexecuted instantiation: sysrng.c:br_ssl_server_set_policy Unexecuted instantiation: hmac_drbg.c:br_ssl_server_set_policy Unexecuted instantiation: hmac.c:br_ssl_server_set_policy Unexecuted instantiation: shake.c:br_ssl_server_set_policy Unexecuted instantiation: hkdf.c:br_ssl_server_set_policy Unexecuted instantiation: sha2small.c:br_ssl_server_set_policy Unexecuted instantiation: sha2big.c:br_ssl_server_set_policy Unexecuted instantiation: sha1.c:br_ssl_server_set_policy Unexecuted instantiation: md5sha1.c:br_ssl_server_set_policy Unexecuted instantiation: md5.c:br_ssl_server_set_policy Unexecuted instantiation: ghash_ctmul32.c:br_ssl_server_set_policy Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_server_set_policy Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_server_set_policy Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_server_set_policy Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_server_set_policy Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_server_set_policy Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_server_set_policy Unexecuted instantiation: ec_secp521r1.c:br_ssl_server_set_policy Unexecuted instantiation: ec_secp384r1.c:br_ssl_server_set_policy Unexecuted instantiation: ec_secp256r1.c:br_ssl_server_set_policy Unexecuted instantiation: ec_pubkey.c:br_ssl_server_set_policy Unexecuted instantiation: ec_prime_i31.c:br_ssl_server_set_policy Unexecuted instantiation: ec_prime_i15.c:br_ssl_server_set_policy Unexecuted instantiation: ec_p256_m64.c:br_ssl_server_set_policy Unexecuted instantiation: ec_p256_m62.c:br_ssl_server_set_policy Unexecuted instantiation: ec_p256_m31.c:br_ssl_server_set_policy Unexecuted instantiation: ec_p256_m15.c:br_ssl_server_set_policy Unexecuted instantiation: ec_keygen.c:br_ssl_server_set_policy Unexecuted instantiation: ec_default.c:br_ssl_server_set_policy Unexecuted instantiation: ec_c25519_m64.c:br_ssl_server_set_policy Unexecuted instantiation: ec_c25519_m62.c:br_ssl_server_set_policy Unexecuted instantiation: ec_c25519_m31.c:br_ssl_server_set_policy Unexecuted instantiation: ec_c25519_m15.c:br_ssl_server_set_policy Unexecuted instantiation: ec_c25519_i31.c:br_ssl_server_set_policy Unexecuted instantiation: ec_c25519_i15.c:br_ssl_server_set_policy Unexecuted instantiation: ec_all_m31.c:br_ssl_server_set_policy Unexecuted instantiation: enc64be.c:br_ssl_server_set_policy Unexecuted instantiation: enc32le.c:br_ssl_server_set_policy Unexecuted instantiation: enc32be.c:br_ssl_server_set_policy Unexecuted instantiation: dec64be.c:br_ssl_server_set_policy Unexecuted instantiation: dec32le.c:br_ssl_server_set_policy Unexecuted instantiation: dec32be.c:br_ssl_server_set_policy Unexecuted instantiation: ccopy.c:br_ssl_server_set_policy Unexecuted instantiation: gcm.c:br_ssl_server_set_policy Unexecuted instantiation: ccm.c:br_ssl_server_set_policy Unexecuted instantiation: aes_small_enc.c:br_ssl_server_set_policy Unexecuted instantiation: aes_ct_enc.c:br_ssl_server_set_policy Unexecuted instantiation: aes_ct64_enc.c:br_ssl_server_set_policy Unexecuted instantiation: aes_big_enc.c:br_ssl_server_set_policy Unexecuted instantiation: i31_sub.c:br_ssl_server_set_policy Unexecuted instantiation: i31_rshift.c:br_ssl_server_set_policy Unexecuted instantiation: i31_ninv31.c:br_ssl_server_set_policy Unexecuted instantiation: i31_montmul.c:br_ssl_server_set_policy Unexecuted instantiation: i31_modpow.c:br_ssl_server_set_policy Unexecuted instantiation: i31_iszero.c:br_ssl_server_set_policy Unexecuted instantiation: i31_fmont.c:br_ssl_server_set_policy Unexecuted instantiation: i31_encode.c:br_ssl_server_set_policy Unexecuted instantiation: i31_decode.c:br_ssl_server_set_policy Unexecuted instantiation: i31_decmod.c:br_ssl_server_set_policy Unexecuted instantiation: i31_bitlen.c:br_ssl_server_set_policy Unexecuted instantiation: i31_add.c:br_ssl_server_set_policy Unexecuted instantiation: i15_sub.c:br_ssl_server_set_policy Unexecuted instantiation: i15_rshift.c:br_ssl_server_set_policy Unexecuted instantiation: i15_ninv15.c:br_ssl_server_set_policy Unexecuted instantiation: i15_montmul.c:br_ssl_server_set_policy Unexecuted instantiation: i15_modpow.c:br_ssl_server_set_policy Unexecuted instantiation: i15_iszero.c:br_ssl_server_set_policy Unexecuted instantiation: i15_fmont.c:br_ssl_server_set_policy Unexecuted instantiation: i15_encode.c:br_ssl_server_set_policy Unexecuted instantiation: i15_decode.c:br_ssl_server_set_policy Unexecuted instantiation: i15_decmod.c:br_ssl_server_set_policy Unexecuted instantiation: i15_bitlen.c:br_ssl_server_set_policy Unexecuted instantiation: i15_add.c:br_ssl_server_set_policy Unexecuted instantiation: i31_tmont.c:br_ssl_server_set_policy Unexecuted instantiation: i31_muladd.c:br_ssl_server_set_policy Unexecuted instantiation: i15_tmont.c:br_ssl_server_set_policy Unexecuted instantiation: i15_muladd.c:br_ssl_server_set_policy Unexecuted instantiation: i32_div32.c:br_ssl_server_set_policy |
3784 | | |
3785 | | /** |
3786 | | * \brief Set the server certificate chain and key (single RSA case). |
3787 | | * |
3788 | | * This function uses a policy context included in the server context. |
3789 | | * It configures use of a single server certificate chain with a RSA |
3790 | | * private key. The `allowed_usages` is a combination of usages, namely |
3791 | | * `BR_KEYTYPE_KEYX` and/or `BR_KEYTYPE_SIGN`; this enables or disables |
3792 | | * the corresponding cipher suites (i.e. `TLS_RSA_*` use the RSA key for |
3793 | | * key exchange, while `TLS_ECDHE_RSA_*` use the RSA key for signatures). |
3794 | | * |
3795 | | * \param cc server context. |
3796 | | * \param chain server certificate chain to send to the client. |
3797 | | * \param chain_len chain length (number of certificates). |
3798 | | * \param sk server private key (RSA). |
3799 | | * \param allowed_usages allowed private key usages. |
3800 | | * \param irsacore RSA core implementation. |
3801 | | * \param irsasign RSA signature implementation (PKCS#1 v1.5). |
3802 | | */ |
3803 | | void br_ssl_server_set_single_rsa(br_ssl_server_context *cc, |
3804 | | const br_x509_certificate *chain, size_t chain_len, |
3805 | | const br_rsa_private_key *sk, unsigned allowed_usages, |
3806 | | br_rsa_private irsacore, br_rsa_pkcs1_sign irsasign); |
3807 | | |
3808 | | /** |
3809 | | * \brief Set the server certificate chain and key (single EC case). |
3810 | | * |
3811 | | * This function uses a policy context included in the server context. |
3812 | | * It configures use of a single server certificate chain with an EC |
3813 | | * private key. The `allowed_usages` is a combination of usages, namely |
3814 | | * `BR_KEYTYPE_KEYX` and/or `BR_KEYTYPE_SIGN`; this enables or disables |
3815 | | * the corresponding cipher suites (i.e. `TLS_ECDH_*` use the EC key for |
3816 | | * key exchange, while `TLS_ECDHE_ECDSA_*` use the EC key for signatures). |
3817 | | * |
3818 | | * In order to support `TLS_ECDH_*` cipher suites (non-ephemeral ECDH), |
3819 | | * the algorithm type of the key used by the issuing CA to sign the |
3820 | | * server's certificate must be provided, as `cert_issuer_key_type` |
3821 | | * parameter (this value is either `BR_KEYTYPE_RSA` or `BR_KEYTYPE_EC`). |
3822 | | * |
3823 | | * \param cc server context. |
3824 | | * \param chain server certificate chain to send. |
3825 | | * \param chain_len chain length (number of certificates). |
3826 | | * \param sk server private key (EC). |
3827 | | * \param allowed_usages allowed private key usages. |
3828 | | * \param cert_issuer_key_type issuing CA's key type. |
3829 | | * \param iec EC core implementation. |
3830 | | * \param iecdsa ECDSA signature implementation ("asn1" format). |
3831 | | */ |
3832 | | void br_ssl_server_set_single_ec(br_ssl_server_context *cc, |
3833 | | const br_x509_certificate *chain, size_t chain_len, |
3834 | | const br_ec_private_key *sk, unsigned allowed_usages, |
3835 | | unsigned cert_issuer_key_type, |
3836 | | const br_ec_impl *iec, br_ecdsa_sign iecdsa); |
3837 | | |
3838 | | /** |
3839 | | * \brief Activate client certificate authentication. |
3840 | | * |
3841 | | * The trust anchor encoded X.500 names (DN) to send to the client are |
3842 | | * provided. A client certificate will be requested and validated through |
3843 | | * the X.509 validator configured in the SSL engine. If `num` is 0, then |
3844 | | * client certificate authentication is disabled. |
3845 | | * |
3846 | | * If the client does not send a certificate, or on validation failure, |
3847 | | * the handshake aborts. Unauthenticated clients can be tolerated by |
3848 | | * setting the `BR_OPT_TOLERATE_NO_CLIENT_AUTH` flag. |
3849 | | * |
3850 | | * The provided array is linked in, not copied, so that pointer must |
3851 | | * remain valid as long as anchor names may be used. |
3852 | | * |
3853 | | * \param cc server context. |
3854 | | * \param ta_names encoded trust anchor names. |
3855 | | * \param num number of encoded trust anchor names. |
3856 | | */ |
3857 | | static inline void |
3858 | | br_ssl_server_set_trust_anchor_names(br_ssl_server_context *cc, |
3859 | | const br_x500_name *ta_names, size_t num) |
3860 | 0 | { |
3861 | 0 | cc->ta_names = ta_names; |
3862 | 0 | cc->tas = NULL; |
3863 | 0 | cc->num_tas = num; |
3864 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_server_set_trust_anchor_names(br_ssl_server_context_*, br_x500_name const*, unsigned long) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: chacha20_sse2.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: chacha20_ct.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: aes_x86ni.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: aes_ct_ctr.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: aes_ct64.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: aes_ct.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: aes_common.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: prf_md5sha1.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: prf.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: sysrng.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: hmac_drbg.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: hmac.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: shake.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: hkdf.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: sha2small.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: sha2big.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: sha1.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: md5sha1.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: md5.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ghash_ctmul32.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ec_secp521r1.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ec_secp384r1.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ec_secp256r1.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ec_pubkey.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ec_prime_i31.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ec_prime_i15.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ec_p256_m64.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ec_p256_m62.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ec_p256_m31.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ec_p256_m15.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ec_keygen.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ec_default.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ec_c25519_m64.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ec_c25519_m62.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ec_c25519_m31.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ec_c25519_m15.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ec_c25519_i31.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ec_c25519_i15.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ec_all_m31.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: enc64be.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: enc32le.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: enc32be.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: dec64be.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: dec32le.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: dec32be.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ccopy.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: gcm.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: ccm.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: aes_small_enc.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: aes_ct_enc.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: aes_ct64_enc.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: aes_big_enc.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i31_sub.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i31_rshift.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i31_ninv31.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i31_montmul.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i31_modpow.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i31_iszero.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i31_fmont.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i31_encode.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i31_decode.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i31_decmod.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i31_bitlen.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i31_add.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i15_sub.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i15_rshift.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i15_ninv15.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i15_montmul.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i15_modpow.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i15_iszero.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i15_fmont.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i15_encode.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i15_decode.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i15_decmod.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i15_bitlen.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i15_add.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i31_tmont.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i31_muladd.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i15_tmont.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i15_muladd.c:br_ssl_server_set_trust_anchor_names Unexecuted instantiation: i32_div32.c:br_ssl_server_set_trust_anchor_names |
3865 | | |
3866 | | /** |
3867 | | * \brief Activate client certificate authentication. |
3868 | | * |
3869 | | * This is a variant for `br_ssl_server_set_trust_anchor_names()`: the |
3870 | | * trust anchor names are provided not as an array of stand-alone names |
3871 | | * (`br_x500_name` structures), but as an array of trust anchors |
3872 | | * (`br_x509_trust_anchor` structures). The server engine itself will |
3873 | | * only use the `dn` field of each trust anchor. This is meant to allow |
3874 | | * defining a single array of trust anchors, to be used here and in the |
3875 | | * X.509 validation engine itself. |
3876 | | * |
3877 | | * The provided array is linked in, not copied, so that pointer must |
3878 | | * remain valid as long as anchor names may be used. |
3879 | | * |
3880 | | * \param cc server context. |
3881 | | * \param tas trust anchors (only names are used). |
3882 | | * \param num number of trust anchors. |
3883 | | */ |
3884 | | static inline void |
3885 | | br_ssl_server_set_trust_anchor_names_alt(br_ssl_server_context *cc, |
3886 | | const br_x509_trust_anchor *tas, size_t num) |
3887 | 0 | { |
3888 | 0 | cc->ta_names = NULL; |
3889 | 0 | cc->tas = tas; |
3890 | 0 | cc->num_tas = num; |
3891 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_server_set_trust_anchor_names_alt(br_ssl_server_context_*, br_x509_trust_anchor const*, unsigned long) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: chacha20_sse2.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: chacha20_ct.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: aes_x86ni.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: aes_ct_ctr.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: aes_ct64.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: aes_ct.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: aes_common.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: prf_md5sha1.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: prf.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: sysrng.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: hmac_drbg.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: hmac.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: shake.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: hkdf.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: sha2small.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: sha2big.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: sha1.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: md5sha1.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: md5.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ghash_ctmul32.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ec_secp521r1.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ec_secp384r1.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ec_secp256r1.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ec_pubkey.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ec_prime_i31.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ec_prime_i15.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ec_p256_m64.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ec_p256_m62.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ec_p256_m31.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ec_p256_m15.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ec_keygen.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ec_default.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ec_c25519_m64.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ec_c25519_m62.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ec_c25519_m31.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ec_c25519_m15.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ec_c25519_i31.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ec_c25519_i15.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ec_all_m31.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: enc64be.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: enc32le.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: enc32be.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: dec64be.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: dec32le.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: dec32be.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ccopy.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: gcm.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: ccm.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: aes_small_enc.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: aes_ct_enc.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: aes_ct64_enc.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: aes_big_enc.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i31_sub.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i31_rshift.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i31_ninv31.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i31_montmul.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i31_modpow.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i31_iszero.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i31_fmont.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i31_encode.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i31_decode.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i31_decmod.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i31_bitlen.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i31_add.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i15_sub.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i15_rshift.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i15_ninv15.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i15_montmul.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i15_modpow.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i15_iszero.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i15_fmont.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i15_encode.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i15_decode.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i15_decmod.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i15_bitlen.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i15_add.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i31_tmont.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i31_muladd.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i15_tmont.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i15_muladd.c:br_ssl_server_set_trust_anchor_names_alt Unexecuted instantiation: i32_div32.c:br_ssl_server_set_trust_anchor_names_alt |
3892 | | |
3893 | | /** |
3894 | | * \brief Configure the cache for session parameters. |
3895 | | * |
3896 | | * The cache context is provided as a pointer to its first field (vtable |
3897 | | * pointer). |
3898 | | * |
3899 | | * \param cc server context. |
3900 | | * \param vtable session cache context. |
3901 | | */ |
3902 | | static inline void |
3903 | | br_ssl_server_set_cache(br_ssl_server_context *cc, |
3904 | | const br_ssl_session_cache_class **vtable) |
3905 | 0 | { |
3906 | 0 | cc->cache_vtable = vtable; |
3907 | 0 | } Unexecuted instantiation: module.cpp:br_ssl_server_set_cache(br_ssl_server_context_*, br_ssl_session_cache_class_ const**) Unexecuted instantiation: poly1305_ctmul.c:br_ssl_server_set_cache Unexecuted instantiation: chacha20_sse2.c:br_ssl_server_set_cache Unexecuted instantiation: chacha20_ct.c:br_ssl_server_set_cache Unexecuted instantiation: aes_x86ni_ctrcbc.c:br_ssl_server_set_cache Unexecuted instantiation: aes_x86ni.c:br_ssl_server_set_cache Unexecuted instantiation: aes_small_ctrcbc.c:br_ssl_server_set_cache Unexecuted instantiation: aes_ct_ctrcbc.c:br_ssl_server_set_cache Unexecuted instantiation: aes_ct_ctr.c:br_ssl_server_set_cache Unexecuted instantiation: aes_ct64_ctrcbc.c:br_ssl_server_set_cache Unexecuted instantiation: aes_ct64.c:br_ssl_server_set_cache Unexecuted instantiation: aes_ct.c:br_ssl_server_set_cache Unexecuted instantiation: aes_common.c:br_ssl_server_set_cache Unexecuted instantiation: aes_big_ctrcbc.c:br_ssl_server_set_cache Unexecuted instantiation: prf_md5sha1.c:br_ssl_server_set_cache Unexecuted instantiation: prf.c:br_ssl_server_set_cache Unexecuted instantiation: sysrng.c:br_ssl_server_set_cache Unexecuted instantiation: hmac_drbg.c:br_ssl_server_set_cache Unexecuted instantiation: hmac.c:br_ssl_server_set_cache Unexecuted instantiation: shake.c:br_ssl_server_set_cache Unexecuted instantiation: hkdf.c:br_ssl_server_set_cache Unexecuted instantiation: sha2small.c:br_ssl_server_set_cache Unexecuted instantiation: sha2big.c:br_ssl_server_set_cache Unexecuted instantiation: sha1.c:br_ssl_server_set_cache Unexecuted instantiation: md5sha1.c:br_ssl_server_set_cache Unexecuted instantiation: md5.c:br_ssl_server_set_cache Unexecuted instantiation: ghash_ctmul32.c:br_ssl_server_set_cache Unexecuted instantiation: ecdsa_i31_vrfy_raw.c:br_ssl_server_set_cache Unexecuted instantiation: ecdsa_i31_sign_raw.c:br_ssl_server_set_cache Unexecuted instantiation: ecdsa_i31_bits.c:br_ssl_server_set_cache Unexecuted instantiation: ecdsa_i15_vrfy_raw.c:br_ssl_server_set_cache Unexecuted instantiation: ecdsa_i15_sign_raw.c:br_ssl_server_set_cache Unexecuted instantiation: ecdsa_i15_bits.c:br_ssl_server_set_cache Unexecuted instantiation: ec_secp521r1.c:br_ssl_server_set_cache Unexecuted instantiation: ec_secp384r1.c:br_ssl_server_set_cache Unexecuted instantiation: ec_secp256r1.c:br_ssl_server_set_cache Unexecuted instantiation: ec_pubkey.c:br_ssl_server_set_cache Unexecuted instantiation: ec_prime_i31.c:br_ssl_server_set_cache Unexecuted instantiation: ec_prime_i15.c:br_ssl_server_set_cache Unexecuted instantiation: ec_p256_m64.c:br_ssl_server_set_cache Unexecuted instantiation: ec_p256_m62.c:br_ssl_server_set_cache Unexecuted instantiation: ec_p256_m31.c:br_ssl_server_set_cache Unexecuted instantiation: ec_p256_m15.c:br_ssl_server_set_cache Unexecuted instantiation: ec_keygen.c:br_ssl_server_set_cache Unexecuted instantiation: ec_default.c:br_ssl_server_set_cache Unexecuted instantiation: ec_c25519_m64.c:br_ssl_server_set_cache Unexecuted instantiation: ec_c25519_m62.c:br_ssl_server_set_cache Unexecuted instantiation: ec_c25519_m31.c:br_ssl_server_set_cache Unexecuted instantiation: ec_c25519_m15.c:br_ssl_server_set_cache Unexecuted instantiation: ec_c25519_i31.c:br_ssl_server_set_cache Unexecuted instantiation: ec_c25519_i15.c:br_ssl_server_set_cache Unexecuted instantiation: ec_all_m31.c:br_ssl_server_set_cache Unexecuted instantiation: enc64be.c:br_ssl_server_set_cache Unexecuted instantiation: enc32le.c:br_ssl_server_set_cache Unexecuted instantiation: enc32be.c:br_ssl_server_set_cache Unexecuted instantiation: dec64be.c:br_ssl_server_set_cache Unexecuted instantiation: dec32le.c:br_ssl_server_set_cache Unexecuted instantiation: dec32be.c:br_ssl_server_set_cache Unexecuted instantiation: ccopy.c:br_ssl_server_set_cache Unexecuted instantiation: gcm.c:br_ssl_server_set_cache Unexecuted instantiation: ccm.c:br_ssl_server_set_cache Unexecuted instantiation: aes_small_enc.c:br_ssl_server_set_cache Unexecuted instantiation: aes_ct_enc.c:br_ssl_server_set_cache Unexecuted instantiation: aes_ct64_enc.c:br_ssl_server_set_cache Unexecuted instantiation: aes_big_enc.c:br_ssl_server_set_cache Unexecuted instantiation: i31_sub.c:br_ssl_server_set_cache Unexecuted instantiation: i31_rshift.c:br_ssl_server_set_cache Unexecuted instantiation: i31_ninv31.c:br_ssl_server_set_cache Unexecuted instantiation: i31_montmul.c:br_ssl_server_set_cache Unexecuted instantiation: i31_modpow.c:br_ssl_server_set_cache Unexecuted instantiation: i31_iszero.c:br_ssl_server_set_cache Unexecuted instantiation: i31_fmont.c:br_ssl_server_set_cache Unexecuted instantiation: i31_encode.c:br_ssl_server_set_cache Unexecuted instantiation: i31_decode.c:br_ssl_server_set_cache Unexecuted instantiation: i31_decmod.c:br_ssl_server_set_cache Unexecuted instantiation: i31_bitlen.c:br_ssl_server_set_cache Unexecuted instantiation: i31_add.c:br_ssl_server_set_cache Unexecuted instantiation: i15_sub.c:br_ssl_server_set_cache Unexecuted instantiation: i15_rshift.c:br_ssl_server_set_cache Unexecuted instantiation: i15_ninv15.c:br_ssl_server_set_cache Unexecuted instantiation: i15_montmul.c:br_ssl_server_set_cache Unexecuted instantiation: i15_modpow.c:br_ssl_server_set_cache Unexecuted instantiation: i15_iszero.c:br_ssl_server_set_cache Unexecuted instantiation: i15_fmont.c:br_ssl_server_set_cache Unexecuted instantiation: i15_encode.c:br_ssl_server_set_cache Unexecuted instantiation: i15_decode.c:br_ssl_server_set_cache Unexecuted instantiation: i15_decmod.c:br_ssl_server_set_cache Unexecuted instantiation: i15_bitlen.c:br_ssl_server_set_cache Unexecuted instantiation: i15_add.c:br_ssl_server_set_cache Unexecuted instantiation: i31_tmont.c:br_ssl_server_set_cache Unexecuted instantiation: i31_muladd.c:br_ssl_server_set_cache Unexecuted instantiation: i15_tmont.c:br_ssl_server_set_cache Unexecuted instantiation: i15_muladd.c:br_ssl_server_set_cache Unexecuted instantiation: i32_div32.c:br_ssl_server_set_cache |
3908 | | |
3909 | | /** |
3910 | | * \brief Prepare or reset a server context for handling an incoming client. |
3911 | | * |
3912 | | * \param cc server context. |
3913 | | * \return 1 on success, 0 on error. |
3914 | | */ |
3915 | | int br_ssl_server_reset(br_ssl_server_context *cc); |
3916 | | |
3917 | | /* ===================================================================== */ |
3918 | | |
3919 | | /* |
3920 | | * Context for the simplified I/O context. The transport medium is accessed |
3921 | | * through the low_read() and low_write() callback functions, each with |
3922 | | * its own opaque context pointer. |
3923 | | * |
3924 | | * low_read() read some bytes, at most 'len' bytes, into data[]. The |
3925 | | * returned value is the number of read bytes, or -1 on error. |
3926 | | * The 'len' parameter is guaranteed never to exceed 20000, |
3927 | | * so the length always fits in an 'int' on all platforms. |
3928 | | * |
3929 | | * low_write() write up to 'len' bytes, to be read from data[]. The |
3930 | | * returned value is the number of written bytes, or -1 on |
3931 | | * error. The 'len' parameter is guaranteed never to exceed |
3932 | | * 20000, so the length always fits in an 'int' on all |
3933 | | * parameters. |
3934 | | * |
3935 | | * A socket closure (if the transport medium is a socket) should be reported |
3936 | | * as an error (-1). The callbacks shall endeavour to block until at least |
3937 | | * one byte can be read or written; a callback returning 0 at times is |
3938 | | * acceptable, but this normally leads to the callback being immediately |
3939 | | * called again, so the callback should at least always try to block for |
3940 | | * some time if no I/O can take place. |
3941 | | * |
3942 | | * The SSL engine naturally applies some buffering, so the callbacks need |
3943 | | * not apply buffers of their own. |
3944 | | */ |
3945 | | /** |
3946 | | * \brief Context structure for the simplified SSL I/O wrapper. |
3947 | | * |
3948 | | * This structure is initialised with `br_sslio_init()`. Its contents |
3949 | | * are opaque and shall not be accessed directly. |
3950 | | */ |
3951 | | typedef struct { |
3952 | | #ifndef BR_DOXYGEN_IGNORE |
3953 | | br_ssl_engine_context *engine; |
3954 | | int (*low_read)(void *read_context, |
3955 | | unsigned char *data, size_t len); |
3956 | | void *read_context; |
3957 | | int (*low_write)(void *write_context, |
3958 | | const unsigned char *data, size_t len); |
3959 | | void *write_context; |
3960 | | #endif |
3961 | | } br_sslio_context; |
3962 | | |
3963 | | /** |
3964 | | * \brief Initialise a simplified I/O wrapper context. |
3965 | | * |
3966 | | * The simplified I/O wrapper offers a simpler read/write API for a SSL |
3967 | | * engine (client or server), using the provided callback functions for |
3968 | | * reading data from, or writing data to, the transport medium. |
3969 | | * |
3970 | | * The callback functions have the following semantics: |
3971 | | * |
3972 | | * - Each callback receives an opaque context value (of type `void *`) |
3973 | | * that the callback may use arbitrarily (or possibly ignore). |
3974 | | * |
3975 | | * - `low_read()` reads at least one byte, at most `len` bytes, from |
3976 | | * the transport medium. Read bytes shall be written in `data`. |
3977 | | * |
3978 | | * - `low_write()` writes at least one byte, at most `len` bytes, unto |
3979 | | * the transport medium. The bytes to write are read from `data`. |
3980 | | * |
3981 | | * - The `len` parameter is never zero, and is always lower than 20000. |
3982 | | * |
3983 | | * - The number of processed bytes (read or written) is returned. Since |
3984 | | * that number is less than 20000, it always fits on an `int`. |
3985 | | * |
3986 | | * - On error, the callbacks return -1. Reaching end-of-stream is an |
3987 | | * error. Errors are permanent: the SSL connection is terminated. |
3988 | | * |
3989 | | * - Callbacks SHOULD NOT return 0. This is tolerated, as long as |
3990 | | * callbacks endeavour to block for some non-negligible amount of |
3991 | | * time until at least one byte can be sent or received (if a |
3992 | | * callback returns 0, then the wrapper invokes it again |
3993 | | * immediately). |
3994 | | * |
3995 | | * - Callbacks MAY return as soon as at least one byte is processed; |
3996 | | * they MAY also insist on reading or writing _all_ requested bytes. |
3997 | | * Since SSL is a self-terminated protocol (each record has a length |
3998 | | * header), this does not change semantics. |
3999 | | * |
4000 | | * - Callbacks need not apply any buffering (for performance) since SSL |
4001 | | * itself uses buffers. |
4002 | | * |
4003 | | * \param ctx wrapper context to initialise. |
4004 | | * \param engine SSL engine to wrap. |
4005 | | * \param low_read callback for reading data from the transport. |
4006 | | * \param read_context context pointer for `low_read()`. |
4007 | | * \param low_write callback for writing data on the transport. |
4008 | | * \param write_context context pointer for `low_write()`. |
4009 | | */ |
4010 | | void br_sslio_init(br_sslio_context *ctx, |
4011 | | br_ssl_engine_context *engine, |
4012 | | int (*low_read)(void *read_context, |
4013 | | unsigned char *data, size_t len), |
4014 | | void *read_context, |
4015 | | int (*low_write)(void *write_context, |
4016 | | const unsigned char *data, size_t len), |
4017 | | void *write_context); |
4018 | | |
4019 | | /** |
4020 | | * \brief Read some application data from a SSL connection. |
4021 | | * |
4022 | | * If `len` is zero, then this function returns 0 immediately. In |
4023 | | * all other cases, it never returns 0. |
4024 | | * |
4025 | | * This call returns only when at least one byte has been obtained. |
4026 | | * Returned value is the number of bytes read, or -1 on error. The |
4027 | | * number of bytes always fits on an 'int' (data from a single SSL/TLS |
4028 | | * record is returned). |
4029 | | * |
4030 | | * On error or SSL closure, this function returns -1. The caller should |
4031 | | * inspect the error status on the SSL engine to distinguish between |
4032 | | * normal closure and error. |
4033 | | * |
4034 | | * \param cc SSL wrapper context. |
4035 | | * \param dst destination buffer for application data. |
4036 | | * \param len maximum number of bytes to obtain. |
4037 | | * \return number of bytes obtained, or -1 on error. |
4038 | | */ |
4039 | | int br_sslio_read(br_sslio_context *cc, void *dst, size_t len); |
4040 | | |
4041 | | /** |
4042 | | * \brief Read application data from a SSL connection. |
4043 | | * |
4044 | | * This calls returns only when _all_ requested `len` bytes are read, |
4045 | | * or an error is reached. Returned value is 0 on success, -1 on error. |
4046 | | * A normal (verified) SSL closure before that many bytes are obtained |
4047 | | * is reported as an error by this function. |
4048 | | * |
4049 | | * \param cc SSL wrapper context. |
4050 | | * \param dst destination buffer for application data. |
4051 | | * \param len number of bytes to obtain. |
4052 | | * \return 0 on success, or -1 on error. |
4053 | | */ |
4054 | | int br_sslio_read_all(br_sslio_context *cc, void *dst, size_t len); |
4055 | | |
4056 | | /** |
4057 | | * \brief Write some application data unto a SSL connection. |
4058 | | * |
4059 | | * If `len` is zero, then this function returns 0 immediately. In |
4060 | | * all other cases, it never returns 0. |
4061 | | * |
4062 | | * This call returns only when at least one byte has been written. |
4063 | | * Returned value is the number of bytes written, or -1 on error. The |
4064 | | * number of bytes always fits on an 'int' (less than 20000). |
4065 | | * |
4066 | | * On error or SSL closure, this function returns -1. The caller should |
4067 | | * inspect the error status on the SSL engine to distinguish between |
4068 | | * normal closure and error. |
4069 | | * |
4070 | | * **Important:** SSL is buffered; a "written" byte is a byte that was |
4071 | | * injected into the wrapped SSL engine, but this does not necessarily mean |
4072 | | * that it has been scheduled for sending. Use `br_sslio_flush()` to |
4073 | | * ensure that all pending data has been sent to the transport medium. |
4074 | | * |
4075 | | * \param cc SSL wrapper context. |
4076 | | * \param src source buffer for application data. |
4077 | | * \param len maximum number of bytes to write. |
4078 | | * \return number of bytes written, or -1 on error. |
4079 | | */ |
4080 | | int br_sslio_write(br_sslio_context *cc, const void *src, size_t len); |
4081 | | |
4082 | | /** |
4083 | | * \brief Write application data unto a SSL connection. |
4084 | | * |
4085 | | * This calls returns only when _all_ requested `len` bytes have been |
4086 | | * written, or an error is reached. Returned value is 0 on success, -1 |
4087 | | * on error. A normal (verified) SSL closure before that many bytes are |
4088 | | * written is reported as an error by this function. |
4089 | | * |
4090 | | * **Important:** SSL is buffered; a "written" byte is a byte that was |
4091 | | * injected into the wrapped SSL engine, but this does not necessarily mean |
4092 | | * that it has been scheduled for sending. Use `br_sslio_flush()` to |
4093 | | * ensure that all pending data has been sent to the transport medium. |
4094 | | * |
4095 | | * \param cc SSL wrapper context. |
4096 | | * \param src source buffer for application data. |
4097 | | * \param len number of bytes to write. |
4098 | | * \return 0 on success, or -1 on error. |
4099 | | */ |
4100 | | int br_sslio_write_all(br_sslio_context *cc, const void *src, size_t len); |
4101 | | |
4102 | | /** |
4103 | | * \brief Flush pending data. |
4104 | | * |
4105 | | * This call makes sure that any buffered application data in the |
4106 | | * provided context (including the wrapped SSL engine) has been sent |
4107 | | * to the transport medium (i.e. accepted by the `low_write()` callback |
4108 | | * method). If there is no such pending data, then this function does |
4109 | | * nothing (and returns a success, i.e. 0). |
4110 | | * |
4111 | | * If the underlying transport medium has its own buffers, then it is |
4112 | | * up to the caller to ensure the corresponding flushing. |
4113 | | * |
4114 | | * Returned value is 0 on success, -1 on error. |
4115 | | * |
4116 | | * \param cc SSL wrapper context. |
4117 | | * \return 0 on success, or -1 on error. |
4118 | | */ |
4119 | | int br_sslio_flush(br_sslio_context *cc); |
4120 | | |
4121 | | /** |
4122 | | * \brief Close the SSL connection. |
4123 | | * |
4124 | | * This call runs the SSL closure protocol (sending a `close_notify`, |
4125 | | * receiving the response `close_notify`). When it returns, the SSL |
4126 | | * connection is finished. It is still up to the caller to manage the |
4127 | | * possible transport-level termination, if applicable (alternatively, |
4128 | | * the underlying transport stream may be reused for non-SSL messages). |
4129 | | * |
4130 | | * Returned value is 0 on success, -1 on error. A failure by the peer |
4131 | | * to process the complete closure protocol (i.e. sending back the |
4132 | | * `close_notify`) is an error. |
4133 | | * |
4134 | | * \param cc SSL wrapper context. |
4135 | | * \return 0 on success, or -1 on error. |
4136 | | */ |
4137 | | int br_sslio_close(br_sslio_context *cc); |
4138 | | |
4139 | | /* ===================================================================== */ |
4140 | | |
4141 | | /* |
4142 | | * Symbolic constants for cipher suites. |
4143 | | */ |
4144 | | |
4145 | | /* From RFC 5246 */ |
4146 | | #define BR_TLS_NULL_WITH_NULL_NULL 0x0000 |
4147 | | #define BR_TLS_RSA_WITH_NULL_MD5 0x0001 |
4148 | | #define BR_TLS_RSA_WITH_NULL_SHA 0x0002 |
4149 | | #define BR_TLS_RSA_WITH_NULL_SHA256 0x003B |
4150 | | #define BR_TLS_RSA_WITH_RC4_128_MD5 0x0004 |
4151 | | #define BR_TLS_RSA_WITH_RC4_128_SHA 0x0005 |
4152 | | #define BR_TLS_RSA_WITH_3DES_EDE_CBC_SHA 0x000A |
4153 | | #define BR_TLS_RSA_WITH_AES_128_CBC_SHA 0x002F |
4154 | | #define BR_TLS_RSA_WITH_AES_256_CBC_SHA 0x0035 |
4155 | | #define BR_TLS_RSA_WITH_AES_128_CBC_SHA256 0x003C |
4156 | | #define BR_TLS_RSA_WITH_AES_256_CBC_SHA256 0x003D |
4157 | | #define BR_TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA 0x000D |
4158 | | #define BR_TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA 0x0010 |
4159 | | #define BR_TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA 0x0013 |
4160 | | #define BR_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA 0x0016 |
4161 | | #define BR_TLS_DH_DSS_WITH_AES_128_CBC_SHA 0x0030 |
4162 | | #define BR_TLS_DH_RSA_WITH_AES_128_CBC_SHA 0x0031 |
4163 | | #define BR_TLS_DHE_DSS_WITH_AES_128_CBC_SHA 0x0032 |
4164 | | #define BR_TLS_DHE_RSA_WITH_AES_128_CBC_SHA 0x0033 |
4165 | | #define BR_TLS_DH_DSS_WITH_AES_256_CBC_SHA 0x0036 |
4166 | | #define BR_TLS_DH_RSA_WITH_AES_256_CBC_SHA 0x0037 |
4167 | | #define BR_TLS_DHE_DSS_WITH_AES_256_CBC_SHA 0x0038 |
4168 | | #define BR_TLS_DHE_RSA_WITH_AES_256_CBC_SHA 0x0039 |
4169 | | #define BR_TLS_DH_DSS_WITH_AES_128_CBC_SHA256 0x003E |
4170 | | #define BR_TLS_DH_RSA_WITH_AES_128_CBC_SHA256 0x003F |
4171 | | #define BR_TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 0x0040 |
4172 | | #define BR_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 0x0067 |
4173 | | #define BR_TLS_DH_DSS_WITH_AES_256_CBC_SHA256 0x0068 |
4174 | | #define BR_TLS_DH_RSA_WITH_AES_256_CBC_SHA256 0x0069 |
4175 | | #define BR_TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 0x006A |
4176 | | #define BR_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 0x006B |
4177 | | #define BR_TLS_DH_anon_WITH_RC4_128_MD5 0x0018 |
4178 | | #define BR_TLS_DH_anon_WITH_3DES_EDE_CBC_SHA 0x001B |
4179 | | #define BR_TLS_DH_anon_WITH_AES_128_CBC_SHA 0x0034 |
4180 | | #define BR_TLS_DH_anon_WITH_AES_256_CBC_SHA 0x003A |
4181 | | #define BR_TLS_DH_anon_WITH_AES_128_CBC_SHA256 0x006C |
4182 | | #define BR_TLS_DH_anon_WITH_AES_256_CBC_SHA256 0x006D |
4183 | | |
4184 | | /* From RFC 4492 */ |
4185 | | #define BR_TLS_ECDH_ECDSA_WITH_NULL_SHA 0xC001 |
4186 | | #define BR_TLS_ECDH_ECDSA_WITH_RC4_128_SHA 0xC002 |
4187 | | #define BR_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA 0xC003 |
4188 | | #define BR_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0xC004 |
4189 | | #define BR_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0xC005 |
4190 | | #define BR_TLS_ECDHE_ECDSA_WITH_NULL_SHA 0xC006 |
4191 | | #define BR_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA 0xC007 |
4192 | | #define BR_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA 0xC008 |
4193 | | #define BR_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0xC009 |
4194 | | #define BR_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0xC00A |
4195 | | #define BR_TLS_ECDH_RSA_WITH_NULL_SHA 0xC00B |
4196 | | #define BR_TLS_ECDH_RSA_WITH_RC4_128_SHA 0xC00C |
4197 | | #define BR_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA 0xC00D |
4198 | | #define BR_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA 0xC00E |
4199 | | #define BR_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA 0xC00F |
4200 | | #define BR_TLS_ECDHE_RSA_WITH_NULL_SHA 0xC010 |
4201 | | #define BR_TLS_ECDHE_RSA_WITH_RC4_128_SHA 0xC011 |
4202 | | #define BR_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA 0xC012 |
4203 | | #define BR_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 0xC013 |
4204 | | #define BR_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 0xC014 |
4205 | | #define BR_TLS_ECDH_anon_WITH_NULL_SHA 0xC015 |
4206 | | #define BR_TLS_ECDH_anon_WITH_RC4_128_SHA 0xC016 |
4207 | | #define BR_TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA 0xC017 |
4208 | | #define BR_TLS_ECDH_anon_WITH_AES_128_CBC_SHA 0xC018 |
4209 | | #define BR_TLS_ECDH_anon_WITH_AES_256_CBC_SHA 0xC019 |
4210 | | |
4211 | | /* From RFC 5288 */ |
4212 | | #define BR_TLS_RSA_WITH_AES_128_GCM_SHA256 0x009C |
4213 | | #define BR_TLS_RSA_WITH_AES_256_GCM_SHA384 0x009D |
4214 | | #define BR_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 0x009E |
4215 | | #define BR_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 0x009F |
4216 | | #define BR_TLS_DH_RSA_WITH_AES_128_GCM_SHA256 0x00A0 |
4217 | | #define BR_TLS_DH_RSA_WITH_AES_256_GCM_SHA384 0x00A1 |
4218 | | #define BR_TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 0x00A2 |
4219 | | #define BR_TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 0x00A3 |
4220 | | #define BR_TLS_DH_DSS_WITH_AES_128_GCM_SHA256 0x00A4 |
4221 | | #define BR_TLS_DH_DSS_WITH_AES_256_GCM_SHA384 0x00A5 |
4222 | | #define BR_TLS_DH_anon_WITH_AES_128_GCM_SHA256 0x00A6 |
4223 | | #define BR_TLS_DH_anon_WITH_AES_256_GCM_SHA384 0x00A7 |
4224 | | |
4225 | | /* From RFC 5289 */ |
4226 | | #define BR_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 0xC023 |
4227 | | #define BR_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 0xC024 |
4228 | | #define BR_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 0xC025 |
4229 | | #define BR_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 0xC026 |
4230 | | #define BR_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 0xC027 |
4231 | | #define BR_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 0xC028 |
4232 | | #define BR_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 0xC029 |
4233 | | #define BR_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 0xC02A |
4234 | | #define BR_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0xC02B |
4235 | | #define BR_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0xC02C |
4236 | | #define BR_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0xC02D |
4237 | | #define BR_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0xC02E |
4238 | | #define BR_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0xC02F |
4239 | | #define BR_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0xC030 |
4240 | | #define BR_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 0xC031 |
4241 | | #define BR_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 0xC032 |
4242 | | |
4243 | | /* From RFC 6655 and 7251 */ |
4244 | | #define BR_TLS_RSA_WITH_AES_128_CCM 0xC09C |
4245 | | #define BR_TLS_RSA_WITH_AES_256_CCM 0xC09D |
4246 | | #define BR_TLS_RSA_WITH_AES_128_CCM_8 0xC0A0 |
4247 | | #define BR_TLS_RSA_WITH_AES_256_CCM_8 0xC0A1 |
4248 | | #define BR_TLS_ECDHE_ECDSA_WITH_AES_128_CCM 0xC0AC |
4249 | | #define BR_TLS_ECDHE_ECDSA_WITH_AES_256_CCM 0xC0AD |
4250 | | #define BR_TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 0xC0AE |
4251 | | #define BR_TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 0xC0AF |
4252 | | |
4253 | | /* From RFC 7905 */ |
4254 | | #define BR_TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 0xCCA8 |
4255 | | #define BR_TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 0xCCA9 |
4256 | | #define BR_TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 0xCCAA |
4257 | | #define BR_TLS_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAB |
4258 | | #define BR_TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAC |
4259 | | #define BR_TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAD |
4260 | | #define BR_TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAE |
4261 | | |
4262 | | /* From RFC 7507 */ |
4263 | | #define BR_TLS_FALLBACK_SCSV 0x5600 |
4264 | | |
4265 | | /* |
4266 | | * Symbolic constants for alerts. |
4267 | | */ |
4268 | | #define BR_ALERT_CLOSE_NOTIFY 0 |
4269 | | #define BR_ALERT_UNEXPECTED_MESSAGE 10 |
4270 | | #define BR_ALERT_BAD_RECORD_MAC 20 |
4271 | | #define BR_ALERT_RECORD_OVERFLOW 22 |
4272 | | #define BR_ALERT_DECOMPRESSION_FAILURE 30 |
4273 | | #define BR_ALERT_HANDSHAKE_FAILURE 40 |
4274 | | #define BR_ALERT_BAD_CERTIFICATE 42 |
4275 | | #define BR_ALERT_UNSUPPORTED_CERTIFICATE 43 |
4276 | | #define BR_ALERT_CERTIFICATE_REVOKED 44 |
4277 | | #define BR_ALERT_CERTIFICATE_EXPIRED 45 |
4278 | | #define BR_ALERT_CERTIFICATE_UNKNOWN 46 |
4279 | | #define BR_ALERT_ILLEGAL_PARAMETER 47 |
4280 | | #define BR_ALERT_UNKNOWN_CA 48 |
4281 | | #define BR_ALERT_ACCESS_DENIED 49 |
4282 | | #define BR_ALERT_DECODE_ERROR 50 |
4283 | | #define BR_ALERT_DECRYPT_ERROR 51 |
4284 | | #define BR_ALERT_PROTOCOL_VERSION 70 |
4285 | | #define BR_ALERT_INSUFFICIENT_SECURITY 71 |
4286 | | #define BR_ALERT_INTERNAL_ERROR 80 |
4287 | | #define BR_ALERT_USER_CANCELED 90 |
4288 | | #define BR_ALERT_NO_RENEGOTIATION 100 |
4289 | | #define BR_ALERT_UNSUPPORTED_EXTENSION 110 |
4290 | | #define BR_ALERT_NO_APPLICATION_PROTOCOL 120 |
4291 | | |
4292 | | #ifdef __cplusplus |
4293 | | } |
4294 | | #endif |
4295 | | |
4296 | | #endif |