Coverage Report

Created: 2024-11-21 06:38

/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