Coverage Report

Created: 2025-03-18 06:55

/src/gnutls/lib/gnutls_int.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright (C) 2000-2016 Free Software Foundation, Inc.
3
 * Copyright (C) 2015-2018 Red Hat, Inc.
4
 *
5
 * Author: Nikos Mavrogiannopoulos
6
 *
7
 * This file is part of GnuTLS.
8
 *
9
 * The GnuTLS is free software; you can redistribute it and/or
10
 * modify it under the terms of the GNU Lesser General Public License
11
 * as published by the Free Software Foundation; either version 2.1 of
12
 * the License, or (at your option) any later version.
13
 *
14
 * This library is distributed in the hope that it will be useful, but
15
 * WITHOUT ANY WARRANTY; without even the implied warranty of
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17
 * Lesser General Public License for more details.
18
 *
19
 * You should have received a copy of the GNU Lesser General Public License
20
 * along with this program.  If not, see <https://www.gnu.org/licenses/>
21
 *
22
 */
23
24
#ifndef GNUTLS_LIB_GNUTLS_INT_H
25
#define GNUTLS_LIB_GNUTLS_INT_H
26
27
#ifdef HAVE_CONFIG_H
28
#include "config.h"
29
#endif
30
31
#include <stddef.h>
32
#include <string.h>
33
#include <stdlib.h>
34
#include <stdio.h>
35
#include <ctype.h>
36
#include <limits.h>
37
#include <stdint.h>
38
#include <stdbool.h>
39
#include <assert.h>
40
41
#ifdef NO_SSIZE_T
42
#define HAVE_SSIZE_T
43
typedef int ssize_t;
44
#endif
45
46
#include <sys/types.h>
47
#include <unistd.h>
48
#include <sys/stat.h>
49
#if HAVE_SYS_SOCKET_H
50
#include <sys/socket.h>
51
#elif HAVE_WS2TCPIP_H
52
#include <ws2tcpip.h>
53
#endif
54
#include <time.h>
55
56
#include "attribute.h"
57
58
#define ENABLE_ALIGN16
59
60
#ifdef __clang_major
61
#define _GNUTLS_CLANG_VERSION \
62
  (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__)
63
#else
64
#define _GNUTLS_CLANG_VERSION 0
65
#endif
66
67
/* clang also defines __GNUC__. It promotes a GCC version of 4.2.1. */
68
#ifdef __GNUC__
69
#define _GNUTLS_GCC_VERSION \
70
  (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
71
#endif
72
73
#if _GNUTLS_GCC_VERSION >= 30100
74
0
#define likely(x) __builtin_expect((x), 1)
75
48
#define unlikely(x) __builtin_expect((x), 0)
76
#else
77
#define likely
78
#define unlikely
79
#endif
80
81
#include <gnutls/gnutls.h>
82
#include <gnutls/dtls.h>
83
#include <gnutls/abstract.h>
84
#include <gnutls/socket.h>
85
#include "system.h"
86
87
/* in case we compile with system headers taking priority, we
88
 * make sure that some new attributes are still available.
89
 */
90
#ifndef __GNUTLS_CONST__
91
#define __GNUTLS_CONST__
92
#endif
93
94
/* The size of a handshake message should not
95
 * be larger than this value.
96
 */
97
0
#define MAX_HANDSHAKE_PACKET_SIZE 128 * 1024
98
99
0
#define GNUTLS_DEF_SESSION_ID_SIZE 32
100
101
/* The maximum digest size of hash algorithms.
102
 */
103
#define MAX_FILENAME 512
104
0
#define MAX_HASH_SIZE 64
105
106
0
#define MAX_MAC_KEY_SIZE 64
107
108
0
#define MAX_CIPHER_BLOCK_SIZE 64 /* CHACHA20 */
109
#define MAX_CIPHER_KEY_SIZE 32
110
111
#define MAX_CIPHER_IV_SIZE 16
112
113
/* Maximum size of 2^16-1 has been chosen so that usernames can hold
114
 * PSK identities as defined in RFC 4279 section 2 and RFC 8446 section 4.2.11
115
 */
116
0
#define MAX_USERNAME_SIZE 65535
117
0
#define MAX_SERVER_NAME_SIZE 256
118
119
#define AEAD_EXPLICIT_DATA_SIZE 8
120
#define AEAD_IMPLICIT_DATA_SIZE 4
121
122
0
#define GNUTLS_MASTER_SIZE 48
123
0
#define GNUTLS_RANDOM_SIZE 32
124
125
/* Under TLS1.3 a hello retry request is sent as server hello */
126
#define REAL_HSK_TYPE(t)                               \
127
0
  ((t) == GNUTLS_HANDSHAKE_HELLO_RETRY_REQUEST ? \
128
0
     GNUTLS_HANDSHAKE_SERVER_HELLO :       \
129
0
     t)
130
131
/* DTLS */
132
0
#define DTLS_RETRANS_TIMEOUT 1000
133
134
/* TLS Extensions */
135
/* we can receive up to MAX_EXT_TYPES extensions.
136
 */
137
0
#define MAX_EXT_TYPES 64
138
139
/* TLS-internal extension (will be parsed after a ciphersuite is selected).
140
 * This amends the gnutls_ext_parse_type_t. Not exported yet to allow more refining
141
 * prior to finalizing an API. */
142
0
#define _GNUTLS_EXT_TLS_POST_CS 177
143
144
/* expire time for resuming sessions */
145
0
#define DEFAULT_EXPIRE_TIME 21600
146
0
#define STEK_ROTATION_PERIOD_PRODUCT 3
147
0
#define DEFAULT_HANDSHAKE_TIMEOUT_MS 40 * 1000
148
149
/* The EC group to be used when the extension
150
 * supported groups/curves is not present */
151
0
#define DEFAULT_EC_GROUP GNUTLS_GROUP_SECP256R1
152
153
typedef enum transport_t {
154
  GNUTLS_STREAM,
155
  GNUTLS_DGRAM
156
} transport_t;
157
158
/* The TLS 1.3 stage of handshake */
159
typedef enum hs_stage_t {
160
  STAGE_HS,
161
  STAGE_APP,
162
  STAGE_UPD_OURS,
163
  STAGE_UPD_PEERS,
164
  STAGE_EARLY
165
} hs_stage_t;
166
167
typedef enum record_send_state_t {
168
  RECORD_SEND_NORMAL = 0,
169
  RECORD_SEND_CORKED, /* corked and transition to NORMAL afterwards */
170
  RECORD_SEND_CORKED_TO_KU, /* corked but must transition to RECORD_SEND_KEY_UPDATE_1 */
171
  RECORD_SEND_KEY_UPDATE_1,
172
  RECORD_SEND_KEY_UPDATE_2,
173
  RECORD_SEND_KEY_UPDATE_3
174
} record_send_state_t;
175
176
/* The mode check occurs a lot throughout GnuTLS and can be replaced by
177
 * the following shorter macro. Also easier to update one macro
178
 * in the future when the internal structure changes than all the conditionals
179
 * itself.
180
 */
181
#define IS_SERVER(session) \
182
0
  (session->security_parameters.entity == GNUTLS_SERVER)
183
184
/* To check whether we have a DTLS session */
185
0
#define IS_DTLS(session) (session->internals.transport == GNUTLS_DGRAM)
186
187
/* To check whether we have a KTLS enabled */
188
#define IS_KTLS_ENABLED(session, interface) \
189
0
  (session->internals.ktls_enabled & interface)
190
191
/* the maximum size of encrypted packets */
192
0
#define DEFAULT_MAX_RECORD_SIZE 16384
193
0
#define DEFAULT_MAX_EARLY_DATA_SIZE 16384
194
0
#define TLS_RECORD_HEADER_SIZE 5
195
0
#define DTLS_RECORD_HEADER_SIZE (TLS_RECORD_HEADER_SIZE + 8)
196
#define RECORD_HEADER_SIZE(session) \
197
0
  (IS_DTLS(session) ? DTLS_RECORD_HEADER_SIZE : TLS_RECORD_HEADER_SIZE)
198
#define MAX_RECORD_HEADER_SIZE DTLS_RECORD_HEADER_SIZE
199
200
0
#define MIN_RECORD_SIZE 512
201
0
#define MIN_RECORD_SIZE_SMALL 64
202
203
/* The following macro is used to calculate the overhead when sending.
204
 * when receiving we use a different way as there are implementations that
205
 * store more data than allowed.
206
 */
207
#define MAX_RECORD_SEND_OVERHEAD(session) \
208
0
  (MAX_CIPHER_BLOCK_SIZE /*iv*/ + MAX_PAD_SIZE + MAX_HASH_SIZE /*MAC*/)
209
0
#define MAX_PAD_SIZE 255
210
0
#define EXTRA_COMP_SIZE 2048
211
212
0
#define TLS_HANDSHAKE_HEADER_SIZE 4
213
0
#define DTLS_HANDSHAKE_HEADER_SIZE (TLS_HANDSHAKE_HEADER_SIZE + 8)
214
#define HANDSHAKE_HEADER_SIZE(session)                   \
215
0
  (IS_DTLS(session) ? DTLS_HANDSHAKE_HEADER_SIZE : \
216
0
          TLS_HANDSHAKE_HEADER_SIZE)
217
#define MAX_HANDSHAKE_HEADER_SIZE DTLS_HANDSHAKE_HEADER_SIZE
218
219
/* Maximum seed size for provable parameters */
220
#define MAX_PVP_SEED_SIZE 256
221
222
/* This is the maximum handshake message size we send without
223
   fragmentation. This currently ignores record layer overhead. */
224
0
#define DTLS_DEFAULT_MTU 1200
225
226
/* the maximum size of the DTLS cookie */
227
0
#define DTLS_MAX_COOKIE_SIZE 32
228
229
/* The maximum number of HELLO_VERIFY_REQUEST messages the client
230
   processes before aborting. */
231
0
#define MAX_HANDSHAKE_HELLO_VERIFY_REQUESTS 5
232
233
0
#define MAX_PK_PARAM_SIZE 2048
234
235
/* Defaults for verification functions.
236
 *
237
 * update many_icas in tests/test-chains.h when increasing
238
 * DEFAULT_MAX_VERIFY_DEPTH.
239
 */
240
0
#define DEFAULT_MAX_VERIFY_DEPTH 16
241
0
#define DEFAULT_MAX_VERIFY_BITS (MAX_PK_PARAM_SIZE * 8)
242
0
#define MAX_VERIFY_DEPTH 4096
243
244
#include "mem.h"
245
246
0
#define MEMSUB(x, y) ((ssize_t)((ptrdiff_t)x - (ptrdiff_t)y))
247
248
#define DECR_LEN(len, x) \
249
0
  DECR_LENGTH_RET(len, x, GNUTLS_E_UNEXPECTED_PACKET_LENGTH)
250
#define DECR_LEN_FINAL(len, x)                                      \
251
0
  do {                                                        \
252
0
    if (len != x)                                       \
253
0
      return gnutls_assert_val(                   \
254
0
        GNUTLS_E_UNEXPECTED_PACKET_LENGTH); \
255
0
    else                                                \
256
0
      len = 0;                                    \
257
0
  } while (0)
258
0
#define DECR_LENGTH_RET(len, x, RET) DECR_LENGTH_COM(len, x, return RET)
259
#define DECR_LENGTH_COM(len, x, COM)     \
260
0
  do {                             \
261
0
    if (len < x) {           \
262
0
      gnutls_assert(); \
263
0
      COM;             \
264
0
    } else                   \
265
0
      len -= x;        \
266
0
  } while (0)
267
268
0
#define GNUTLS_POINTER_TO_INT(_) ((int)GNUTLS_POINTER_TO_INT_CAST(_))
269
#define GNUTLS_INT_TO_POINTER(_) ((void *)GNUTLS_POINTER_TO_INT_CAST(_))
270
271
0
#define GNUTLS_KX_INVALID (-1)
272
273
#include "mpi.h"
274
275
typedef enum handshake_state_t {
276
  STATE0 = 0,
277
  STATE1,
278
  STATE2,
279
  STATE3,
280
  STATE4,
281
  STATE5,
282
  STATE6,
283
  STATE7,
284
  STATE8,
285
  STATE9,
286
  STATE10,
287
  STATE11,
288
  STATE12,
289
  STATE13,
290
  STATE14,
291
  STATE15,
292
  STATE16,
293
  STATE17,
294
  STATE18,
295
  STATE19,
296
  STATE20 = 20,
297
  STATE21,
298
  STATE22,
299
  STATE30 = 30,
300
  STATE31,
301
  STATE40 = 40,
302
  STATE41,
303
  STATE50 = 50,
304
  STATE90 = 90,
305
  STATE91,
306
  STATE92,
307
  STATE93,
308
  STATE94,
309
  STATE99 = 99,
310
  STATE100 = 100,
311
  STATE101,
312
  STATE102,
313
  STATE103,
314
  STATE104,
315
  STATE105,
316
  STATE106,
317
  STATE107,
318
  STATE108,
319
  STATE109,
320
  STATE110,
321
  STATE111,
322
  STATE112,
323
  STATE113,
324
  STATE114,
325
  STATE115,
326
  STATE150 /* key update */
327
} handshake_state_t;
328
329
typedef enum bye_state_t {
330
  BYE_STATE0 = 0,
331
  BYE_STATE1,
332
  BYE_STATE2
333
} bye_state_t;
334
335
typedef enum send_ticket_state_t {
336
  TICKET_STATE0 = 0,
337
  TICKET_STATE1
338
} send_ticket_state_t;
339
340
typedef enum reauth_state_t {
341
  REAUTH_STATE0 = 0,
342
  REAUTH_STATE1,
343
  REAUTH_STATE2,
344
  REAUTH_STATE3,
345
  REAUTH_STATE4,
346
  REAUTH_STATE5
347
} reauth_state_t;
348
349
0
#define TICKET_STATE session->internals.ticket_state
350
0
#define BYE_STATE session->internals.bye_state
351
0
#define REAUTH_STATE session->internals.reauth_state
352
353
typedef enum heartbeat_state_t {
354
  SHB_SEND1 = 0,
355
  SHB_SEND2,
356
  SHB_RECV
357
} heartbeat_state_t;
358
359
typedef enum recv_state_t {
360
  RECV_STATE_0 = 0,
361
  RECV_STATE_DTLS_RETRANSMIT,
362
  /* client-side false start state */
363
  RECV_STATE_FALSE_START_HANDLING, /* we are calling gnutls_handshake() within record_recv() */
364
  RECV_STATE_FALSE_START, /* gnutls_record_recv() should complete the handshake */
365
  /* async handshake msg state */
366
  RECV_STATE_ASYNC_HANDSHAKE, /* an incomplete async handshake message was seen */
367
  /* server-side early start under TLS1.3; enabled when no client cert is received */
368
  RECV_STATE_EARLY_START_HANDLING, /* we are calling gnutls_handshake() within record_recv() */
369
  RECV_STATE_EARLY_START, /* gnutls_record_recv() should complete the handshake */
370
  RECV_STATE_REHANDSHAKE, /* gnutls_record_recv() should complete any incoming re-handshake requests */
371
  RECV_STATE_REAUTH /* gnutls_record_recv() should complete any incoming reauthentication requests */
372
} recv_state_t;
373
374
#include "str.h"
375
376
/* This is the maximum number of algorithms (ciphers or macs etc).
377
 * keep it synced with GNUTLS_MAX_ALGORITHM_NUM in gnutls.h
378
 */
379
0
#define MAX_ALGOS GNUTLS_MAX_ALGORITHM_NUM
380
381
/* IDs are allocated in a way that all values fit in 64-bit integer as (1<<val) */
382
typedef enum extensions_t {
383
  GNUTLS_EXTENSION_INVALID = 0xffff,
384
  GNUTLS_EXTENSION_STATUS_REQUEST = 0,
385
  GNUTLS_EXTENSION_CERT_TYPE,
386
  GNUTLS_EXTENSION_CLIENT_CERT_TYPE,
387
  GNUTLS_EXTENSION_SERVER_CERT_TYPE,
388
  GNUTLS_EXTENSION_SUPPORTED_GROUPS,
389
  GNUTLS_EXTENSION_SUPPORTED_EC_POINT_FORMATS,
390
  GNUTLS_EXTENSION_SRP,
391
  GNUTLS_EXTENSION_SIGNATURE_ALGORITHMS,
392
  GNUTLS_EXTENSION_SRTP,
393
  GNUTLS_EXTENSION_HEARTBEAT,
394
  GNUTLS_EXTENSION_ALPN,
395
  GNUTLS_EXTENSION_ETM,
396
  GNUTLS_EXTENSION_EXT_MASTER_SECRET,
397
  GNUTLS_EXTENSION_SESSION_TICKET,
398
  GNUTLS_EXTENSION_KEY_SHARE,
399
  GNUTLS_EXTENSION_SUPPORTED_VERSIONS,
400
  GNUTLS_EXTENSION_POST_HANDSHAKE,
401
  GNUTLS_EXTENSION_SAFE_RENEGOTIATION,
402
  GNUTLS_EXTENSION_SERVER_NAME,
403
  GNUTLS_EXTENSION_COOKIE,
404
  GNUTLS_EXTENSION_EARLY_DATA,
405
  GNUTLS_EXTENSION_PSK_KE_MODES,
406
  GNUTLS_EXTENSION_RECORD_SIZE_LIMIT,
407
  GNUTLS_EXTENSION_MAX_RECORD_SIZE,
408
  GNUTLS_EXTENSION_COMPRESS_CERTIFICATE,
409
  /*
410
   * pre_shared_key and dumbfw must always be the last extensions,
411
   * in that order */
412
  GNUTLS_EXTENSION_DUMBFW,
413
  GNUTLS_EXTENSION_PRE_SHARED_KEY,
414
  GNUTLS_EXTENSION_MAX /* not real extension - used for iterators */
415
} extensions_t;
416
417
0
#define GNUTLS_EXTENSION_MAX_VALUE 63
418
#define ext_track_t uint64_t
419
420
#include <verify.h>
421
422
verify(GNUTLS_EXTENSION_MAX < GNUTLS_EXTENSION_MAX_VALUE);
423
verify(GNUTLS_EXTENSION_MAX < MAX_EXT_TYPES);
424
425
/* we must provide at least 16 extensions for users to register;
426
 * increase GNUTLS_EXTENSION_MAX_VALUE, MAX_EXT_TYPES and used_exts
427
 * type if this fails
428
 */
429
verify(GNUTLS_EXTENSION_MAX_VALUE - GNUTLS_EXTENSION_MAX >= 16);
430
431
/* MAX_EXT_TYPES must fit in a single byte, to generate random
432
 * permutation at once.
433
 */
434
verify(MAX_EXT_TYPES <= UINT8_MAX);
435
436
/* The 'verify' symbol from <verify.h> is used extensively in the
437
 * code; undef it to avoid clash
438
 */
439
#undef verify
440
441
typedef enum {
442
  CIPHER_STREAM,
443
  CIPHER_BLOCK,
444
  CIPHER_AEAD
445
} cipher_type_t;
446
447
/* Record Protocol */
448
typedef enum content_type_t {
449
  GNUTLS_CHANGE_CIPHER_SPEC = 20,
450
  GNUTLS_ALERT,
451
  GNUTLS_HANDSHAKE,
452
  GNUTLS_APPLICATION_DATA,
453
  GNUTLS_HEARTBEAT
454
} content_type_t;
455
456
#define GNUTLS_PK_ANY (gnutls_pk_algorithm_t) - 1
457
#define GNUTLS_PK_NONE (gnutls_pk_algorithm_t) - 2
458
459
#define GNUTLS_PK_IS_RSA(pk)                                   \
460
0
  ((pk) == GNUTLS_PK_RSA || (pk) == GNUTLS_PK_RSA_PSS || \
461
0
   (pk) == GNUTLS_PK_RSA_OAEP)
462
463
/* Message buffers (mbuffers) structures */
464
465
/* this is actually the maximum number of distinct handshake
466
 * messages that can arrive in a single flight
467
 */
468
0
#define MAX_HANDSHAKE_MSGS 6
469
typedef struct {
470
  /* Handshake layer type and sequence of message */
471
  gnutls_handshake_description_t htype;
472
473
  /* The "real" type received; that is, it does not distinguish
474
   * HRR from server hello, while htype does */
475
  gnutls_handshake_description_t rtype;
476
  uint32_t length;
477
478
  /* valid in DTLS */
479
  uint16_t sequence;
480
481
  /* indicate whether that message is complete.
482
   * complete means start_offset == 0 and end_offset == length
483
   */
484
  uint32_t start_offset;
485
  uint32_t end_offset;
486
487
  uint8_t header[MAX_HANDSHAKE_HEADER_SIZE];
488
  int header_size;
489
490
  gnutls_buffer_st data;
491
} handshake_buffer_st;
492
493
typedef struct mbuffer_st {
494
  /* when used in mbuffer_head_st */
495
  struct mbuffer_st *next;
496
  struct mbuffer_st *prev;
497
498
  /* msg->size - mark = number of bytes left to process in this
499
     message. Mark should only be non-zero when this buffer is the
500
     head of the queue. */
501
  size_t mark;
502
503
  /* the data */
504
  gnutls_datum_t msg;
505
  size_t maximum_size;
506
507
  /* used during fill in, to separate header from data
508
   * body. */
509
  unsigned int uhead_mark;
510
511
  /* Filled in by record layer on recv:
512
   * type, record_sequence
513
   */
514
515
  /* record layer content type */
516
  content_type_t type;
517
518
  /* record layer sequence */
519
  uint64_t record_sequence;
520
521
  /* Filled in by handshake layer on send:
522
   * type, epoch, htype, handshake_sequence
523
   */
524
525
  /* Record layer epoch of message */
526
  uint16_t epoch;
527
528
  /* Handshake layer type and sequence of message */
529
  gnutls_handshake_description_t htype;
530
  uint16_t handshake_sequence;
531
} mbuffer_st;
532
533
typedef struct mbuffer_head_st {
534
  mbuffer_st *head;
535
  mbuffer_st *tail;
536
537
  unsigned int length;
538
  size_t byte_length;
539
} mbuffer_head_st;
540
541
/* Store & Retrieve functions defines:
542
 */
543
544
typedef struct auth_cred_st {
545
  gnutls_credentials_type_t algorithm;
546
547
  /* the type of credentials depends on algorithm
548
   */
549
  void *credentials;
550
  struct auth_cred_st *next;
551
} auth_cred_st;
552
553
/* session ticket definitions */
554
#define TICKET_MASTER_KEY_SIZE \
555
0
  (TICKET_KEY_NAME_SIZE + TICKET_CIPHER_KEY_SIZE + TICKET_MAC_SECRET_SIZE)
556
0
#define TICKET_KEY_NAME_SIZE 16
557
0
#define TICKET_CIPHER_KEY_SIZE 32
558
0
#define TICKET_MAC_SECRET_SIZE 16
559
560
/* These are restricted by TICKET_CIPHER_KEY_SIZE and TICKET_MAC_SECRET_SIZE */
561
#define TICKET_CIPHER GNUTLS_CIPHER_AES_256_CBC
562
0
#define TICKET_IV_SIZE 16
563
0
#define TICKET_BLOCK_SIZE 16
564
565
#define TICKET_MAC_ALGO GNUTLS_MAC_SHA1
566
0
#define TICKET_MAC_SIZE 20 /* HMAC-SHA1 */
567
568
struct ticket_st {
569
  uint8_t key_name[TICKET_KEY_NAME_SIZE];
570
  uint8_t IV[TICKET_IV_SIZE];
571
  uint8_t *encrypted_state;
572
  uint16_t encrypted_state_len;
573
  uint8_t mac[TICKET_MAC_SIZE];
574
};
575
576
struct binder_data_st {
577
  const struct mac_entry_st *prf; /* non-null if this struct is set */
578
  gnutls_datum_t psk;
579
580
  /* 0-based index of the selected PSK.
581
   * This only applies if the HSK_PSK_SELECTED flag is set in internals.hsk_flags,
582
   * which signals a PSK has indeed been selected. */
583
  uint8_t idx;
584
  uint8_t resumption; /* whether it is a resumption binder */
585
};
586
587
typedef void (*gnutls_stek_rotation_callback_t)(const gnutls_datum_t *prev_key,
588
            const gnutls_datum_t *new_key,
589
            uint64_t t);
590
591
struct gnutls_key_st {
592
  struct { /* These are kept outside the TLS1.3 union as they are
593
         * negotiated via extension, even before protocol is negotiated */
594
    gnutls_pk_params_st ecdh_params;
595
    gnutls_pk_params_st ecdhx_params;
596
    gnutls_pk_params_st dh_params;
597
    gnutls_pk_params_st kem_params;
598
  } kshare;
599
600
  /* The union contents depend on the negotiated protocol.
601
   * It should not contain any values which are allocated
602
   * prior to protocol negotiation, as it would be impossible
603
   * to deinitialize.
604
   */
605
  union {
606
    struct {
607
      /* the current (depending on state) secret, can be
608
       * early_secret, client_early_traffic_secret, ... */
609
      uint8_t temp_secret[MAX_HASH_SIZE];
610
      unsigned temp_secret_size; /* depends on negotiated PRF size */
611
      uint8_t e_ckey
612
        [MAX_HASH_SIZE]; /* client_early_traffic_secret */
613
      uint8_t hs_ckey
614
        [MAX_HASH_SIZE]; /* client_hs_traffic_secret */
615
      uint8_t hs_skey
616
        [MAX_HASH_SIZE]; /* server_hs_traffic_secret */
617
      uint8_t ap_ckey
618
        [MAX_HASH_SIZE]; /* client_ap_traffic_secret */
619
      uint8_t ap_skey
620
        [MAX_HASH_SIZE]; /* server_ap_traffic_secret */
621
      uint8_t ap_expkey
622
        [MAX_HASH_SIZE]; /* {early_,}exporter_master_secret */
623
      uint8_t ap_rms[MAX_HASH_SIZE]; /* resumption_master_secret */
624
    } tls13; /* tls1.3 */
625
626
    /* Follow the SSL3.0 and TLS1.2 key exchanges */
627
    struct {
628
      /* For ECDH KX */
629
      struct {
630
        gnutls_pk_params_st params; /* private part */
631
        /* public part */
632
        bigint_t x;
633
        bigint_t y;
634
        gnutls_datum_t
635
          raw; /* public key used in ECDHX (point) */
636
      } ecdh;
637
638
      /* For DH KX */
639
      struct {
640
        gnutls_pk_params_st params;
641
        bigint_t client_Y;
642
      } dh;
643
644
      /* for SRP KX */
645
      struct {
646
        bigint_t srp_key;
647
        bigint_t srp_g;
648
        bigint_t srp_p;
649
        bigint_t A;
650
        bigint_t B;
651
        bigint_t u;
652
        bigint_t b;
653
        bigint_t a;
654
        bigint_t x;
655
      } srp;
656
    } tls12; /* from ssl3.0 to tls12 */
657
  } proto;
658
659
  /* binders / pre-shared keys in use; temporary storage.
660
   * On client side it will hold data for the resumption and external
661
   * PSKs After server hello is received the selected binder is set on 0 position
662
   * and HSK_PSK_SELECTED is set.
663
   *
664
   * On server side the first value is populated with
665
   * the selected PSK data if HSK_PSK_SELECTED flag is set. */
666
  struct binder_data_st binders[2];
667
668
  /* TLS pre-master key; applies to 1.2 and 1.3 */
669
  gnutls_datum_t key;
670
671
  uint8_t
672
    /* The key to encrypt and decrypt session tickets */
673
    session_ticket_key[TICKET_MASTER_KEY_SIZE],
674
    /* Static buffer for the previous key, whenever we need it */
675
    previous_ticket_key[TICKET_MASTER_KEY_SIZE],
676
    /* Initial key supplied by the caller */
677
    initial_stek[TICKET_MASTER_KEY_SIZE];
678
679
  /* Whether the initial_stek is set through
680
   * gnutls_session_ticket_enable_server() */
681
  bool stek_initialized;
682
683
  /* this is used to hold the peers authentication data
684
   */
685
  /* auth_info_t structures SHOULD NOT contain malloced
686
   * elements. Check gnutls_session_pack.c, and gnutls_auth.c.
687
   * Remember that this should be calloced!
688
   */
689
  void *auth_info;
690
  gnutls_credentials_type_t auth_info_type;
691
  int auth_info_size; /* needed in order to store to db for restoring
692
         */
693
  auth_cred_st *cred; /* used to specify keys/certificates etc */
694
695
  struct {
696
    uint64_t last_result;
697
    uint8_t was_rotated;
698
    gnutls_stek_rotation_callback_t cb;
699
  } totp;
700
};
701
702
typedef struct gnutls_key_st gnutls_key_st;
703
704
struct pin_info_st {
705
  gnutls_pin_callback_t cb;
706
  void *data;
707
};
708
709
struct record_state_st;
710
typedef struct record_state_st record_state_st;
711
712
struct record_parameters_st;
713
typedef struct record_parameters_st record_parameters_st;
714
715
#define GNUTLS_CIPHER_FLAG_ONLY_AEAD \
716
0
  (1                           \
717
0
   << 0) /* When set, this cipher is only available through the new AEAD API */
718
#define GNUTLS_CIPHER_FLAG_XOR_NONCE \
719
0
  (1                           \
720
0
   << 1) /* In this TLS AEAD cipher xor the implicit_iv with the nonce */
721
#define GNUTLS_CIPHER_FLAG_NO_REKEY \
722
0
  (1                          \
723
0
   << 2) /* whether this tls1.3 cipher doesn't need to rekey after 2^24 messages */
724
#define GNUTLS_CIPHER_FLAG_TAG_PREFIXED \
725
0
  (1 << 3) /* When set, this cipher prefixes authentication tag */
726
727
/* cipher and mac parameters */
728
typedef struct cipher_entry_st {
729
  const char *name;
730
  gnutls_cipher_algorithm_t id;
731
  uint16_t blocksize;
732
  uint16_t keysize;
733
  cipher_type_t type;
734
  uint16_t implicit_iv; /* the size of implicit IV - the IV generated but not sent */
735
  uint16_t explicit_iv; /* the size of explicit IV - the IV stored in record */
736
  uint16_t cipher_iv; /* the size of IV needed by the cipher */
737
  uint16_t tagsize;
738
  unsigned flags;
739
} cipher_entry_st;
740
741
typedef struct gnutls_cipher_suite_entry_st {
742
  const char *name;
743
  const uint8_t id[2];
744
  const char *canonical_name;
745
  gnutls_cipher_algorithm_t block_algorithm;
746
  gnutls_kx_algorithm_t kx_algorithm;
747
  gnutls_mac_algorithm_t mac_algorithm;
748
  gnutls_protocol_t min_version; /* this cipher suite is supported
749
           * from 'version' and above;
750
           */
751
  gnutls_protocol_t max_version; /* this cipher suite is not supported
752
           * after 'version' and above;
753
           */
754
  gnutls_protocol_t min_dtls_version; /* DTLS min version */
755
  gnutls_protocol_t max_dtls_version; /* DTLS max version */
756
  gnutls_mac_algorithm_t prf;
757
} gnutls_cipher_suite_entry_st;
758
759
0
#define MAX_HYBRID_GROUPS 2
760
761
typedef struct gnutls_group_entry_st {
762
  const char *name;
763
  gnutls_group_t id;
764
  const gnutls_datum_t *prime;
765
  const gnutls_datum_t *q;
766
  const gnutls_datum_t *generator;
767
  const unsigned *q_bits;
768
  gnutls_ecc_curve_t curve;
769
  gnutls_pk_algorithm_t pk;
770
  size_t pubkey_size; /* for KEM based groups */
771
  size_t ciphertext_size; /* for KEM based groups */
772
  gnutls_group_t ids[MAX_HYBRID_GROUPS + 1]; /* IDs of subgroups
773
                * comprising a
774
                * hybrid group,
775
                * terminated with
776
                * GNUTLS_GROUP_INVALID */
777
  unsigned tls_id; /* The RFC4492 namedCurve ID or TLS 1.3 group ID */
778
} gnutls_group_entry_st;
779
780
#define GNUTLS_MAC_FLAG_PREIMAGE_INSECURE \
781
0
  1 /* if this algorithm should not be trusted for pre-image attacks */
782
#define GNUTLS_MAC_FLAG_CONTINUOUS_MAC \
783
0
  (1 << 1) /* if this MAC should be used in a 'continuous' way in TLS */
784
#define GNUTLS_MAC_FLAG_PREIMAGE_INSECURE_REVERTIBLE \
785
0
  (1                                           \
786
0
   << 2) /* if this algorithm should not be trusted for pre-image attacks, but can be enabled through API */
787
#define GNUTLS_MAC_FLAG_ALLOW_INSECURE_REVERTIBLE \
788
0
  (1                                        \
789
0
   << 3) /* when checking with _gnutls_digest_is_insecure2, don't treat revertible setting as fatal */
790
#define GNUTLS_MAC_FLAG_XOF \
791
0
  (1 << 4) /* this function is an extendable output function (XOF) */
792
/* This structure is used both for MACs and digests
793
 */
794
typedef struct mac_entry_st {
795
  const char *name;
796
  const char *oid; /* OID of the hash - if it is a hash */
797
  const char *mac_oid; /* OID of the MAC algorithm - if it is a MAC */
798
  gnutls_mac_algorithm_t id;
799
  unsigned output_size;
800
  unsigned key_size;
801
  unsigned nonce_size;
802
  unsigned placeholder; /* if set, then not a real MAC */
803
  unsigned block_size; /* internal block size for HMAC */
804
  unsigned flags;
805
} mac_entry_st;
806
807
typedef struct {
808
  const char *name;
809
  gnutls_protocol_t id; /* gnutls internal version number */
810
  unsigned age; /* internal ordering by protocol age */
811
  uint8_t major; /* defined by the protocol */
812
  uint8_t minor; /* defined by the protocol */
813
  transport_t transport; /* Type of transport, stream or datagram */
814
  bool supported; /* 0 not supported, > 0 is supported */
815
  bool supported_revertible;
816
  bool explicit_iv;
817
  bool extensions; /* whether it supports extensions */
818
  bool selectable_sighash; /* whether signatures can be selected */
819
  bool selectable_prf; /* whether the PRF is ciphersuite-defined */
820
821
  /* if SSL3 is disabled this flag indicates that this protocol is a placeholder,
822
   * otherwise it prevents this protocol from being set as record version */
823
  bool obsolete;
824
  bool tls13_sem; /* The TLS 1.3 handshake semantics */
825
  bool false_start; /* That version can be used with false start */
826
  bool only_extension; /* negotiated only with an extension */
827
  bool post_handshake_auth; /* Supports the TLS 1.3 post handshake auth */
828
  bool key_shares; /* TLS 1.3 key share key exchange */
829
  bool multi_ocsp; /* TLS 1.3 multiple OCSP responses */
830
  /*
831
   * TLS versions modify the semantics of signature algorithms. This number
832
   * is there to distinguish signature algorithms semantics between versions
833
   * (maps to sign_algorithm_st->tls_sem)
834
   */
835
  uint8_t tls_sig_sem;
836
} version_entry_st;
837
838
/* STATE (cont) */
839
840
#include "hash_int.h"
841
#include "cipher_int.h"
842
843
typedef struct {
844
  uint8_t id[2]; /* used to be (in TLS 1.2) hash algorithm , PK algorithm */
845
  uint8_t tls_sem; /* should match the protocol version's tls_sig_sem. */
846
} sign_algorithm_st;
847
848
/* This structure holds parameters got from TLS extension
849
 * mechanism. (some extensions may hold parameters in auth_info_t
850
 * structures also - see SRP).
851
 */
852
853
0
#define MAX_VERIFY_DATA_SIZE 36 /* in SSL 3.0, 12 in TLS 1.0 */
854
855
/* auth_info_t structures now MAY contain malloced
856
 * elements.
857
 */
858
859
/* This structure and auth_info_t, are stored in the resume database,
860
 * and are restored, in case of resume.
861
 * Holds all the required parameters to resume the current
862
 * session.
863
 */
864
865
/* Note that the security parameters structure is set up after the
866
 * handshake has finished. The only value you may depend on while
867
 * the handshake is in progress is the cipher suite value.
868
 */
869
typedef struct {
870
  unsigned int entity; /* GNUTLS_SERVER or GNUTLS_CLIENT */
871
872
  /* The epoch used to read and write */
873
  uint16_t epoch_read;
874
  uint16_t epoch_write;
875
876
  /* The epoch that the next handshake will initialize. */
877
  uint16_t epoch_next;
878
879
  /* The epoch at index 0 of record_parameters. */
880
  uint16_t epoch_min;
881
882
  /* this is the ciphersuite we are going to use
883
   * moved here from internals in order to be restored
884
   * on resume;
885
   */
886
  const struct gnutls_cipher_suite_entry_st *cs;
887
888
  /* This is kept outside the ciphersuite entry as on certain
889
   * TLS versions we need a separate PRF MAC, i.e., MD5_SHA1. */
890
  const mac_entry_st *prf;
891
892
  uint8_t master_secret[GNUTLS_MASTER_SIZE];
893
  uint8_t client_random[GNUTLS_RANDOM_SIZE];
894
  uint8_t server_random[GNUTLS_RANDOM_SIZE];
895
  uint8_t session_id[GNUTLS_MAX_SESSION_ID_SIZE];
896
  uint8_t session_id_size;
897
  time_t timestamp;
898
899
  /* whether client has agreed in post handshake auth - only set on server side */
900
  uint8_t post_handshake_auth;
901
902
  /* The maximum amount of plaintext sent in a record,
903
   * negotiated with the peer.
904
   */
905
  uint16_t max_record_send_size;
906
  uint16_t max_record_recv_size;
907
908
  /* The maximum amount of plaintext sent in a record, set by
909
   * the programmer.
910
   */
911
  uint16_t max_user_record_send_size;
912
  uint16_t max_user_record_recv_size;
913
914
  /* The maximum amount of early data */
915
  uint32_t max_early_data_size;
916
917
  /* holds the negotiated certificate types */
918
  gnutls_certificate_type_t client_ctype;
919
  gnutls_certificate_type_t server_ctype;
920
921
  /* The selected (after server hello EC or DH group */
922
  const gnutls_group_entry_st *grp;
923
924
  /* Holds the signature algorithm that will be used in this session,
925
   * selected by the server at the time of Ciphersuite/certificate
926
   * selection - see select_sign_algorithm() */
927
  gnutls_sign_algorithm_t server_sign_algo;
928
929
  /* Holds the signature algorithm used in this session - If any */
930
  gnutls_sign_algorithm_t client_sign_algo;
931
932
  /* Whether the master secret negotiation will be according to
933
   * draft-ietf-tls-session-hash-01
934
   */
935
  uint8_t ext_master_secret;
936
  /* encrypt-then-mac -> rfc7366 */
937
  uint8_t etm;
938
939
  uint8_t client_auth_type; /* gnutls_credentials_type_t */
940
  uint8_t server_auth_type;
941
942
  /* Note: if you add anything in Security_Parameters struct, then
943
   * also modify CPY_COMMON in constate.c, and session_pack.c,
944
   * in order to save it in the session storage.
945
   */
946
947
  /* Used by extensions that enable supplemental data: Which ones
948
   * do that? Do they belong in security parameters?
949
   */
950
  int do_recv_supplemental, do_send_supplemental;
951
  const version_entry_st *pversion;
952
} security_parameters_st;
953
954
typedef struct api_aead_cipher_hd_st {
955
  cipher_hd_st ctx_enc;
956
} api_aead_cipher_hd_st;
957
958
struct record_state_st {
959
  /* mac keys can be as long as the hash size */
960
  uint8_t mac_key[MAX_HASH_SIZE];
961
  unsigned mac_key_size;
962
963
  uint8_t iv[MAX_CIPHER_IV_SIZE];
964
  unsigned iv_size;
965
966
  uint8_t key[MAX_CIPHER_KEY_SIZE];
967
  unsigned key_size;
968
969
  union {
970
    auth_cipher_hd_st tls12;
971
    api_aead_cipher_hd_st aead;
972
  } ctx;
973
  unsigned aead_tag_size;
974
  unsigned is_aead;
975
  uint64_t sequence_number;
976
  gnutls_record_encryption_level_t level;
977
};
978
979
/* These are used to resolve relative epochs. These values are just
980
   outside the 16 bit range to prevent off-by-one errors. An absolute
981
   epoch may be referred to by its numeric id in the range
982
   0x0000-0xffff. */
983
0
#define EPOCH_READ_CURRENT 70000
984
0
#define EPOCH_WRITE_CURRENT 70001
985
0
#define EPOCH_NEXT 70002
986
987
struct record_parameters_st {
988
  uint16_t epoch;
989
  int initialized;
990
991
  const cipher_entry_st *cipher;
992
  bool etm;
993
  const mac_entry_st *mac;
994
995
  /* for DTLS sliding window */
996
  uint64_t dtls_sw_next; /* The end point (next expected packet) of the sliding window without epoch */
997
  uint64_t dtls_sw_bits;
998
  unsigned dtls_sw_have_recv; /* whether at least a packet has been received */
999
1000
  record_state_st read;
1001
  record_state_st write;
1002
1003
  /* Whether this state is in use, i.e., if there is
1004
     a pending handshake message waiting to be encrypted
1005
     under this epoch's parameters.
1006
   */
1007
  int usage_cnt;
1008
};
1009
1010
typedef struct {
1011
  unsigned int priorities[MAX_ALGOS];
1012
  unsigned int num_priorities;
1013
} priority_st;
1014
1015
typedef enum {
1016
  SR_DISABLED,
1017
  SR_UNSAFE,
1018
  SR_PARTIAL,
1019
  SR_SAFE
1020
} safe_renegotiation_t;
1021
1022
0
#define MAX_CIPHERSUITE_SIZE 256
1023
1024
typedef struct ciphersuite_list_st {
1025
  const gnutls_cipher_suite_entry_st *entry[MAX_CIPHERSUITE_SIZE];
1026
  unsigned int size;
1027
} ciphersuite_list_st;
1028
1029
typedef struct group_list_st {
1030
  const gnutls_group_entry_st *entry[MAX_ALGOS];
1031
  unsigned int size;
1032
  bool have_ffdhe;
1033
} group_list_st;
1034
1035
typedef struct sign_algo_list_st {
1036
  const struct gnutls_sign_entry_st *entry[MAX_ALGOS];
1037
  unsigned int size;
1038
} sign_algo_list_st;
1039
1040
#include "atomic.h"
1041
1042
typedef enum ext_master_secret_t {
1043
  EMS_REQUEST,
1044
  EMS_REQUIRE
1045
} ext_master_secret_t;
1046
1047
/* For the external api */
1048
struct gnutls_priority_st {
1049
  priority_st protocol;
1050
  priority_st client_ctype;
1051
  priority_st server_ctype;
1052
1053
  /* The following are not necessary to be stored in
1054
   * the structure; however they are required by the
1055
   * external APIs: gnutls_priority_*_list() */
1056
  priority_st _cipher;
1057
  priority_st _mac;
1058
  priority_st _kx;
1059
  priority_st _sign_algo;
1060
  priority_st _supported_ecc;
1061
1062
  /* the supported groups */
1063
  group_list_st groups;
1064
1065
  /* the supported signature algorithms */
1066
  sign_algo_list_st sigalg;
1067
1068
  /* the supported ciphersuites */
1069
  ciphersuite_list_st cs;
1070
1071
  /* to disable record padding */
1072
  bool no_extensions;
1073
1074
  /* to disable extensions shuffling */
1075
  bool no_shuffle_extensions;
1076
1077
  safe_renegotiation_t sr;
1078
  bool min_record_version;
1079
  bool server_precedence;
1080
  bool allow_server_key_usage_violation; /* for test suite purposes only */
1081
  bool no_status_request;
1082
  bool no_tickets;
1083
  bool no_tickets_tls12;
1084
  bool have_cbc;
1085
  bool have_psk;
1086
  bool force_etm;
1087
  unsigned int additional_verify_flags;
1088
  bool tls13_compat_mode;
1089
  ext_master_secret_t force_ext_master_secret;
1090
1091
  /* TLS_FALLBACK_SCSV */
1092
  bool fallback;
1093
1094
  /* The session's expected security level.
1095
   * Will be used to determine the minimum DH bits,
1096
   * (or the acceptable certificate security level).
1097
   */
1098
  gnutls_sec_param_t level;
1099
1100
  /* these should be accessed from
1101
   * session->internals.VAR names */
1102
  bool _allow_large_records;
1103
  bool _allow_small_records;
1104
  bool _no_etm;
1105
  bool _no_ext_master_secret;
1106
  bool _allow_key_usage_violation;
1107
  bool _dumbfw;
1108
  unsigned int _dh_prime_bits; /* old (deprecated) variable */
1109
1110
  DEF_ATOMIC_INT(usage_cnt);
1111
};
1112
1113
/* Allow around 50KB of length-hiding padding
1114
 * when using legacy padding,
1115
 * or around 3.2MB when using new padding. */
1116
0
#define DEFAULT_MAX_EMPTY_RECORDS 200
1117
1118
#define ENABLE_COMPAT(x)                    \
1119
0
  (x)->allow_large_records = 1;       \
1120
0
  (x)->allow_small_records = 1;       \
1121
0
  (x)->no_etm = 1;                    \
1122
0
  (x)->no_ext_master_secret = 1;      \
1123
0
  (x)->allow_key_usage_violation = 1; \
1124
0
  (x)->dumbfw = 1
1125
1126
#define ENABLE_PRIO_COMPAT(x)                \
1127
0
  (x)->_allow_large_records = 1;       \
1128
0
  (x)->_allow_small_records = 1;       \
1129
0
  (x)->_no_etm = 1;                    \
1130
0
  (x)->_no_ext_master_secret = 1;      \
1131
0
  (x)->_allow_key_usage_violation = 1; \
1132
0
  (x)->_dumbfw = 1
1133
1134
/* DH and RSA parameters types.
1135
 */
1136
typedef struct gnutls_dh_params_int {
1137
  /* [0] is the prime, [1] is the generator, [2] is Q if available.
1138
   */
1139
  bigint_t params[3];
1140
  int q_bits; /* length of q in bits. If zero then length is unknown.
1141
         */
1142
} dh_params_st;
1143
1144
/* TLS 1.3 session ticket
1145
 */
1146
typedef struct {
1147
  struct timespec arrival_time;
1148
  struct timespec creation_time;
1149
  uint32_t lifetime;
1150
  uint32_t age_add;
1151
  uint8_t nonce[255];
1152
  size_t nonce_size;
1153
  const mac_entry_st *prf;
1154
  uint8_t resumption_master_secret[MAX_HASH_SIZE];
1155
  gnutls_datum_t ticket;
1156
} tls13_ticket_st;
1157
1158
/* DTLS session state
1159
 */
1160
typedef struct {
1161
  /* HelloVerifyRequest DOS prevention cookie */
1162
  gnutls_datum_t dcookie;
1163
1164
  /* For DTLS handshake fragmentation and reassembly. */
1165
  uint16_t hsk_write_seq;
1166
  /* the sequence number of the expected packet */
1167
  unsigned int hsk_read_seq;
1168
  uint16_t mtu;
1169
1170
  /* a flight transmission is in process */
1171
  bool flight_init;
1172
  /* whether this is the last flight in the protocol  */
1173
  bool last_flight;
1174
1175
  /* the retransmission timeout in milliseconds */
1176
  unsigned int retrans_timeout_ms;
1177
1178
  unsigned int hsk_hello_verify_requests;
1179
1180
  /* The actual retrans_timeout for the next message (e.g. doubled or so)
1181
   */
1182
  unsigned int actual_retrans_timeout_ms;
1183
1184
  /* timers to handle async handshake after gnutls_handshake()
1185
   * has terminated. Required to handle retransmissions.
1186
   */
1187
  time_t async_term;
1188
1189
  /* last retransmission triggered by record layer */
1190
  struct timespec last_retransmit;
1191
  unsigned int packets_dropped;
1192
} dtls_st;
1193
1194
typedef struct tfo_st {
1195
  int fd;
1196
  int flags;
1197
  bool connect_only; /* a previous sendmsg() failed, attempting connect() */
1198
  struct sockaddr_storage connect_addr;
1199
  socklen_t connect_addrlen;
1200
} tfo_st;
1201
1202
typedef struct {
1203
  /* holds all the parsed data received by the record layer */
1204
  mbuffer_head_st record_buffer;
1205
1206
  int handshake_hash_buffer_prev_len; /* keeps the length of handshake_hash_buffer, excluding
1207
             * the last received message */
1208
  unsigned handshake_hash_buffer_client_hello_len; /* if non-zero it is the length of data until the client hello message */
1209
  unsigned handshake_hash_buffer_client_kx_len; /* if non-zero it is the length of data until the
1210
               * the client key exchange message */
1211
  unsigned handshake_hash_buffer_server_finished_len; /* if non-zero it is the length of data until the
1212
                 * the server finished message */
1213
  unsigned handshake_hash_buffer_client_finished_len; /* if non-zero it is the length of data until the
1214
                 * the client finished message */
1215
  gnutls_buffer_st
1216
    handshake_hash_buffer; /* used to keep the last received handshake
1217
             * message */
1218
1219
  bool resumable; /* if we can resume that session */
1220
1221
  send_ticket_state_t
1222
    ticket_state; /* used by gnutls_session_ticket_send() */
1223
  bye_state_t bye_state; /* used by gnutls_bye() */
1224
  reauth_state_t reauth_state; /* used by gnutls_reauth() */
1225
1226
  handshake_state_t handshake_final_state;
1227
  handshake_state_t handshake_state; /* holds
1228
             * a number which indicates where
1229
             * the handshake procedure has been
1230
             * interrupted. If it is 0 then
1231
             * no interruption has happened.
1232
             */
1233
1234
  bool invalid_connection; /* if this session is valid */
1235
1236
  bool may_not_read; /* if it's 0 then we can read/write, otherwise it's forbidden to read/write
1237
         */
1238
  bool may_not_write;
1239
  bool read_eof; /* non-zero if we have received a closure alert. */
1240
1241
  int last_alert; /* last alert received */
1242
1243
  /* The last handshake messages sent or received.
1244
   */
1245
  int last_handshake_in;
1246
  int last_handshake_out;
1247
1248
  /* priorities */
1249
  struct gnutls_priority_st *priorities;
1250
1251
  /* variables directly set when setting the priorities above, or
1252
   * when overriding them */
1253
  bool allow_large_records;
1254
  bool allow_small_records;
1255
  bool no_etm;
1256
  bool no_ext_master_secret;
1257
  bool allow_key_usage_violation;
1258
  bool dumbfw;
1259
1260
  /* old (deprecated) variable. This is used for both srp_prime_bits
1261
   * and dh_prime_bits as they don't overlap */
1262
  /* For SRP: minimum bits to allow for SRP
1263
   * use gnutls_srp_set_prime_bits() to adjust it.
1264
   */
1265
  uint16_t dh_prime_bits; /* srp_prime_bits */
1266
1267
  /* resumed session */
1268
  bool resumed; /* if we are resuming a session */
1269
1270
  /* server side: non-zero if resumption was requested by client
1271
   * client side: non-zero if we set resumption parameters */
1272
  bool resumption_requested;
1273
  security_parameters_st resumed_security_parameters;
1274
  gnutls_datum_t
1275
    resumption_data; /* copy of input to gnutls_session_set_data() */
1276
1277
  /* These buffers are used in the handshake
1278
   * protocol only. freed using _gnutls_handshake_io_buffer_clear();
1279
   */
1280
  mbuffer_head_st handshake_send_buffer;
1281
  mbuffer_head_st handshake_header_recv_buffer;
1282
  handshake_buffer_st handshake_recv_buffer[MAX_HANDSHAKE_MSGS];
1283
  int handshake_recv_buffer_size;
1284
1285
  /* this buffer holds a record packet -mostly used for
1286
   * non blocking IO.
1287
   */
1288
  mbuffer_head_st
1289
    record_recv_buffer; /* buffer holding the unparsed record that is currently
1290
             * being received */
1291
  mbuffer_head_st record_send_buffer; /* holds cached data
1292
             * for the gnutls_io_write_buffered()
1293
             * function.
1294
             */
1295
  size_t record_send_buffer_user_size; /* holds the
1296
             * size of the user specified data to
1297
             * send.
1298
             */
1299
1300
  mbuffer_head_st early_data_recv_buffer;
1301
  gnutls_buffer_st early_data_presend_buffer;
1302
1303
  record_send_state_t rsend_state;
1304
  /* buffer used temporarily during key update */
1305
  gnutls_buffer_st record_key_update_buffer;
1306
  gnutls_buffer_st record_presend_buffer; /* holds cached data
1307
             * for the gnutls_record_send()
1308
             * function.
1309
             */
1310
1311
  /* buffer used temporarily during TLS1.3 reauthentication */
1312
  gnutls_buffer_st reauth_buffer;
1313
1314
  time_t expire_time; /* after expire_time seconds this session will expire */
1315
  const struct mod_auth_st_int
1316
    *auth_struct; /* used in handshake packets and KX algorithms */
1317
1318
  /* this is the highest version available
1319
   * to the peer. (advertised version).
1320
   * This is obtained by the Handshake Client Hello
1321
   * message. (some implementations read the Record version)
1322
   */
1323
  uint8_t adv_version_major;
1324
  uint8_t adv_version_minor;
1325
1326
  /* if this is non zero a certificate request message
1327
   * will be sent to the client. - only if the ciphersuite
1328
   * supports it. In server side it contains GNUTLS_CERT_REQUIRE
1329
   * or similar.
1330
   */
1331
  gnutls_certificate_request_t send_cert_req;
1332
1333
  /* callback to print the full path of certificate
1334
   * validation to the trusted root.
1335
   */
1336
  gnutls_verify_output_function *cert_output_callback;
1337
1338
  size_t max_handshake_data_buffer_size;
1339
1340
  /* PUSH & PULL functions.
1341
   */
1342
  gnutls_pull_timeout_func pull_timeout_func;
1343
  gnutls_pull_func pull_func;
1344
  gnutls_push_func push_func;
1345
  gnutls_vec_push_func vec_push_func;
1346
  gnutls_errno_func errno_func;
1347
  /* Holds the first argument of PUSH and PULL
1348
   * functions;
1349
   */
1350
  gnutls_transport_ptr_t transport_recv_ptr;
1351
  gnutls_transport_ptr_t transport_send_ptr;
1352
1353
  /* STORE & RETRIEVE functions. Only used if other
1354
   * backend than gdbm is used.
1355
   */
1356
  gnutls_db_store_func db_store_func;
1357
  gnutls_db_retr_func db_retrieve_func;
1358
  gnutls_db_remove_func db_remove_func;
1359
  void *db_ptr;
1360
1361
  /* post client hello callback (server side only)
1362
   */
1363
  gnutls_handshake_post_client_hello_func user_hello_func;
1364
  /* handshake hook function */
1365
  gnutls_handshake_hook_func h_hook;
1366
  unsigned int h_type; /* the hooked type */
1367
  int16_t h_post; /* whether post-generation/receive */
1368
  gnutls_handshake_read_func h_read_func;
1369
  gnutls_handshake_secret_func h_secret_func;
1370
  gnutls_alert_read_func alert_read_func;
1371
1372
  gnutls_keylog_func keylog_func;
1373
1374
  /* holds the selected certificate and key.
1375
   * use _gnutls_selected_certs_deinit() and _gnutls_selected_certs_set()
1376
   * to change them.
1377
   */
1378
  gnutls_pcert_st *selected_cert_list;
1379
  uint16_t selected_cert_list_length;
1380
  struct gnutls_privkey_st *selected_key;
1381
1382
  /* new callbacks such as gnutls_certificate_retrieve_function3
1383
   * set the selected_ocsp datum values. The older OCSP callback-based
1384
   * functions, set the ocsp_func. The former takes precedence when
1385
   * set.
1386
   */
1387
  gnutls_ocsp_data_st *selected_ocsp;
1388
  uint16_t selected_ocsp_length;
1389
  gnutls_status_request_ocsp_func selected_ocsp_func;
1390
  void *selected_ocsp_func_ptr;
1391
  bool selected_need_free;
1392
1393
  /* This holds the default version that our first
1394
   * record packet will have. */
1395
  uint8_t default_record_version[2];
1396
  uint8_t default_hello_version[2];
1397
1398
  void *user_ptr;
1399
1400
  /* Holds 0 if the last called function was interrupted while
1401
   * receiving, and non zero otherwise.
1402
   */
1403
  bool direction;
1404
1405
  /* If non zero the server will not advertise the CA's he
1406
   * trusts (do not send an RDN sequence).
1407
   */
1408
  bool ignore_rdn_sequence;
1409
1410
  /* This is used to set an arbitrary version in the RSA
1411
   * PMS secret. Can be used by clients to test whether the
1412
   * server checks that version. (** only used in gnutls-cli-debug)
1413
   */
1414
  uint8_t rsa_pms_version[2];
1415
1416
  /* To avoid using global variables, and especially on Windows where
1417
   * the application may use a different errno variable than GnuTLS,
1418
   * it is possible to use gnutls_transport_set_errno to set a
1419
   * session-specific errno variable in the user-replaceable push/pull
1420
   * functions.  This value is used by the send/recv functions.  (The
1421
   * strange name of this variable is because 'errno' is typically
1422
   * #define'd.)
1423
   */
1424
  int errnum;
1425
1426
  /* A handshake process has been completed */
1427
  bool initial_negotiation_completed;
1428
  void *post_negotiation_lock; /* protects access to the variable above
1429
           * in the cases where negotiation is incomplete
1430
           * after gnutls_handshake() - early/false start */
1431
1432
  /* The type of transport protocol; stream or datagram */
1433
  transport_t transport;
1434
1435
  /* DTLS session state */
1436
  dtls_st dtls;
1437
  /* Protect from infinite loops due to GNUTLS_E_LARGE_PACKET non-handling
1438
   * or due to multiple alerts being received. */
1439
  unsigned handshake_suspicious_loops;
1440
  /* should be non-zero when a handshake is in progress */
1441
  bool handshake_in_progress;
1442
1443
  /* if set it means that the master key was set using
1444
   * gnutls_session_set_master() rather than being negotiated. */
1445
  bool premaster_set;
1446
1447
  unsigned int cb_tls_unique_len;
1448
  unsigned char cb_tls_unique[MAX_VERIFY_DATA_SIZE];
1449
1450
  /* starting time of current handshake */
1451
  struct timespec handshake_start_time;
1452
1453
  /* expected end time of current handshake (start+timeout);
1454
   * this is only filled if a handshake_time_ms is set. */
1455
  struct timespec handshake_abs_timeout;
1456
1457
  /* An estimation of round-trip time under TLS1.3; populated in client side only */
1458
  unsigned ertt;
1459
1460
  unsigned int handshake_timeout_ms; /* timeout in milliseconds */
1461
  unsigned int record_timeout_ms; /* timeout in milliseconds */
1462
1463
  /* saved context of post handshake certificate request. In
1464
   * client side is what we received in server's certificate request;
1465
   * in server side is what we sent to client. */
1466
  gnutls_datum_t post_handshake_cr_context;
1467
  /* it is a copy of the handshake hash buffer if post handshake is used */
1468
  gnutls_buffer_st post_handshake_hash_buffer;
1469
1470
/* When either of PSK or DHE-PSK is received */
1471
#define HSK_PSK_KE_MODES_RECEIVED                        \
1472
0
  (HSK_PSK_KE_MODE_PSK | HSK_PSK_KE_MODE_DHE_PSK | \
1473
0
   HSK_PSK_KE_MODE_INVALID)
1474
1475
0
#define HSK_CRT_VRFY_EXPECTED 1
1476
0
#define HSK_CRT_ASKED (1 << 2)
1477
0
#define HSK_HRR_SENT (1 << 3)
1478
0
#define HSK_HRR_RECEIVED (1 << 4)
1479
0
#define HSK_CRT_REQ_SENT (1 << 5)
1480
#define HSK_COMP_CRT_REQ_SENT \
1481
0
  (1 << 6) /* whether certificate compression has been requested */
1482
0
#define HSK_KEY_UPDATE_ASKED (1 << 7) /* flag is not used during handshake */
1483
0
#define HSK_FALSE_START_USED (1 << 8) /* TLS1.2 only */
1484
#define HSK_HAVE_FFDHE \
1485
0
  (1 << 9) /* whether the peer has advertised at least an FFDHE group */
1486
#define HSK_USED_FFDHE \
1487
0
  (1 << 10) /* whether ffdhe was actually negotiated and used */
1488
0
#define HSK_PSK_KE_MODES_SENT (1 << 11)
1489
#define HSK_PSK_KE_MODE_PSK \
1490
0
  (1 << 12) /* client: whether PSK without DH is allowed,
1491
           * server: whether PSK without DH is selected. */
1492
#define HSK_PSK_KE_MODE_INVALID \
1493
0
  (1 << 13) /* server: no compatible PSK modes were seen */
1494
#define HSK_PSK_KE_MODE_DHE_PSK \
1495
0
  (1 << 14) /* server: whether PSK with DH is selected
1496
           * client: whether PSK with DH is allowed
1497
           */
1498
#define HSK_PSK_SELECTED \
1499
0
  (1               \
1500
0
   << 15) /* server: whether PSK was selected, either for resumption or not;
1501
           *         on resumption session->internals.resumed will be set as well.
1502
           * client: the same */
1503
0
#define HSK_KEY_SHARE_SENT (1 << 16) /* server: key share was sent to client */
1504
#define HSK_KEY_SHARE_RECEIVED \
1505
0
  (1 << 17) /* client: key share was received
1506
           * server: key share was received and accepted */
1507
#define HSK_TLS13_TICKET_SENT \
1508
0
  (1 << 18) /* client: sent a ticket under TLS1.3;
1509
           * server: a ticket was sent to client.
1510
           */
1511
#define HSK_TLS12_TICKET_SENT \
1512
0
  (1 << 19) /* client: sent a ticket under TLS1.2;
1513
           * server: a ticket was sent to client.
1514
           */
1515
#define HSK_TICKET_RECEIVED \
1516
0
  (1 << 20) /* client: a session ticket was received */
1517
0
#define HSK_EARLY_START_USED (1 << 21)
1518
#define HSK_EARLY_DATA_IN_FLIGHT \
1519
0
  (1 << 22) /* client: sent early_data extension in ClientHello
1520
             * server: early_data extension was seen in ClientHello
1521
             */
1522
#define HSK_EARLY_DATA_ACCEPTED \
1523
0
  (1                      \
1524
0
   << 23) /* client: early_data extension was seen in EncryptedExtensions
1525
           * server: intend to process early data
1526
           */
1527
0
#define HSK_RECORD_SIZE_LIMIT_NEGOTIATED (1 << 24)
1528
#define HSK_RECORD_SIZE_LIMIT_SENT \
1529
0
  (1 << 25) /* record_size_limit extension was sent */
1530
#define HSK_RECORD_SIZE_LIMIT_RECEIVED \
1531
0
  (1                             \
1532
0
   << 26) /* server: record_size_limit extension was seen but not accepted yet */
1533
#define HSK_OCSP_REQUESTED \
1534
0
  (1 << 27) /* server: client requested OCSP stapling */
1535
#define HSK_CLIENT_OCSP_REQUESTED \
1536
0
  (1 << 28) /* client: server requested OCSP stapling */
1537
#define HSK_SERVER_HELLO_RECEIVED \
1538
0
  (1 << 29) /* client: Server Hello message has been received */
1539
1540
  /* The hsk_flags are for use within the ongoing handshake;
1541
   * they are reset to zero prior to handshake start by gnutls_handshake. */
1542
  unsigned hsk_flags;
1543
  struct timespec last_key_update;
1544
  unsigned key_update_count;
1545
  /* Read-only pointer to the full ClientHello message */
1546
  gnutls_buffer_st full_client_hello;
1547
  /* The offset at which extensions start in the ClientHello buffer */
1548
  int extensions_offset;
1549
1550
  gnutls_buffer_st hb_local_data;
1551
  gnutls_buffer_st hb_remote_data;
1552
  struct timespec
1553
    hb_ping_start; /* timestamp: when first HeartBeat ping was sent */
1554
  struct timespec
1555
    hb_ping_sent; /* timestamp: when last HeartBeat ping was sent */
1556
  unsigned int
1557
    hb_actual_retrans_timeout_ms; /* current timeout, in milliseconds */
1558
  unsigned int
1559
    hb_retrans_timeout_ms; /* the default timeout, in milliseconds */
1560
  unsigned int hb_total_timeout_ms; /* the total timeout, in milliseconds */
1561
1562
  bool ocsp_check_ok; /* will be zero if the OCSP response TLS extension
1563
         * check failed (OCSP was old/unrelated or so). */
1564
1565
  heartbeat_state_t hb_state; /* for ping */
1566
1567
  recv_state_t recv_state; /* state of the receive function */
1568
1569
  /* if set, server and client random were set by the application */
1570
  bool sc_random_set;
1571
1572
0
#define INT_FLAG_NO_TLS13 (1LL << 60)
1573
  uint64_t flags; /* the flags in gnutls_init() and GNUTLS_INT_FLAGS */
1574
1575
  /* a verify callback to override the verify callback from the credentials
1576
   * structure */
1577
  gnutls_certificate_verify_function *verify_callback;
1578
  gnutls_typed_vdata_st *vc_data;
1579
  gnutls_typed_vdata_st vc_sdata;
1580
  unsigned vc_elements;
1581
  unsigned vc_status;
1582
  unsigned int
1583
    additional_verify_flags; /* may be set by priorities or the vc functions */
1584
1585
  /* we append the verify flags because these can be set,
1586
   * either by this function or by gnutls_session_set_verify_cert().
1587
   * However, we ensure that a single profile is set. */
1588
#define ADD_PROFILE_VFLAGS(session, vflags)                           \
1589
0
  do {                                                          \
1590
0
    if ((session->internals.additional_verify_flags &     \
1591
0
         GNUTLS_VFLAGS_PROFILE_MASK) &&                   \
1592
0
        (vflags & GNUTLS_VFLAGS_PROFILE_MASK))            \
1593
0
      session->internals.additional_verify_flags &= \
1594
0
        ~GNUTLS_VFLAGS_PROFILE_MASK;          \
1595
0
    session->internals.additional_verify_flags |= vflags; \
1596
0
  } while (0)
1597
1598
  /* the SHA256 hash of the peer's certificate */
1599
  uint8_t cert_hash[32];
1600
  bool cert_hash_set;
1601
1602
  /* The saved username from PSK or SRP auth */
1603
  char *saved_username;
1604
  /* Length of the saved username without the NULL terminating byte.
1605
   * Must be set to -1 when saved username is NULL
1606
   */
1607
  int saved_username_size;
1608
1609
  /* Needed for TCP Fast Open (TFO), set by gnutls_transport_set_fastopen() */
1610
  tfo_st tfo;
1611
1612
  struct gnutls_supplemental_entry_st *rsup;
1613
  unsigned rsup_size;
1614
1615
  struct hello_ext_entry_st *rexts;
1616
  unsigned rexts_size;
1617
1618
  struct { /* ext_data[id] contains data for extension_t id */
1619
    gnutls_ext_priv_data_t priv;
1620
    gnutls_ext_priv_data_t resumed_priv;
1621
    uint8_t set;
1622
    uint8_t resumed_set;
1623
  } ext_data[MAX_EXT_TYPES];
1624
1625
  /* In case of a client holds the extensions we sent to the peer;
1626
   * otherwise the extensions we received from the client. This is
1627
   * an OR of (1<<extensions_t values).
1628
   */
1629
  ext_track_t used_exts;
1630
1631
  gnutls_ext_flags_t
1632
    ext_msg; /* accessed through _gnutls_ext_get/set_msg() */
1633
1634
  /* this is not the negotiated max_record_recv_size, but the actual maximum
1635
   * receive size */
1636
  unsigned max_recv_size;
1637
1638
  /* candidate groups to be selected for security params groups, they are
1639
   * prioritized in isolation under TLS1.2 */
1640
  const gnutls_group_entry_st *cand_ec_group;
1641
  const gnutls_group_entry_st *cand_dh_group;
1642
  /* used under TLS1.3+ */
1643
  const gnutls_group_entry_st *cand_group;
1644
1645
  /* the ciphersuite received in HRR */
1646
  uint8_t hrr_cs[2];
1647
1648
  /* this is only used under TLS1.2 or earlier */
1649
  int session_ticket_renew;
1650
1651
  tls13_ticket_st tls13_ticket;
1652
1653
  /* the amount of early data received so far */
1654
  uint32_t early_data_received;
1655
1656
  /* anti-replay measure for 0-RTT mode */
1657
  gnutls_anti_replay_t anti_replay;
1658
1659
  /* Protects _gnutls_epoch_gc() from _gnutls_epoch_get(); these may be
1660
   * called in parallel when false start is used and false start is used. */
1661
  void *epoch_lock;
1662
1663
  /* indicates whether or not was KTLS initialized properly. */
1664
  int ktls_enabled;
1665
1666
  /* Compression method for certificate compression */
1667
  gnutls_compression_method_t compress_certificate_method;
1668
1669
  /* To shuffle extension sending order */
1670
  extensions_t client_hello_exts[MAX_EXT_TYPES];
1671
  bool client_hello_exts_set;
1672
1673
  /* If you add anything here, check _gnutls_handshake_internal_state_clear().
1674
   */
1675
} internals_st;
1676
1677
/* Maximum number of epochs we keep around. */
1678
0
#define MAX_EPOCH_INDEX 4
1679
1680
#define reset_cand_groups(session)                                            \
1681
0
  session->internals.cand_ec_group = session->internals.cand_dh_group = \
1682
0
    session->internals.cand_group = NULL
1683
1684
struct gnutls_session_int {
1685
  security_parameters_st security_parameters;
1686
  record_parameters_st *record_parameters[MAX_EPOCH_INDEX];
1687
  internals_st internals;
1688
  gnutls_key_st key;
1689
};
1690
1691
/* functions
1692
 */
1693
void _gnutls_free_auth_info(gnutls_session_t session);
1694
1695
/* These two macros return the advertised TLS version of
1696
 * the peer.
1697
 */
1698
#define _gnutls_get_adv_version_major(session) \
1699
0
  session->internals.adv_version_major
1700
1701
#define _gnutls_get_adv_version_minor(session) \
1702
0
  session->internals.adv_version_minor
1703
1704
#define set_adv_version(session, major, minor)        \
1705
0
  session->internals.adv_version_major = major; \
1706
0
  session->internals.adv_version_minor = minor
1707
1708
int _gnutls_is_secure_mem_null(const void *);
1709
1710
inline static const version_entry_st *get_version(gnutls_session_t session)
1711
0
{
1712
0
  return session->security_parameters.pversion;
1713
0
}
Unexecuted instantiation: record.c:get_version
Unexecuted instantiation: debug.c:get_version
Unexecuted instantiation: cipher.c:get_version
Unexecuted instantiation: handshake-tls13.c:get_version
Unexecuted instantiation: mbuffers.c:get_version
Unexecuted instantiation: buffers.c:get_version
Unexecuted instantiation: handshake.c:get_version
Unexecuted instantiation: errors.c:get_version
Unexecuted instantiation: kx.c:get_version
Unexecuted instantiation: cipher-cbc.c:get_version
Unexecuted instantiation: priority.c:get_version
Unexecuted instantiation: hash_int.c:get_version
Unexecuted instantiation: cipher_int.c:get_version
Unexecuted instantiation: session.c:get_version
Unexecuted instantiation: db.c:get_version
Unexecuted instantiation: hello_ext.c:get_version
Unexecuted instantiation: auth.c:get_version
Unexecuted instantiation: sslv2_compat.c:get_version
Unexecuted instantiation: datum.c:get_version
Unexecuted instantiation: session_pack.c:get_version
Unexecuted instantiation: cert-cred.c:get_version
Unexecuted instantiation: global.c:get_version
Unexecuted instantiation: constate.c:get_version
Unexecuted instantiation: mem.c:get_version
Unexecuted instantiation: fingerprint.c:get_version
Unexecuted instantiation: alert.c:get_version
Unexecuted instantiation: threads.c:get_version
Unexecuted instantiation: sockets.c:get_version
Unexecuted instantiation: system.c:get_version
Unexecuted instantiation: profiles.c:get_version
Unexecuted instantiation: str.c:get_version
Unexecuted instantiation: str-idna.c:get_version
Unexecuted instantiation: state.c:get_version
Unexecuted instantiation: cert-cred-x509.c:get_version
Unexecuted instantiation: supplemental.c:get_version
Unexecuted instantiation: random.c:get_version
Unexecuted instantiation: crypto-api.c:get_version
Unexecuted instantiation: privkey.c:get_version
Unexecuted instantiation: pcert.c:get_version
Unexecuted instantiation: pubkey.c:get_version
Unexecuted instantiation: dtls.c:get_version
Unexecuted instantiation: system_override.c:get_version
Unexecuted instantiation: crypto-backend.c:get_version
Unexecuted instantiation: fips.c:get_version
Unexecuted instantiation: safe-memfuncs.c:get_version
Unexecuted instantiation: atfork.c:get_version
Unexecuted instantiation: urls.c:get_version
Unexecuted instantiation: prf.c:get_version
Unexecuted instantiation: dh-session.c:get_version
Unexecuted instantiation: cert-session.c:get_version
Unexecuted instantiation: handshake-checks.c:get_version
Unexecuted instantiation: dtls-sw.c:get_version
Unexecuted instantiation: secrets.c:get_version
Unexecuted instantiation: extv.c:get_version
Unexecuted instantiation: ocsp-api.c:get_version
Unexecuted instantiation: iov.c:get_version
Unexecuted instantiation: ktls.c:get_version
Unexecuted instantiation: keys-dummy.c:get_version
Unexecuted instantiation: encrypted_extensions.c:get_version
Unexecuted instantiation: certificate_request.c:get_version
Unexecuted instantiation: certificate_verify.c:get_version
Unexecuted instantiation: tls13-sig.c:get_version
Unexecuted instantiation: finished.c:get_version
Unexecuted instantiation: key_update.c:get_version
Unexecuted instantiation: hello_retry.c:get_version
Unexecuted instantiation: session_ticket.c:get_version
Unexecuted instantiation: certificate.c:get_version
Unexecuted instantiation: early_data.c:get_version
Unexecuted instantiation: post_handshake.c:get_version
Unexecuted instantiation: srp.c:get_version
Unexecuted instantiation: psk.c:get_version
Unexecuted instantiation: common.c:get_version
Unexecuted instantiation: crl.c:get_version
Unexecuted instantiation: crq.c:get_version
Unexecuted instantiation: dn.c:get_version
Unexecuted instantiation: extensions.c:get_version
Unexecuted instantiation: hostname-verify.c:get_version
Unexecuted instantiation: key_decode.c:get_version
Unexecuted instantiation: key_encode.c:get_version
Unexecuted instantiation: mpi.c:get_version
Unexecuted instantiation: ocsp.c:get_version
Unexecuted instantiation: output.c:get_version
Unexecuted instantiation: pkcs12.c:get_version
Unexecuted instantiation: pkcs12_bag.c:get_version
Unexecuted instantiation: pkcs12_encr.c:get_version
Unexecuted instantiation: pkcs7-crypt.c:get_version
Unexecuted instantiation: privkey_openssl.c:get_version
Unexecuted instantiation: privkey_pkcs8.c:get_version
Unexecuted instantiation: privkey_pkcs8_pbes1.c:get_version
Unexecuted instantiation: prov-seed.c:get_version
Unexecuted instantiation: sign.c:get_version
Unexecuted instantiation: spki.c:get_version
Unexecuted instantiation: time.c:get_version
Unexecuted instantiation: tls_features.c:get_version
Unexecuted instantiation: verify-high.c:get_version
Unexecuted instantiation: verify-high2.c:get_version
Unexecuted instantiation: verify.c:get_version
Unexecuted instantiation: virt-san.c:get_version
Unexecuted instantiation: x509.c:get_version
Unexecuted instantiation: x509_dn.c:get_version
Unexecuted instantiation: x509_ext.c:get_version
Unexecuted instantiation: x509_write.c:get_version
Unexecuted instantiation: alpn.c:get_version
Unexecuted instantiation: client_cert_type.c:get_version
Unexecuted instantiation: compress_certificate.c:get_version
Unexecuted instantiation: cookie.c:get_version
Unexecuted instantiation: dumbfw.c:get_version
Unexecuted instantiation: ec_point_formats.c:get_version
Unexecuted instantiation: etm.c:get_version
Unexecuted instantiation: ext_master_secret.c:get_version
Unexecuted instantiation: heartbeat.c:get_version
Unexecuted instantiation: key_share.c:get_version
Unexecuted instantiation: max_record.c:get_version
Unexecuted instantiation: pre_shared_key.c:get_version
Unexecuted instantiation: psk_ke_modes.c:get_version
Unexecuted instantiation: record_size_limit.c:get_version
Unexecuted instantiation: safe_renegotiation.c:get_version
Unexecuted instantiation: server_cert_type.c:get_version
Unexecuted instantiation: server_name.c:get_version
Unexecuted instantiation: signature.c:get_version
Unexecuted instantiation: srtp.c:get_version
Unexecuted instantiation: status_request.c:get_version
Unexecuted instantiation: supported_groups.c:get_version
Unexecuted instantiation: supported_versions.c:get_version
Unexecuted instantiation: cert.c:get_version
Unexecuted instantiation: dh_common.c:get_version
Unexecuted instantiation: psk_passwd.c:get_version
Unexecuted instantiation: cert_types.c:get_version
Unexecuted instantiation: ciphers.c:get_version
Unexecuted instantiation: ciphersuites.c:get_version
Unexecuted instantiation: ecc.c:get_version
Unexecuted instantiation: groups.c:get_version
Unexecuted instantiation: mac.c:get_version
Unexecuted instantiation: protocols.c:get_version
Unexecuted instantiation: publickey.c:get_version
Unexecuted instantiation: secparams.c:get_version
Unexecuted instantiation: accelerated.c:get_version
Unexecuted instantiation: cryptodev.c:get_version
Unexecuted instantiation: x86-common.c:get_version
Unexecuted instantiation: gost28147.c:get_version
Unexecuted instantiation: init.c:get_version
Unexecuted instantiation: pk.c:get_version
Unexecuted instantiation: rnd.c:get_version
Unexecuted instantiation: rsa-keygen-fips186.c:get_version
Unexecuted instantiation: sysrng-linux.c:get_version
Unexecuted instantiation: tls1-prf.c:get_version
Unexecuted instantiation: compress.c:get_version
Unexecuted instantiation: dh.c:get_version
Unexecuted instantiation: x509_b64.c:get_version
Unexecuted instantiation: tls-sig.c:get_version
Unexecuted instantiation: certs.c:get_version
Unexecuted instantiation: str-iconv.c:get_version
Unexecuted instantiation: str-unicode.c:get_version
Unexecuted instantiation: file.c:get_version
Unexecuted instantiation: pin.c:get_version
Unexecuted instantiation: dh-primes.c:get_version
Unexecuted instantiation: hello_ext_lib.c:get_version
Unexecuted instantiation: stek.c:get_version
Unexecuted instantiation: pathbuf.c:get_version
Unexecuted instantiation: psk_ext_parser.c:get_version
Unexecuted instantiation: anti_replay.c:get_version
Unexecuted instantiation: attributes.c:get_version
Unexecuted instantiation: email-verify.c:get_version
Unexecuted instantiation: ip.c:get_version
Unexecuted instantiation: krb5.c:get_version
Unexecuted instantiation: name_constraints.c:get_version
Unexecuted instantiation: anon.c:get_version
Unexecuted instantiation: anon_ecdh.c:get_version
Unexecuted instantiation: dhe.c:get_version
Unexecuted instantiation: dhe_psk.c:get_version
Unexecuted instantiation: ecdhe.c:get_version
Unexecuted instantiation: rsa.c:get_version
Unexecuted instantiation: rsa_psk.c:get_version
Unexecuted instantiation: vko_gost.c:get_version
Unexecuted instantiation: aes-cbc-x86-aesni.c:get_version
Unexecuted instantiation: aes-cbc-x86-ssse3.c:get_version
Unexecuted instantiation: aes-ccm-x86-aesni.c:get_version
Unexecuted instantiation: aes-gcm-padlock.c:get_version
Unexecuted instantiation: aes-gcm-x86-aesni.c:get_version
Unexecuted instantiation: aes-gcm-x86-pclmul-avx.c:get_version
Unexecuted instantiation: aes-gcm-x86-pclmul.c:get_version
Unexecuted instantiation: aes-gcm-x86-ssse3.c:get_version
Unexecuted instantiation: aes-padlock.c:get_version
Unexecuted instantiation: aes-xts-x86-aesni.c:get_version
Unexecuted instantiation: hmac-padlock.c:get_version
Unexecuted instantiation: hmac-x86-ssse3.c:get_version
Unexecuted instantiation: sha-padlock.c:get_version
Unexecuted instantiation: sha-x86-ssse3.c:get_version
Unexecuted instantiation: bignum-le.c:get_version
Unexecuted instantiation: dsa-compute-k.c:get_version
Unexecuted instantiation: dsa-keygen-fips186.c:get_version
Unexecuted instantiation: dsa-validate.c:get_version
Unexecuted instantiation: ecdsa-compute-k.c:get_version
Unexecuted instantiation: gostdsa-mask.c:get_version
Unexecuted instantiation: provable-prime.c:get_version
Unexecuted instantiation: vko.c:get_version
Unexecuted instantiation: gost_keywrap.c:get_version
Unexecuted instantiation: gost-wrap.c:get_version
1714
1715
inline static unsigned get_num_version(gnutls_session_t session)
1716
0
{
1717
0
  if (likely(session->security_parameters.pversion != NULL))
1718
0
    return session->security_parameters.pversion->id;
1719
0
  else
1720
0
    return GNUTLS_VERSION_UNKNOWN;
1721
0
}
Unexecuted instantiation: record.c:get_num_version
Unexecuted instantiation: debug.c:get_num_version
Unexecuted instantiation: cipher.c:get_num_version
Unexecuted instantiation: handshake-tls13.c:get_num_version
Unexecuted instantiation: mbuffers.c:get_num_version
Unexecuted instantiation: buffers.c:get_num_version
Unexecuted instantiation: handshake.c:get_num_version
Unexecuted instantiation: errors.c:get_num_version
Unexecuted instantiation: kx.c:get_num_version
Unexecuted instantiation: cipher-cbc.c:get_num_version
Unexecuted instantiation: priority.c:get_num_version
Unexecuted instantiation: hash_int.c:get_num_version
Unexecuted instantiation: cipher_int.c:get_num_version
Unexecuted instantiation: session.c:get_num_version
Unexecuted instantiation: db.c:get_num_version
Unexecuted instantiation: hello_ext.c:get_num_version
Unexecuted instantiation: auth.c:get_num_version
Unexecuted instantiation: sslv2_compat.c:get_num_version
Unexecuted instantiation: datum.c:get_num_version
Unexecuted instantiation: session_pack.c:get_num_version
Unexecuted instantiation: cert-cred.c:get_num_version
Unexecuted instantiation: global.c:get_num_version
Unexecuted instantiation: constate.c:get_num_version
Unexecuted instantiation: mem.c:get_num_version
Unexecuted instantiation: fingerprint.c:get_num_version
Unexecuted instantiation: alert.c:get_num_version
Unexecuted instantiation: threads.c:get_num_version
Unexecuted instantiation: sockets.c:get_num_version
Unexecuted instantiation: system.c:get_num_version
Unexecuted instantiation: profiles.c:get_num_version
Unexecuted instantiation: str.c:get_num_version
Unexecuted instantiation: str-idna.c:get_num_version
Unexecuted instantiation: state.c:get_num_version
Unexecuted instantiation: cert-cred-x509.c:get_num_version
Unexecuted instantiation: supplemental.c:get_num_version
Unexecuted instantiation: random.c:get_num_version
Unexecuted instantiation: crypto-api.c:get_num_version
Unexecuted instantiation: privkey.c:get_num_version
Unexecuted instantiation: pcert.c:get_num_version
Unexecuted instantiation: pubkey.c:get_num_version
Unexecuted instantiation: dtls.c:get_num_version
Unexecuted instantiation: system_override.c:get_num_version
Unexecuted instantiation: crypto-backend.c:get_num_version
Unexecuted instantiation: fips.c:get_num_version
Unexecuted instantiation: safe-memfuncs.c:get_num_version
Unexecuted instantiation: atfork.c:get_num_version
Unexecuted instantiation: urls.c:get_num_version
Unexecuted instantiation: prf.c:get_num_version
Unexecuted instantiation: dh-session.c:get_num_version
Unexecuted instantiation: cert-session.c:get_num_version
Unexecuted instantiation: handshake-checks.c:get_num_version
Unexecuted instantiation: dtls-sw.c:get_num_version
Unexecuted instantiation: secrets.c:get_num_version
Unexecuted instantiation: extv.c:get_num_version
Unexecuted instantiation: ocsp-api.c:get_num_version
Unexecuted instantiation: iov.c:get_num_version
Unexecuted instantiation: ktls.c:get_num_version
Unexecuted instantiation: keys-dummy.c:get_num_version
Unexecuted instantiation: encrypted_extensions.c:get_num_version
Unexecuted instantiation: certificate_request.c:get_num_version
Unexecuted instantiation: certificate_verify.c:get_num_version
Unexecuted instantiation: tls13-sig.c:get_num_version
Unexecuted instantiation: finished.c:get_num_version
Unexecuted instantiation: key_update.c:get_num_version
Unexecuted instantiation: hello_retry.c:get_num_version
Unexecuted instantiation: session_ticket.c:get_num_version
Unexecuted instantiation: certificate.c:get_num_version
Unexecuted instantiation: early_data.c:get_num_version
Unexecuted instantiation: post_handshake.c:get_num_version
Unexecuted instantiation: srp.c:get_num_version
Unexecuted instantiation: psk.c:get_num_version
Unexecuted instantiation: common.c:get_num_version
Unexecuted instantiation: crl.c:get_num_version
Unexecuted instantiation: crq.c:get_num_version
Unexecuted instantiation: dn.c:get_num_version
Unexecuted instantiation: extensions.c:get_num_version
Unexecuted instantiation: hostname-verify.c:get_num_version
Unexecuted instantiation: key_decode.c:get_num_version
Unexecuted instantiation: key_encode.c:get_num_version
Unexecuted instantiation: mpi.c:get_num_version
Unexecuted instantiation: ocsp.c:get_num_version
Unexecuted instantiation: output.c:get_num_version
Unexecuted instantiation: pkcs12.c:get_num_version
Unexecuted instantiation: pkcs12_bag.c:get_num_version
Unexecuted instantiation: pkcs12_encr.c:get_num_version
Unexecuted instantiation: pkcs7-crypt.c:get_num_version
Unexecuted instantiation: privkey_openssl.c:get_num_version
Unexecuted instantiation: privkey_pkcs8.c:get_num_version
Unexecuted instantiation: privkey_pkcs8_pbes1.c:get_num_version
Unexecuted instantiation: prov-seed.c:get_num_version
Unexecuted instantiation: sign.c:get_num_version
Unexecuted instantiation: spki.c:get_num_version
Unexecuted instantiation: time.c:get_num_version
Unexecuted instantiation: tls_features.c:get_num_version
Unexecuted instantiation: verify-high.c:get_num_version
Unexecuted instantiation: verify-high2.c:get_num_version
Unexecuted instantiation: verify.c:get_num_version
Unexecuted instantiation: virt-san.c:get_num_version
Unexecuted instantiation: x509.c:get_num_version
Unexecuted instantiation: x509_dn.c:get_num_version
Unexecuted instantiation: x509_ext.c:get_num_version
Unexecuted instantiation: x509_write.c:get_num_version
Unexecuted instantiation: alpn.c:get_num_version
Unexecuted instantiation: client_cert_type.c:get_num_version
Unexecuted instantiation: compress_certificate.c:get_num_version
Unexecuted instantiation: cookie.c:get_num_version
Unexecuted instantiation: dumbfw.c:get_num_version
Unexecuted instantiation: ec_point_formats.c:get_num_version
Unexecuted instantiation: etm.c:get_num_version
Unexecuted instantiation: ext_master_secret.c:get_num_version
Unexecuted instantiation: heartbeat.c:get_num_version
Unexecuted instantiation: key_share.c:get_num_version
Unexecuted instantiation: max_record.c:get_num_version
Unexecuted instantiation: pre_shared_key.c:get_num_version
Unexecuted instantiation: psk_ke_modes.c:get_num_version
Unexecuted instantiation: record_size_limit.c:get_num_version
Unexecuted instantiation: safe_renegotiation.c:get_num_version
Unexecuted instantiation: server_cert_type.c:get_num_version
Unexecuted instantiation: server_name.c:get_num_version
Unexecuted instantiation: signature.c:get_num_version
Unexecuted instantiation: srtp.c:get_num_version
Unexecuted instantiation: status_request.c:get_num_version
Unexecuted instantiation: supported_groups.c:get_num_version
Unexecuted instantiation: supported_versions.c:get_num_version
Unexecuted instantiation: cert.c:get_num_version
Unexecuted instantiation: dh_common.c:get_num_version
Unexecuted instantiation: psk_passwd.c:get_num_version
Unexecuted instantiation: cert_types.c:get_num_version
Unexecuted instantiation: ciphers.c:get_num_version
Unexecuted instantiation: ciphersuites.c:get_num_version
Unexecuted instantiation: ecc.c:get_num_version
Unexecuted instantiation: groups.c:get_num_version
Unexecuted instantiation: mac.c:get_num_version
Unexecuted instantiation: protocols.c:get_num_version
Unexecuted instantiation: publickey.c:get_num_version
Unexecuted instantiation: secparams.c:get_num_version
Unexecuted instantiation: accelerated.c:get_num_version
Unexecuted instantiation: cryptodev.c:get_num_version
Unexecuted instantiation: x86-common.c:get_num_version
Unexecuted instantiation: gost28147.c:get_num_version
Unexecuted instantiation: init.c:get_num_version
Unexecuted instantiation: pk.c:get_num_version
Unexecuted instantiation: rnd.c:get_num_version
Unexecuted instantiation: rsa-keygen-fips186.c:get_num_version
Unexecuted instantiation: sysrng-linux.c:get_num_version
Unexecuted instantiation: tls1-prf.c:get_num_version
Unexecuted instantiation: compress.c:get_num_version
Unexecuted instantiation: dh.c:get_num_version
Unexecuted instantiation: x509_b64.c:get_num_version
Unexecuted instantiation: tls-sig.c:get_num_version
Unexecuted instantiation: certs.c:get_num_version
Unexecuted instantiation: str-iconv.c:get_num_version
Unexecuted instantiation: str-unicode.c:get_num_version
Unexecuted instantiation: file.c:get_num_version
Unexecuted instantiation: pin.c:get_num_version
Unexecuted instantiation: dh-primes.c:get_num_version
Unexecuted instantiation: hello_ext_lib.c:get_num_version
Unexecuted instantiation: stek.c:get_num_version
Unexecuted instantiation: pathbuf.c:get_num_version
Unexecuted instantiation: psk_ext_parser.c:get_num_version
Unexecuted instantiation: anti_replay.c:get_num_version
Unexecuted instantiation: attributes.c:get_num_version
Unexecuted instantiation: email-verify.c:get_num_version
Unexecuted instantiation: ip.c:get_num_version
Unexecuted instantiation: krb5.c:get_num_version
Unexecuted instantiation: name_constraints.c:get_num_version
Unexecuted instantiation: anon.c:get_num_version
Unexecuted instantiation: anon_ecdh.c:get_num_version
Unexecuted instantiation: dhe.c:get_num_version
Unexecuted instantiation: dhe_psk.c:get_num_version
Unexecuted instantiation: ecdhe.c:get_num_version
Unexecuted instantiation: rsa.c:get_num_version
Unexecuted instantiation: rsa_psk.c:get_num_version
Unexecuted instantiation: vko_gost.c:get_num_version
Unexecuted instantiation: aes-cbc-x86-aesni.c:get_num_version
Unexecuted instantiation: aes-cbc-x86-ssse3.c:get_num_version
Unexecuted instantiation: aes-ccm-x86-aesni.c:get_num_version
Unexecuted instantiation: aes-gcm-padlock.c:get_num_version
Unexecuted instantiation: aes-gcm-x86-aesni.c:get_num_version
Unexecuted instantiation: aes-gcm-x86-pclmul-avx.c:get_num_version
Unexecuted instantiation: aes-gcm-x86-pclmul.c:get_num_version
Unexecuted instantiation: aes-gcm-x86-ssse3.c:get_num_version
Unexecuted instantiation: aes-padlock.c:get_num_version
Unexecuted instantiation: aes-xts-x86-aesni.c:get_num_version
Unexecuted instantiation: hmac-padlock.c:get_num_version
Unexecuted instantiation: hmac-x86-ssse3.c:get_num_version
Unexecuted instantiation: sha-padlock.c:get_num_version
Unexecuted instantiation: sha-x86-ssse3.c:get_num_version
Unexecuted instantiation: bignum-le.c:get_num_version
Unexecuted instantiation: dsa-compute-k.c:get_num_version
Unexecuted instantiation: dsa-keygen-fips186.c:get_num_version
Unexecuted instantiation: dsa-validate.c:get_num_version
Unexecuted instantiation: ecdsa-compute-k.c:get_num_version
Unexecuted instantiation: gostdsa-mask.c:get_num_version
Unexecuted instantiation: provable-prime.c:get_num_version
Unexecuted instantiation: vko.c:get_num_version
Unexecuted instantiation: gost_keywrap.c:get_num_version
Unexecuted instantiation: gost-wrap.c:get_num_version
1722
1723
void _gnutls_priority_update_fips(void);
1724
void _gnutls_priority_update_non_aesni(void);
1725
extern unsigned _gnutls_disable_tls13;
1726
1727
0
#define timespec_sub_ms _gnutls_timespec_sub_ms
1728
unsigned int
1729
/* returns a-b in ms */
1730
timespec_sub_ms(struct timespec *a, struct timespec *b);
1731
1732
inline static int _gnutls_timespec_cmp(struct timespec *a, struct timespec *b)
1733
0
{
1734
0
  if (a->tv_sec < b->tv_sec)
1735
0
    return -1;
1736
0
  if (a->tv_sec > b->tv_sec)
1737
0
    return 1;
1738
0
  if (a->tv_nsec < b->tv_nsec)
1739
0
    return -1;
1740
0
  if (a->tv_nsec > b->tv_nsec)
1741
0
    return 1;
1742
0
  return 0;
1743
0
}
Unexecuted instantiation: record.c:_gnutls_timespec_cmp
Unexecuted instantiation: debug.c:_gnutls_timespec_cmp
Unexecuted instantiation: cipher.c:_gnutls_timespec_cmp
Unexecuted instantiation: handshake-tls13.c:_gnutls_timespec_cmp
Unexecuted instantiation: mbuffers.c:_gnutls_timespec_cmp
Unexecuted instantiation: buffers.c:_gnutls_timespec_cmp
Unexecuted instantiation: handshake.c:_gnutls_timespec_cmp
Unexecuted instantiation: errors.c:_gnutls_timespec_cmp
Unexecuted instantiation: kx.c:_gnutls_timespec_cmp
Unexecuted instantiation: cipher-cbc.c:_gnutls_timespec_cmp
Unexecuted instantiation: priority.c:_gnutls_timespec_cmp
Unexecuted instantiation: hash_int.c:_gnutls_timespec_cmp
Unexecuted instantiation: cipher_int.c:_gnutls_timespec_cmp
Unexecuted instantiation: session.c:_gnutls_timespec_cmp
Unexecuted instantiation: db.c:_gnutls_timespec_cmp
Unexecuted instantiation: hello_ext.c:_gnutls_timespec_cmp
Unexecuted instantiation: auth.c:_gnutls_timespec_cmp
Unexecuted instantiation: sslv2_compat.c:_gnutls_timespec_cmp
Unexecuted instantiation: datum.c:_gnutls_timespec_cmp
Unexecuted instantiation: session_pack.c:_gnutls_timespec_cmp
Unexecuted instantiation: cert-cred.c:_gnutls_timespec_cmp
Unexecuted instantiation: global.c:_gnutls_timespec_cmp
Unexecuted instantiation: constate.c:_gnutls_timespec_cmp
Unexecuted instantiation: mem.c:_gnutls_timespec_cmp
Unexecuted instantiation: fingerprint.c:_gnutls_timespec_cmp
Unexecuted instantiation: alert.c:_gnutls_timespec_cmp
Unexecuted instantiation: threads.c:_gnutls_timespec_cmp
Unexecuted instantiation: sockets.c:_gnutls_timespec_cmp
Unexecuted instantiation: system.c:_gnutls_timespec_cmp
Unexecuted instantiation: profiles.c:_gnutls_timespec_cmp
Unexecuted instantiation: str.c:_gnutls_timespec_cmp
Unexecuted instantiation: str-idna.c:_gnutls_timespec_cmp
Unexecuted instantiation: state.c:_gnutls_timespec_cmp
Unexecuted instantiation: cert-cred-x509.c:_gnutls_timespec_cmp
Unexecuted instantiation: supplemental.c:_gnutls_timespec_cmp
Unexecuted instantiation: random.c:_gnutls_timespec_cmp
Unexecuted instantiation: crypto-api.c:_gnutls_timespec_cmp
Unexecuted instantiation: privkey.c:_gnutls_timespec_cmp
Unexecuted instantiation: pcert.c:_gnutls_timespec_cmp
Unexecuted instantiation: pubkey.c:_gnutls_timespec_cmp
Unexecuted instantiation: dtls.c:_gnutls_timespec_cmp
Unexecuted instantiation: system_override.c:_gnutls_timespec_cmp
Unexecuted instantiation: crypto-backend.c:_gnutls_timespec_cmp
Unexecuted instantiation: fips.c:_gnutls_timespec_cmp
Unexecuted instantiation: safe-memfuncs.c:_gnutls_timespec_cmp
Unexecuted instantiation: atfork.c:_gnutls_timespec_cmp
Unexecuted instantiation: urls.c:_gnutls_timespec_cmp
Unexecuted instantiation: prf.c:_gnutls_timespec_cmp
Unexecuted instantiation: dh-session.c:_gnutls_timespec_cmp
Unexecuted instantiation: cert-session.c:_gnutls_timespec_cmp
Unexecuted instantiation: handshake-checks.c:_gnutls_timespec_cmp
Unexecuted instantiation: dtls-sw.c:_gnutls_timespec_cmp
Unexecuted instantiation: secrets.c:_gnutls_timespec_cmp
Unexecuted instantiation: extv.c:_gnutls_timespec_cmp
Unexecuted instantiation: ocsp-api.c:_gnutls_timespec_cmp
Unexecuted instantiation: iov.c:_gnutls_timespec_cmp
Unexecuted instantiation: ktls.c:_gnutls_timespec_cmp
Unexecuted instantiation: keys-dummy.c:_gnutls_timespec_cmp
Unexecuted instantiation: encrypted_extensions.c:_gnutls_timespec_cmp
Unexecuted instantiation: certificate_request.c:_gnutls_timespec_cmp
Unexecuted instantiation: certificate_verify.c:_gnutls_timespec_cmp
Unexecuted instantiation: tls13-sig.c:_gnutls_timespec_cmp
Unexecuted instantiation: finished.c:_gnutls_timespec_cmp
Unexecuted instantiation: key_update.c:_gnutls_timespec_cmp
Unexecuted instantiation: hello_retry.c:_gnutls_timespec_cmp
Unexecuted instantiation: session_ticket.c:_gnutls_timespec_cmp
Unexecuted instantiation: certificate.c:_gnutls_timespec_cmp
Unexecuted instantiation: early_data.c:_gnutls_timespec_cmp
Unexecuted instantiation: post_handshake.c:_gnutls_timespec_cmp
Unexecuted instantiation: srp.c:_gnutls_timespec_cmp
Unexecuted instantiation: psk.c:_gnutls_timespec_cmp
Unexecuted instantiation: common.c:_gnutls_timespec_cmp
Unexecuted instantiation: crl.c:_gnutls_timespec_cmp
Unexecuted instantiation: crq.c:_gnutls_timespec_cmp
Unexecuted instantiation: dn.c:_gnutls_timespec_cmp
Unexecuted instantiation: extensions.c:_gnutls_timespec_cmp
Unexecuted instantiation: hostname-verify.c:_gnutls_timespec_cmp
Unexecuted instantiation: key_decode.c:_gnutls_timespec_cmp
Unexecuted instantiation: key_encode.c:_gnutls_timespec_cmp
Unexecuted instantiation: mpi.c:_gnutls_timespec_cmp
Unexecuted instantiation: ocsp.c:_gnutls_timespec_cmp
Unexecuted instantiation: output.c:_gnutls_timespec_cmp
Unexecuted instantiation: pkcs12.c:_gnutls_timespec_cmp
Unexecuted instantiation: pkcs12_bag.c:_gnutls_timespec_cmp
Unexecuted instantiation: pkcs12_encr.c:_gnutls_timespec_cmp
Unexecuted instantiation: pkcs7-crypt.c:_gnutls_timespec_cmp
Unexecuted instantiation: privkey_openssl.c:_gnutls_timespec_cmp
Unexecuted instantiation: privkey_pkcs8.c:_gnutls_timespec_cmp
Unexecuted instantiation: privkey_pkcs8_pbes1.c:_gnutls_timespec_cmp
Unexecuted instantiation: prov-seed.c:_gnutls_timespec_cmp
Unexecuted instantiation: sign.c:_gnutls_timespec_cmp
Unexecuted instantiation: spki.c:_gnutls_timespec_cmp
Unexecuted instantiation: time.c:_gnutls_timespec_cmp
Unexecuted instantiation: tls_features.c:_gnutls_timespec_cmp
Unexecuted instantiation: verify-high.c:_gnutls_timespec_cmp
Unexecuted instantiation: verify-high2.c:_gnutls_timespec_cmp
Unexecuted instantiation: verify.c:_gnutls_timespec_cmp
Unexecuted instantiation: virt-san.c:_gnutls_timespec_cmp
Unexecuted instantiation: x509.c:_gnutls_timespec_cmp
Unexecuted instantiation: x509_dn.c:_gnutls_timespec_cmp
Unexecuted instantiation: x509_ext.c:_gnutls_timespec_cmp
Unexecuted instantiation: x509_write.c:_gnutls_timespec_cmp
Unexecuted instantiation: alpn.c:_gnutls_timespec_cmp
Unexecuted instantiation: client_cert_type.c:_gnutls_timespec_cmp
Unexecuted instantiation: compress_certificate.c:_gnutls_timespec_cmp
Unexecuted instantiation: cookie.c:_gnutls_timespec_cmp
Unexecuted instantiation: dumbfw.c:_gnutls_timespec_cmp
Unexecuted instantiation: ec_point_formats.c:_gnutls_timespec_cmp
Unexecuted instantiation: etm.c:_gnutls_timespec_cmp
Unexecuted instantiation: ext_master_secret.c:_gnutls_timespec_cmp
Unexecuted instantiation: heartbeat.c:_gnutls_timespec_cmp
Unexecuted instantiation: key_share.c:_gnutls_timespec_cmp
Unexecuted instantiation: max_record.c:_gnutls_timespec_cmp
Unexecuted instantiation: pre_shared_key.c:_gnutls_timespec_cmp
Unexecuted instantiation: psk_ke_modes.c:_gnutls_timespec_cmp
Unexecuted instantiation: record_size_limit.c:_gnutls_timespec_cmp
Unexecuted instantiation: safe_renegotiation.c:_gnutls_timespec_cmp
Unexecuted instantiation: server_cert_type.c:_gnutls_timespec_cmp
Unexecuted instantiation: server_name.c:_gnutls_timespec_cmp
Unexecuted instantiation: signature.c:_gnutls_timespec_cmp
Unexecuted instantiation: srtp.c:_gnutls_timespec_cmp
Unexecuted instantiation: status_request.c:_gnutls_timespec_cmp
Unexecuted instantiation: supported_groups.c:_gnutls_timespec_cmp
Unexecuted instantiation: supported_versions.c:_gnutls_timespec_cmp
Unexecuted instantiation: cert.c:_gnutls_timespec_cmp
Unexecuted instantiation: dh_common.c:_gnutls_timespec_cmp
Unexecuted instantiation: psk_passwd.c:_gnutls_timespec_cmp
Unexecuted instantiation: cert_types.c:_gnutls_timespec_cmp
Unexecuted instantiation: ciphers.c:_gnutls_timespec_cmp
Unexecuted instantiation: ciphersuites.c:_gnutls_timespec_cmp
Unexecuted instantiation: ecc.c:_gnutls_timespec_cmp
Unexecuted instantiation: groups.c:_gnutls_timespec_cmp
Unexecuted instantiation: mac.c:_gnutls_timespec_cmp
Unexecuted instantiation: protocols.c:_gnutls_timespec_cmp
Unexecuted instantiation: publickey.c:_gnutls_timespec_cmp
Unexecuted instantiation: secparams.c:_gnutls_timespec_cmp
Unexecuted instantiation: accelerated.c:_gnutls_timespec_cmp
Unexecuted instantiation: cryptodev.c:_gnutls_timespec_cmp
Unexecuted instantiation: x86-common.c:_gnutls_timespec_cmp
Unexecuted instantiation: gost28147.c:_gnutls_timespec_cmp
Unexecuted instantiation: init.c:_gnutls_timespec_cmp
Unexecuted instantiation: pk.c:_gnutls_timespec_cmp
Unexecuted instantiation: rnd.c:_gnutls_timespec_cmp
Unexecuted instantiation: rsa-keygen-fips186.c:_gnutls_timespec_cmp
Unexecuted instantiation: sysrng-linux.c:_gnutls_timespec_cmp
Unexecuted instantiation: tls1-prf.c:_gnutls_timespec_cmp
Unexecuted instantiation: compress.c:_gnutls_timespec_cmp
Unexecuted instantiation: dh.c:_gnutls_timespec_cmp
Unexecuted instantiation: x509_b64.c:_gnutls_timespec_cmp
Unexecuted instantiation: tls-sig.c:_gnutls_timespec_cmp
Unexecuted instantiation: certs.c:_gnutls_timespec_cmp
Unexecuted instantiation: str-iconv.c:_gnutls_timespec_cmp
Unexecuted instantiation: str-unicode.c:_gnutls_timespec_cmp
Unexecuted instantiation: file.c:_gnutls_timespec_cmp
Unexecuted instantiation: pin.c:_gnutls_timespec_cmp
Unexecuted instantiation: dh-primes.c:_gnutls_timespec_cmp
Unexecuted instantiation: hello_ext_lib.c:_gnutls_timespec_cmp
Unexecuted instantiation: stek.c:_gnutls_timespec_cmp
Unexecuted instantiation: pathbuf.c:_gnutls_timespec_cmp
Unexecuted instantiation: psk_ext_parser.c:_gnutls_timespec_cmp
Unexecuted instantiation: anti_replay.c:_gnutls_timespec_cmp
Unexecuted instantiation: attributes.c:_gnutls_timespec_cmp
Unexecuted instantiation: email-verify.c:_gnutls_timespec_cmp
Unexecuted instantiation: ip.c:_gnutls_timespec_cmp
Unexecuted instantiation: krb5.c:_gnutls_timespec_cmp
Unexecuted instantiation: name_constraints.c:_gnutls_timespec_cmp
Unexecuted instantiation: anon.c:_gnutls_timespec_cmp
Unexecuted instantiation: anon_ecdh.c:_gnutls_timespec_cmp
Unexecuted instantiation: dhe.c:_gnutls_timespec_cmp
Unexecuted instantiation: dhe_psk.c:_gnutls_timespec_cmp
Unexecuted instantiation: ecdhe.c:_gnutls_timespec_cmp
Unexecuted instantiation: rsa.c:_gnutls_timespec_cmp
Unexecuted instantiation: rsa_psk.c:_gnutls_timespec_cmp
Unexecuted instantiation: vko_gost.c:_gnutls_timespec_cmp
Unexecuted instantiation: aes-cbc-x86-aesni.c:_gnutls_timespec_cmp
Unexecuted instantiation: aes-cbc-x86-ssse3.c:_gnutls_timespec_cmp
Unexecuted instantiation: aes-ccm-x86-aesni.c:_gnutls_timespec_cmp
Unexecuted instantiation: aes-gcm-padlock.c:_gnutls_timespec_cmp
Unexecuted instantiation: aes-gcm-x86-aesni.c:_gnutls_timespec_cmp
Unexecuted instantiation: aes-gcm-x86-pclmul-avx.c:_gnutls_timespec_cmp
Unexecuted instantiation: aes-gcm-x86-pclmul.c:_gnutls_timespec_cmp
Unexecuted instantiation: aes-gcm-x86-ssse3.c:_gnutls_timespec_cmp
Unexecuted instantiation: aes-padlock.c:_gnutls_timespec_cmp
Unexecuted instantiation: aes-xts-x86-aesni.c:_gnutls_timespec_cmp
Unexecuted instantiation: hmac-padlock.c:_gnutls_timespec_cmp
Unexecuted instantiation: hmac-x86-ssse3.c:_gnutls_timespec_cmp
Unexecuted instantiation: sha-padlock.c:_gnutls_timespec_cmp
Unexecuted instantiation: sha-x86-ssse3.c:_gnutls_timespec_cmp
Unexecuted instantiation: bignum-le.c:_gnutls_timespec_cmp
Unexecuted instantiation: dsa-compute-k.c:_gnutls_timespec_cmp
Unexecuted instantiation: dsa-keygen-fips186.c:_gnutls_timespec_cmp
Unexecuted instantiation: dsa-validate.c:_gnutls_timespec_cmp
Unexecuted instantiation: ecdsa-compute-k.c:_gnutls_timespec_cmp
Unexecuted instantiation: gostdsa-mask.c:_gnutls_timespec_cmp
Unexecuted instantiation: provable-prime.c:_gnutls_timespec_cmp
Unexecuted instantiation: vko.c:_gnutls_timespec_cmp
Unexecuted instantiation: gost_keywrap.c:_gnutls_timespec_cmp
Unexecuted instantiation: gost-wrap.c:_gnutls_timespec_cmp
1744
1745
#include "algorithms.h"
1746
inline static int _gnutls_set_current_version(gnutls_session_t s, unsigned v)
1747
0
{
1748
0
  s->security_parameters.pversion = version_to_entry(v);
1749
0
  if (s->security_parameters.pversion == NULL) {
1750
0
    return GNUTLS_E_UNSUPPORTED_VERSION_PACKET;
1751
0
  }
1752
0
  return 0;
1753
0
}
Unexecuted instantiation: record.c:_gnutls_set_current_version
Unexecuted instantiation: debug.c:_gnutls_set_current_version
Unexecuted instantiation: cipher.c:_gnutls_set_current_version
Unexecuted instantiation: handshake-tls13.c:_gnutls_set_current_version
Unexecuted instantiation: mbuffers.c:_gnutls_set_current_version
Unexecuted instantiation: buffers.c:_gnutls_set_current_version
Unexecuted instantiation: handshake.c:_gnutls_set_current_version
Unexecuted instantiation: errors.c:_gnutls_set_current_version
Unexecuted instantiation: kx.c:_gnutls_set_current_version
Unexecuted instantiation: cipher-cbc.c:_gnutls_set_current_version
Unexecuted instantiation: priority.c:_gnutls_set_current_version
Unexecuted instantiation: hash_int.c:_gnutls_set_current_version
Unexecuted instantiation: cipher_int.c:_gnutls_set_current_version
Unexecuted instantiation: session.c:_gnutls_set_current_version
Unexecuted instantiation: db.c:_gnutls_set_current_version
Unexecuted instantiation: hello_ext.c:_gnutls_set_current_version
Unexecuted instantiation: auth.c:_gnutls_set_current_version
Unexecuted instantiation: sslv2_compat.c:_gnutls_set_current_version
Unexecuted instantiation: datum.c:_gnutls_set_current_version
Unexecuted instantiation: session_pack.c:_gnutls_set_current_version
Unexecuted instantiation: cert-cred.c:_gnutls_set_current_version
Unexecuted instantiation: global.c:_gnutls_set_current_version
Unexecuted instantiation: constate.c:_gnutls_set_current_version
Unexecuted instantiation: mem.c:_gnutls_set_current_version
Unexecuted instantiation: fingerprint.c:_gnutls_set_current_version
Unexecuted instantiation: alert.c:_gnutls_set_current_version
Unexecuted instantiation: threads.c:_gnutls_set_current_version
Unexecuted instantiation: sockets.c:_gnutls_set_current_version
Unexecuted instantiation: system.c:_gnutls_set_current_version
Unexecuted instantiation: profiles.c:_gnutls_set_current_version
Unexecuted instantiation: str.c:_gnutls_set_current_version
Unexecuted instantiation: str-idna.c:_gnutls_set_current_version
Unexecuted instantiation: state.c:_gnutls_set_current_version
Unexecuted instantiation: cert-cred-x509.c:_gnutls_set_current_version
Unexecuted instantiation: supplemental.c:_gnutls_set_current_version
Unexecuted instantiation: random.c:_gnutls_set_current_version
Unexecuted instantiation: crypto-api.c:_gnutls_set_current_version
Unexecuted instantiation: privkey.c:_gnutls_set_current_version
Unexecuted instantiation: pcert.c:_gnutls_set_current_version
Unexecuted instantiation: pubkey.c:_gnutls_set_current_version
Unexecuted instantiation: dtls.c:_gnutls_set_current_version
Unexecuted instantiation: system_override.c:_gnutls_set_current_version
Unexecuted instantiation: crypto-backend.c:_gnutls_set_current_version
Unexecuted instantiation: fips.c:_gnutls_set_current_version
Unexecuted instantiation: safe-memfuncs.c:_gnutls_set_current_version
Unexecuted instantiation: atfork.c:_gnutls_set_current_version
Unexecuted instantiation: urls.c:_gnutls_set_current_version
Unexecuted instantiation: prf.c:_gnutls_set_current_version
Unexecuted instantiation: dh-session.c:_gnutls_set_current_version
Unexecuted instantiation: cert-session.c:_gnutls_set_current_version
Unexecuted instantiation: handshake-checks.c:_gnutls_set_current_version
Unexecuted instantiation: dtls-sw.c:_gnutls_set_current_version
Unexecuted instantiation: secrets.c:_gnutls_set_current_version
Unexecuted instantiation: extv.c:_gnutls_set_current_version
Unexecuted instantiation: ocsp-api.c:_gnutls_set_current_version
Unexecuted instantiation: iov.c:_gnutls_set_current_version
Unexecuted instantiation: ktls.c:_gnutls_set_current_version
Unexecuted instantiation: keys-dummy.c:_gnutls_set_current_version
Unexecuted instantiation: encrypted_extensions.c:_gnutls_set_current_version
Unexecuted instantiation: certificate_request.c:_gnutls_set_current_version
Unexecuted instantiation: certificate_verify.c:_gnutls_set_current_version
Unexecuted instantiation: tls13-sig.c:_gnutls_set_current_version
Unexecuted instantiation: finished.c:_gnutls_set_current_version
Unexecuted instantiation: key_update.c:_gnutls_set_current_version
Unexecuted instantiation: hello_retry.c:_gnutls_set_current_version
Unexecuted instantiation: session_ticket.c:_gnutls_set_current_version
Unexecuted instantiation: certificate.c:_gnutls_set_current_version
Unexecuted instantiation: early_data.c:_gnutls_set_current_version
Unexecuted instantiation: post_handshake.c:_gnutls_set_current_version
Unexecuted instantiation: srp.c:_gnutls_set_current_version
Unexecuted instantiation: psk.c:_gnutls_set_current_version
Unexecuted instantiation: common.c:_gnutls_set_current_version
Unexecuted instantiation: crl.c:_gnutls_set_current_version
Unexecuted instantiation: crq.c:_gnutls_set_current_version
Unexecuted instantiation: dn.c:_gnutls_set_current_version
Unexecuted instantiation: extensions.c:_gnutls_set_current_version
Unexecuted instantiation: hostname-verify.c:_gnutls_set_current_version
Unexecuted instantiation: key_decode.c:_gnutls_set_current_version
Unexecuted instantiation: key_encode.c:_gnutls_set_current_version
Unexecuted instantiation: mpi.c:_gnutls_set_current_version
Unexecuted instantiation: ocsp.c:_gnutls_set_current_version
Unexecuted instantiation: output.c:_gnutls_set_current_version
Unexecuted instantiation: pkcs12.c:_gnutls_set_current_version
Unexecuted instantiation: pkcs12_bag.c:_gnutls_set_current_version
Unexecuted instantiation: pkcs12_encr.c:_gnutls_set_current_version
Unexecuted instantiation: pkcs7-crypt.c:_gnutls_set_current_version
Unexecuted instantiation: privkey_openssl.c:_gnutls_set_current_version
Unexecuted instantiation: privkey_pkcs8.c:_gnutls_set_current_version
Unexecuted instantiation: privkey_pkcs8_pbes1.c:_gnutls_set_current_version
Unexecuted instantiation: prov-seed.c:_gnutls_set_current_version
Unexecuted instantiation: sign.c:_gnutls_set_current_version
Unexecuted instantiation: spki.c:_gnutls_set_current_version
Unexecuted instantiation: time.c:_gnutls_set_current_version
Unexecuted instantiation: tls_features.c:_gnutls_set_current_version
Unexecuted instantiation: verify-high.c:_gnutls_set_current_version
Unexecuted instantiation: verify-high2.c:_gnutls_set_current_version
Unexecuted instantiation: verify.c:_gnutls_set_current_version
Unexecuted instantiation: virt-san.c:_gnutls_set_current_version
Unexecuted instantiation: x509.c:_gnutls_set_current_version
Unexecuted instantiation: x509_dn.c:_gnutls_set_current_version
Unexecuted instantiation: x509_ext.c:_gnutls_set_current_version
Unexecuted instantiation: x509_write.c:_gnutls_set_current_version
Unexecuted instantiation: alpn.c:_gnutls_set_current_version
Unexecuted instantiation: client_cert_type.c:_gnutls_set_current_version
Unexecuted instantiation: compress_certificate.c:_gnutls_set_current_version
Unexecuted instantiation: cookie.c:_gnutls_set_current_version
Unexecuted instantiation: dumbfw.c:_gnutls_set_current_version
Unexecuted instantiation: ec_point_formats.c:_gnutls_set_current_version
Unexecuted instantiation: etm.c:_gnutls_set_current_version
Unexecuted instantiation: ext_master_secret.c:_gnutls_set_current_version
Unexecuted instantiation: heartbeat.c:_gnutls_set_current_version
Unexecuted instantiation: key_share.c:_gnutls_set_current_version
Unexecuted instantiation: max_record.c:_gnutls_set_current_version
Unexecuted instantiation: pre_shared_key.c:_gnutls_set_current_version
Unexecuted instantiation: psk_ke_modes.c:_gnutls_set_current_version
Unexecuted instantiation: record_size_limit.c:_gnutls_set_current_version
Unexecuted instantiation: safe_renegotiation.c:_gnutls_set_current_version
Unexecuted instantiation: server_cert_type.c:_gnutls_set_current_version
Unexecuted instantiation: server_name.c:_gnutls_set_current_version
Unexecuted instantiation: signature.c:_gnutls_set_current_version
Unexecuted instantiation: srtp.c:_gnutls_set_current_version
Unexecuted instantiation: status_request.c:_gnutls_set_current_version
Unexecuted instantiation: supported_groups.c:_gnutls_set_current_version
Unexecuted instantiation: supported_versions.c:_gnutls_set_current_version
Unexecuted instantiation: cert.c:_gnutls_set_current_version
Unexecuted instantiation: dh_common.c:_gnutls_set_current_version
Unexecuted instantiation: psk_passwd.c:_gnutls_set_current_version
Unexecuted instantiation: cert_types.c:_gnutls_set_current_version
Unexecuted instantiation: ciphers.c:_gnutls_set_current_version
Unexecuted instantiation: ciphersuites.c:_gnutls_set_current_version
Unexecuted instantiation: ecc.c:_gnutls_set_current_version
Unexecuted instantiation: groups.c:_gnutls_set_current_version
Unexecuted instantiation: mac.c:_gnutls_set_current_version
Unexecuted instantiation: protocols.c:_gnutls_set_current_version
Unexecuted instantiation: publickey.c:_gnutls_set_current_version
Unexecuted instantiation: secparams.c:_gnutls_set_current_version
Unexecuted instantiation: accelerated.c:_gnutls_set_current_version
Unexecuted instantiation: cryptodev.c:_gnutls_set_current_version
Unexecuted instantiation: x86-common.c:_gnutls_set_current_version
Unexecuted instantiation: gost28147.c:_gnutls_set_current_version
Unexecuted instantiation: init.c:_gnutls_set_current_version
Unexecuted instantiation: pk.c:_gnutls_set_current_version
Unexecuted instantiation: rnd.c:_gnutls_set_current_version
Unexecuted instantiation: rsa-keygen-fips186.c:_gnutls_set_current_version
Unexecuted instantiation: sysrng-linux.c:_gnutls_set_current_version
Unexecuted instantiation: tls1-prf.c:_gnutls_set_current_version
Unexecuted instantiation: compress.c:_gnutls_set_current_version
Unexecuted instantiation: dh.c:_gnutls_set_current_version
Unexecuted instantiation: x509_b64.c:_gnutls_set_current_version
Unexecuted instantiation: tls-sig.c:_gnutls_set_current_version
Unexecuted instantiation: certs.c:_gnutls_set_current_version
Unexecuted instantiation: str-iconv.c:_gnutls_set_current_version
Unexecuted instantiation: str-unicode.c:_gnutls_set_current_version
Unexecuted instantiation: file.c:_gnutls_set_current_version
Unexecuted instantiation: pin.c:_gnutls_set_current_version
Unexecuted instantiation: dh-primes.c:_gnutls_set_current_version
Unexecuted instantiation: hello_ext_lib.c:_gnutls_set_current_version
Unexecuted instantiation: stek.c:_gnutls_set_current_version
Unexecuted instantiation: pathbuf.c:_gnutls_set_current_version
Unexecuted instantiation: psk_ext_parser.c:_gnutls_set_current_version
Unexecuted instantiation: anti_replay.c:_gnutls_set_current_version
Unexecuted instantiation: attributes.c:_gnutls_set_current_version
Unexecuted instantiation: email-verify.c:_gnutls_set_current_version
Unexecuted instantiation: ip.c:_gnutls_set_current_version
Unexecuted instantiation: krb5.c:_gnutls_set_current_version
Unexecuted instantiation: name_constraints.c:_gnutls_set_current_version
Unexecuted instantiation: anon.c:_gnutls_set_current_version
Unexecuted instantiation: anon_ecdh.c:_gnutls_set_current_version
Unexecuted instantiation: dhe.c:_gnutls_set_current_version
Unexecuted instantiation: dhe_psk.c:_gnutls_set_current_version
Unexecuted instantiation: ecdhe.c:_gnutls_set_current_version
Unexecuted instantiation: rsa.c:_gnutls_set_current_version
Unexecuted instantiation: rsa_psk.c:_gnutls_set_current_version
Unexecuted instantiation: vko_gost.c:_gnutls_set_current_version
Unexecuted instantiation: aes-cbc-x86-aesni.c:_gnutls_set_current_version
Unexecuted instantiation: aes-cbc-x86-ssse3.c:_gnutls_set_current_version
Unexecuted instantiation: aes-ccm-x86-aesni.c:_gnutls_set_current_version
Unexecuted instantiation: aes-gcm-padlock.c:_gnutls_set_current_version
Unexecuted instantiation: aes-gcm-x86-aesni.c:_gnutls_set_current_version
Unexecuted instantiation: aes-gcm-x86-pclmul-avx.c:_gnutls_set_current_version
Unexecuted instantiation: aes-gcm-x86-pclmul.c:_gnutls_set_current_version
Unexecuted instantiation: aes-gcm-x86-ssse3.c:_gnutls_set_current_version
Unexecuted instantiation: aes-padlock.c:_gnutls_set_current_version
Unexecuted instantiation: aes-xts-x86-aesni.c:_gnutls_set_current_version
Unexecuted instantiation: hmac-padlock.c:_gnutls_set_current_version
Unexecuted instantiation: hmac-x86-ssse3.c:_gnutls_set_current_version
Unexecuted instantiation: sha-padlock.c:_gnutls_set_current_version
Unexecuted instantiation: sha-x86-ssse3.c:_gnutls_set_current_version
Unexecuted instantiation: bignum-le.c:_gnutls_set_current_version
Unexecuted instantiation: dsa-compute-k.c:_gnutls_set_current_version
Unexecuted instantiation: dsa-keygen-fips186.c:_gnutls_set_current_version
Unexecuted instantiation: dsa-validate.c:_gnutls_set_current_version
Unexecuted instantiation: ecdsa-compute-k.c:_gnutls_set_current_version
Unexecuted instantiation: gostdsa-mask.c:_gnutls_set_current_version
Unexecuted instantiation: provable-prime.c:_gnutls_set_current_version
Unexecuted instantiation: vko.c:_gnutls_set_current_version
Unexecuted instantiation: gost_keywrap.c:_gnutls_set_current_version
Unexecuted instantiation: gost-wrap.c:_gnutls_set_current_version
1754
1755
/* Returns the maximum amount of the plaintext to be sent, considering
1756
 * both user-specified/negotiated maximum values.
1757
 */
1758
inline static size_t max_record_send_size(gnutls_session_t session)
1759
0
{
1760
0
  size_t max;
1761
1762
0
  max = MIN(session->security_parameters.max_record_send_size,
1763
0
      session->security_parameters.max_user_record_send_size);
1764
1765
0
  if (IS_DTLS(session))
1766
0
    max = MIN(gnutls_dtls_get_data_mtu(session), max);
1767
1768
0
  return max;
1769
0
}
Unexecuted instantiation: record.c:max_record_send_size
Unexecuted instantiation: debug.c:max_record_send_size
Unexecuted instantiation: cipher.c:max_record_send_size
Unexecuted instantiation: handshake-tls13.c:max_record_send_size
Unexecuted instantiation: mbuffers.c:max_record_send_size
Unexecuted instantiation: buffers.c:max_record_send_size
Unexecuted instantiation: handshake.c:max_record_send_size
Unexecuted instantiation: errors.c:max_record_send_size
Unexecuted instantiation: kx.c:max_record_send_size
Unexecuted instantiation: cipher-cbc.c:max_record_send_size
Unexecuted instantiation: priority.c:max_record_send_size
Unexecuted instantiation: hash_int.c:max_record_send_size
Unexecuted instantiation: cipher_int.c:max_record_send_size
Unexecuted instantiation: session.c:max_record_send_size
Unexecuted instantiation: db.c:max_record_send_size
Unexecuted instantiation: hello_ext.c:max_record_send_size
Unexecuted instantiation: auth.c:max_record_send_size
Unexecuted instantiation: sslv2_compat.c:max_record_send_size
Unexecuted instantiation: datum.c:max_record_send_size
Unexecuted instantiation: session_pack.c:max_record_send_size
Unexecuted instantiation: cert-cred.c:max_record_send_size
Unexecuted instantiation: global.c:max_record_send_size
Unexecuted instantiation: constate.c:max_record_send_size
Unexecuted instantiation: mem.c:max_record_send_size
Unexecuted instantiation: fingerprint.c:max_record_send_size
Unexecuted instantiation: alert.c:max_record_send_size
Unexecuted instantiation: threads.c:max_record_send_size
Unexecuted instantiation: sockets.c:max_record_send_size
Unexecuted instantiation: system.c:max_record_send_size
Unexecuted instantiation: profiles.c:max_record_send_size
Unexecuted instantiation: str.c:max_record_send_size
Unexecuted instantiation: str-idna.c:max_record_send_size
Unexecuted instantiation: state.c:max_record_send_size
Unexecuted instantiation: cert-cred-x509.c:max_record_send_size
Unexecuted instantiation: supplemental.c:max_record_send_size
Unexecuted instantiation: random.c:max_record_send_size
Unexecuted instantiation: crypto-api.c:max_record_send_size
Unexecuted instantiation: privkey.c:max_record_send_size
Unexecuted instantiation: pcert.c:max_record_send_size
Unexecuted instantiation: pubkey.c:max_record_send_size
Unexecuted instantiation: dtls.c:max_record_send_size
Unexecuted instantiation: system_override.c:max_record_send_size
Unexecuted instantiation: crypto-backend.c:max_record_send_size
Unexecuted instantiation: fips.c:max_record_send_size
Unexecuted instantiation: safe-memfuncs.c:max_record_send_size
Unexecuted instantiation: atfork.c:max_record_send_size
Unexecuted instantiation: urls.c:max_record_send_size
Unexecuted instantiation: prf.c:max_record_send_size
Unexecuted instantiation: dh-session.c:max_record_send_size
Unexecuted instantiation: cert-session.c:max_record_send_size
Unexecuted instantiation: handshake-checks.c:max_record_send_size
Unexecuted instantiation: dtls-sw.c:max_record_send_size
Unexecuted instantiation: secrets.c:max_record_send_size
Unexecuted instantiation: extv.c:max_record_send_size
Unexecuted instantiation: ocsp-api.c:max_record_send_size
Unexecuted instantiation: iov.c:max_record_send_size
Unexecuted instantiation: ktls.c:max_record_send_size
Unexecuted instantiation: keys-dummy.c:max_record_send_size
Unexecuted instantiation: encrypted_extensions.c:max_record_send_size
Unexecuted instantiation: certificate_request.c:max_record_send_size
Unexecuted instantiation: certificate_verify.c:max_record_send_size
Unexecuted instantiation: tls13-sig.c:max_record_send_size
Unexecuted instantiation: finished.c:max_record_send_size
Unexecuted instantiation: key_update.c:max_record_send_size
Unexecuted instantiation: hello_retry.c:max_record_send_size
Unexecuted instantiation: session_ticket.c:max_record_send_size
Unexecuted instantiation: certificate.c:max_record_send_size
Unexecuted instantiation: early_data.c:max_record_send_size
Unexecuted instantiation: post_handshake.c:max_record_send_size
Unexecuted instantiation: srp.c:max_record_send_size
Unexecuted instantiation: psk.c:max_record_send_size
Unexecuted instantiation: common.c:max_record_send_size
Unexecuted instantiation: crl.c:max_record_send_size
Unexecuted instantiation: crq.c:max_record_send_size
Unexecuted instantiation: dn.c:max_record_send_size
Unexecuted instantiation: extensions.c:max_record_send_size
Unexecuted instantiation: hostname-verify.c:max_record_send_size
Unexecuted instantiation: key_decode.c:max_record_send_size
Unexecuted instantiation: key_encode.c:max_record_send_size
Unexecuted instantiation: mpi.c:max_record_send_size
Unexecuted instantiation: ocsp.c:max_record_send_size
Unexecuted instantiation: output.c:max_record_send_size
Unexecuted instantiation: pkcs12.c:max_record_send_size
Unexecuted instantiation: pkcs12_bag.c:max_record_send_size
Unexecuted instantiation: pkcs12_encr.c:max_record_send_size
Unexecuted instantiation: pkcs7-crypt.c:max_record_send_size
Unexecuted instantiation: privkey_openssl.c:max_record_send_size
Unexecuted instantiation: privkey_pkcs8.c:max_record_send_size
Unexecuted instantiation: privkey_pkcs8_pbes1.c:max_record_send_size
Unexecuted instantiation: prov-seed.c:max_record_send_size
Unexecuted instantiation: sign.c:max_record_send_size
Unexecuted instantiation: spki.c:max_record_send_size
Unexecuted instantiation: time.c:max_record_send_size
Unexecuted instantiation: tls_features.c:max_record_send_size
Unexecuted instantiation: verify-high.c:max_record_send_size
Unexecuted instantiation: verify-high2.c:max_record_send_size
Unexecuted instantiation: verify.c:max_record_send_size
Unexecuted instantiation: virt-san.c:max_record_send_size
Unexecuted instantiation: x509.c:max_record_send_size
Unexecuted instantiation: x509_dn.c:max_record_send_size
Unexecuted instantiation: x509_ext.c:max_record_send_size
Unexecuted instantiation: x509_write.c:max_record_send_size
Unexecuted instantiation: alpn.c:max_record_send_size
Unexecuted instantiation: client_cert_type.c:max_record_send_size
Unexecuted instantiation: compress_certificate.c:max_record_send_size
Unexecuted instantiation: cookie.c:max_record_send_size
Unexecuted instantiation: dumbfw.c:max_record_send_size
Unexecuted instantiation: ec_point_formats.c:max_record_send_size
Unexecuted instantiation: etm.c:max_record_send_size
Unexecuted instantiation: ext_master_secret.c:max_record_send_size
Unexecuted instantiation: heartbeat.c:max_record_send_size
Unexecuted instantiation: key_share.c:max_record_send_size
Unexecuted instantiation: max_record.c:max_record_send_size
Unexecuted instantiation: pre_shared_key.c:max_record_send_size
Unexecuted instantiation: psk_ke_modes.c:max_record_send_size
Unexecuted instantiation: record_size_limit.c:max_record_send_size
Unexecuted instantiation: safe_renegotiation.c:max_record_send_size
Unexecuted instantiation: server_cert_type.c:max_record_send_size
Unexecuted instantiation: server_name.c:max_record_send_size
Unexecuted instantiation: signature.c:max_record_send_size
Unexecuted instantiation: srtp.c:max_record_send_size
Unexecuted instantiation: status_request.c:max_record_send_size
Unexecuted instantiation: supported_groups.c:max_record_send_size
Unexecuted instantiation: supported_versions.c:max_record_send_size
Unexecuted instantiation: cert.c:max_record_send_size
Unexecuted instantiation: dh_common.c:max_record_send_size
Unexecuted instantiation: psk_passwd.c:max_record_send_size
Unexecuted instantiation: cert_types.c:max_record_send_size
Unexecuted instantiation: ciphers.c:max_record_send_size
Unexecuted instantiation: ciphersuites.c:max_record_send_size
Unexecuted instantiation: ecc.c:max_record_send_size
Unexecuted instantiation: groups.c:max_record_send_size
Unexecuted instantiation: mac.c:max_record_send_size
Unexecuted instantiation: protocols.c:max_record_send_size
Unexecuted instantiation: publickey.c:max_record_send_size
Unexecuted instantiation: secparams.c:max_record_send_size
Unexecuted instantiation: accelerated.c:max_record_send_size
Unexecuted instantiation: cryptodev.c:max_record_send_size
Unexecuted instantiation: x86-common.c:max_record_send_size
Unexecuted instantiation: gost28147.c:max_record_send_size
Unexecuted instantiation: init.c:max_record_send_size
Unexecuted instantiation: pk.c:max_record_send_size
Unexecuted instantiation: rnd.c:max_record_send_size
Unexecuted instantiation: rsa-keygen-fips186.c:max_record_send_size
Unexecuted instantiation: sysrng-linux.c:max_record_send_size
Unexecuted instantiation: tls1-prf.c:max_record_send_size
Unexecuted instantiation: compress.c:max_record_send_size
Unexecuted instantiation: dh.c:max_record_send_size
Unexecuted instantiation: x509_b64.c:max_record_send_size
Unexecuted instantiation: tls-sig.c:max_record_send_size
Unexecuted instantiation: certs.c:max_record_send_size
Unexecuted instantiation: str-iconv.c:max_record_send_size
Unexecuted instantiation: str-unicode.c:max_record_send_size
Unexecuted instantiation: file.c:max_record_send_size
Unexecuted instantiation: pin.c:max_record_send_size
Unexecuted instantiation: dh-primes.c:max_record_send_size
Unexecuted instantiation: hello_ext_lib.c:max_record_send_size
Unexecuted instantiation: stek.c:max_record_send_size
Unexecuted instantiation: pathbuf.c:max_record_send_size
Unexecuted instantiation: psk_ext_parser.c:max_record_send_size
Unexecuted instantiation: anti_replay.c:max_record_send_size
Unexecuted instantiation: attributes.c:max_record_send_size
Unexecuted instantiation: email-verify.c:max_record_send_size
Unexecuted instantiation: ip.c:max_record_send_size
Unexecuted instantiation: krb5.c:max_record_send_size
Unexecuted instantiation: name_constraints.c:max_record_send_size
Unexecuted instantiation: anon.c:max_record_send_size
Unexecuted instantiation: anon_ecdh.c:max_record_send_size
Unexecuted instantiation: dhe.c:max_record_send_size
Unexecuted instantiation: dhe_psk.c:max_record_send_size
Unexecuted instantiation: ecdhe.c:max_record_send_size
Unexecuted instantiation: rsa.c:max_record_send_size
Unexecuted instantiation: rsa_psk.c:max_record_send_size
Unexecuted instantiation: vko_gost.c:max_record_send_size
Unexecuted instantiation: aes-cbc-x86-aesni.c:max_record_send_size
Unexecuted instantiation: aes-cbc-x86-ssse3.c:max_record_send_size
Unexecuted instantiation: aes-ccm-x86-aesni.c:max_record_send_size
Unexecuted instantiation: aes-gcm-padlock.c:max_record_send_size
Unexecuted instantiation: aes-gcm-x86-aesni.c:max_record_send_size
Unexecuted instantiation: aes-gcm-x86-pclmul-avx.c:max_record_send_size
Unexecuted instantiation: aes-gcm-x86-pclmul.c:max_record_send_size
Unexecuted instantiation: aes-gcm-x86-ssse3.c:max_record_send_size
Unexecuted instantiation: aes-padlock.c:max_record_send_size
Unexecuted instantiation: aes-xts-x86-aesni.c:max_record_send_size
Unexecuted instantiation: hmac-padlock.c:max_record_send_size
Unexecuted instantiation: hmac-x86-ssse3.c:max_record_send_size
Unexecuted instantiation: sha-padlock.c:max_record_send_size
Unexecuted instantiation: sha-x86-ssse3.c:max_record_send_size
Unexecuted instantiation: bignum-le.c:max_record_send_size
Unexecuted instantiation: dsa-compute-k.c:max_record_send_size
Unexecuted instantiation: dsa-keygen-fips186.c:max_record_send_size
Unexecuted instantiation: dsa-validate.c:max_record_send_size
Unexecuted instantiation: ecdsa-compute-k.c:max_record_send_size
Unexecuted instantiation: gostdsa-mask.c:max_record_send_size
Unexecuted instantiation: provable-prime.c:max_record_send_size
Unexecuted instantiation: vko.c:max_record_send_size
Unexecuted instantiation: gost_keywrap.c:max_record_send_size
Unexecuted instantiation: gost-wrap.c:max_record_send_size
1770
1771
/* Returns the during the handshake negotiated certificate type(s).
1772
 * See state.c for the full function documentation.
1773
 *
1774
 * This function is made static inline for optimization reasons.
1775
 */
1776
inline static gnutls_certificate_type_t
1777
get_certificate_type(gnutls_session_t session, gnutls_ctype_target_t target)
1778
0
{
1779
0
  switch (target) {
1780
0
  case GNUTLS_CTYPE_CLIENT:
1781
0
    return session->security_parameters.client_ctype;
1782
0
    break;
1783
0
  case GNUTLS_CTYPE_SERVER:
1784
0
    return session->security_parameters.server_ctype;
1785
0
    break;
1786
0
  case GNUTLS_CTYPE_OURS:
1787
0
    if (IS_SERVER(session)) {
1788
0
      return session->security_parameters.server_ctype;
1789
0
    } else {
1790
0
      return session->security_parameters.client_ctype;
1791
0
    }
1792
0
    break;
1793
0
  case GNUTLS_CTYPE_PEERS:
1794
0
    if (IS_SERVER(session)) {
1795
0
      return session->security_parameters.client_ctype;
1796
0
    } else {
1797
0
      return session->security_parameters.server_ctype;
1798
0
    }
1799
0
    break;
1800
0
  default: // Illegal parameter passed
1801
0
    return GNUTLS_CRT_UNKNOWN;
1802
0
  }
1803
0
}
Unexecuted instantiation: record.c:get_certificate_type
Unexecuted instantiation: debug.c:get_certificate_type
Unexecuted instantiation: cipher.c:get_certificate_type
Unexecuted instantiation: handshake-tls13.c:get_certificate_type
Unexecuted instantiation: mbuffers.c:get_certificate_type
Unexecuted instantiation: buffers.c:get_certificate_type
Unexecuted instantiation: handshake.c:get_certificate_type
Unexecuted instantiation: errors.c:get_certificate_type
Unexecuted instantiation: kx.c:get_certificate_type
Unexecuted instantiation: cipher-cbc.c:get_certificate_type
Unexecuted instantiation: priority.c:get_certificate_type
Unexecuted instantiation: hash_int.c:get_certificate_type
Unexecuted instantiation: cipher_int.c:get_certificate_type
Unexecuted instantiation: session.c:get_certificate_type
Unexecuted instantiation: db.c:get_certificate_type
Unexecuted instantiation: hello_ext.c:get_certificate_type
Unexecuted instantiation: auth.c:get_certificate_type
Unexecuted instantiation: sslv2_compat.c:get_certificate_type
Unexecuted instantiation: datum.c:get_certificate_type
Unexecuted instantiation: session_pack.c:get_certificate_type
Unexecuted instantiation: cert-cred.c:get_certificate_type
Unexecuted instantiation: global.c:get_certificate_type
Unexecuted instantiation: constate.c:get_certificate_type
Unexecuted instantiation: mem.c:get_certificate_type
Unexecuted instantiation: fingerprint.c:get_certificate_type
Unexecuted instantiation: alert.c:get_certificate_type
Unexecuted instantiation: threads.c:get_certificate_type
Unexecuted instantiation: sockets.c:get_certificate_type
Unexecuted instantiation: system.c:get_certificate_type
Unexecuted instantiation: profiles.c:get_certificate_type
Unexecuted instantiation: str.c:get_certificate_type
Unexecuted instantiation: str-idna.c:get_certificate_type
Unexecuted instantiation: state.c:get_certificate_type
Unexecuted instantiation: cert-cred-x509.c:get_certificate_type
Unexecuted instantiation: supplemental.c:get_certificate_type
Unexecuted instantiation: random.c:get_certificate_type
Unexecuted instantiation: crypto-api.c:get_certificate_type
Unexecuted instantiation: privkey.c:get_certificate_type
Unexecuted instantiation: pcert.c:get_certificate_type
Unexecuted instantiation: pubkey.c:get_certificate_type
Unexecuted instantiation: dtls.c:get_certificate_type
Unexecuted instantiation: system_override.c:get_certificate_type
Unexecuted instantiation: crypto-backend.c:get_certificate_type
Unexecuted instantiation: fips.c:get_certificate_type
Unexecuted instantiation: safe-memfuncs.c:get_certificate_type
Unexecuted instantiation: atfork.c:get_certificate_type
Unexecuted instantiation: urls.c:get_certificate_type
Unexecuted instantiation: prf.c:get_certificate_type
Unexecuted instantiation: dh-session.c:get_certificate_type
Unexecuted instantiation: cert-session.c:get_certificate_type
Unexecuted instantiation: handshake-checks.c:get_certificate_type
Unexecuted instantiation: dtls-sw.c:get_certificate_type
Unexecuted instantiation: secrets.c:get_certificate_type
Unexecuted instantiation: extv.c:get_certificate_type
Unexecuted instantiation: ocsp-api.c:get_certificate_type
Unexecuted instantiation: iov.c:get_certificate_type
Unexecuted instantiation: ktls.c:get_certificate_type
Unexecuted instantiation: keys-dummy.c:get_certificate_type
Unexecuted instantiation: encrypted_extensions.c:get_certificate_type
Unexecuted instantiation: certificate_request.c:get_certificate_type
Unexecuted instantiation: certificate_verify.c:get_certificate_type
Unexecuted instantiation: tls13-sig.c:get_certificate_type
Unexecuted instantiation: finished.c:get_certificate_type
Unexecuted instantiation: key_update.c:get_certificate_type
Unexecuted instantiation: hello_retry.c:get_certificate_type
Unexecuted instantiation: session_ticket.c:get_certificate_type
Unexecuted instantiation: certificate.c:get_certificate_type
Unexecuted instantiation: early_data.c:get_certificate_type
Unexecuted instantiation: post_handshake.c:get_certificate_type
Unexecuted instantiation: srp.c:get_certificate_type
Unexecuted instantiation: psk.c:get_certificate_type
Unexecuted instantiation: common.c:get_certificate_type
Unexecuted instantiation: crl.c:get_certificate_type
Unexecuted instantiation: crq.c:get_certificate_type
Unexecuted instantiation: dn.c:get_certificate_type
Unexecuted instantiation: extensions.c:get_certificate_type
Unexecuted instantiation: hostname-verify.c:get_certificate_type
Unexecuted instantiation: key_decode.c:get_certificate_type
Unexecuted instantiation: key_encode.c:get_certificate_type
Unexecuted instantiation: mpi.c:get_certificate_type
Unexecuted instantiation: ocsp.c:get_certificate_type
Unexecuted instantiation: output.c:get_certificate_type
Unexecuted instantiation: pkcs12.c:get_certificate_type
Unexecuted instantiation: pkcs12_bag.c:get_certificate_type
Unexecuted instantiation: pkcs12_encr.c:get_certificate_type
Unexecuted instantiation: pkcs7-crypt.c:get_certificate_type
Unexecuted instantiation: privkey_openssl.c:get_certificate_type
Unexecuted instantiation: privkey_pkcs8.c:get_certificate_type
Unexecuted instantiation: privkey_pkcs8_pbes1.c:get_certificate_type
Unexecuted instantiation: prov-seed.c:get_certificate_type
Unexecuted instantiation: sign.c:get_certificate_type
Unexecuted instantiation: spki.c:get_certificate_type
Unexecuted instantiation: time.c:get_certificate_type
Unexecuted instantiation: tls_features.c:get_certificate_type
Unexecuted instantiation: verify-high.c:get_certificate_type
Unexecuted instantiation: verify-high2.c:get_certificate_type
Unexecuted instantiation: verify.c:get_certificate_type
Unexecuted instantiation: virt-san.c:get_certificate_type
Unexecuted instantiation: x509.c:get_certificate_type
Unexecuted instantiation: x509_dn.c:get_certificate_type
Unexecuted instantiation: x509_ext.c:get_certificate_type
Unexecuted instantiation: x509_write.c:get_certificate_type
Unexecuted instantiation: alpn.c:get_certificate_type
Unexecuted instantiation: client_cert_type.c:get_certificate_type
Unexecuted instantiation: compress_certificate.c:get_certificate_type
Unexecuted instantiation: cookie.c:get_certificate_type
Unexecuted instantiation: dumbfw.c:get_certificate_type
Unexecuted instantiation: ec_point_formats.c:get_certificate_type
Unexecuted instantiation: etm.c:get_certificate_type
Unexecuted instantiation: ext_master_secret.c:get_certificate_type
Unexecuted instantiation: heartbeat.c:get_certificate_type
Unexecuted instantiation: key_share.c:get_certificate_type
Unexecuted instantiation: max_record.c:get_certificate_type
Unexecuted instantiation: pre_shared_key.c:get_certificate_type
Unexecuted instantiation: psk_ke_modes.c:get_certificate_type
Unexecuted instantiation: record_size_limit.c:get_certificate_type
Unexecuted instantiation: safe_renegotiation.c:get_certificate_type
Unexecuted instantiation: server_cert_type.c:get_certificate_type
Unexecuted instantiation: server_name.c:get_certificate_type
Unexecuted instantiation: signature.c:get_certificate_type
Unexecuted instantiation: srtp.c:get_certificate_type
Unexecuted instantiation: status_request.c:get_certificate_type
Unexecuted instantiation: supported_groups.c:get_certificate_type
Unexecuted instantiation: supported_versions.c:get_certificate_type
Unexecuted instantiation: cert.c:get_certificate_type
Unexecuted instantiation: dh_common.c:get_certificate_type
Unexecuted instantiation: psk_passwd.c:get_certificate_type
Unexecuted instantiation: cert_types.c:get_certificate_type
Unexecuted instantiation: ciphers.c:get_certificate_type
Unexecuted instantiation: ciphersuites.c:get_certificate_type
Unexecuted instantiation: ecc.c:get_certificate_type
Unexecuted instantiation: groups.c:get_certificate_type
Unexecuted instantiation: mac.c:get_certificate_type
Unexecuted instantiation: protocols.c:get_certificate_type
Unexecuted instantiation: publickey.c:get_certificate_type
Unexecuted instantiation: secparams.c:get_certificate_type
Unexecuted instantiation: accelerated.c:get_certificate_type
Unexecuted instantiation: cryptodev.c:get_certificate_type
Unexecuted instantiation: x86-common.c:get_certificate_type
Unexecuted instantiation: gost28147.c:get_certificate_type
Unexecuted instantiation: init.c:get_certificate_type
Unexecuted instantiation: pk.c:get_certificate_type
Unexecuted instantiation: rnd.c:get_certificate_type
Unexecuted instantiation: rsa-keygen-fips186.c:get_certificate_type
Unexecuted instantiation: sysrng-linux.c:get_certificate_type
Unexecuted instantiation: tls1-prf.c:get_certificate_type
Unexecuted instantiation: compress.c:get_certificate_type
Unexecuted instantiation: dh.c:get_certificate_type
Unexecuted instantiation: x509_b64.c:get_certificate_type
Unexecuted instantiation: tls-sig.c:get_certificate_type
Unexecuted instantiation: certs.c:get_certificate_type
Unexecuted instantiation: str-iconv.c:get_certificate_type
Unexecuted instantiation: str-unicode.c:get_certificate_type
Unexecuted instantiation: file.c:get_certificate_type
Unexecuted instantiation: pin.c:get_certificate_type
Unexecuted instantiation: dh-primes.c:get_certificate_type
Unexecuted instantiation: hello_ext_lib.c:get_certificate_type
Unexecuted instantiation: stek.c:get_certificate_type
Unexecuted instantiation: pathbuf.c:get_certificate_type
Unexecuted instantiation: psk_ext_parser.c:get_certificate_type
Unexecuted instantiation: anti_replay.c:get_certificate_type
Unexecuted instantiation: attributes.c:get_certificate_type
Unexecuted instantiation: email-verify.c:get_certificate_type
Unexecuted instantiation: ip.c:get_certificate_type
Unexecuted instantiation: krb5.c:get_certificate_type
Unexecuted instantiation: name_constraints.c:get_certificate_type
Unexecuted instantiation: anon.c:get_certificate_type
Unexecuted instantiation: anon_ecdh.c:get_certificate_type
Unexecuted instantiation: dhe.c:get_certificate_type
Unexecuted instantiation: dhe_psk.c:get_certificate_type
Unexecuted instantiation: ecdhe.c:get_certificate_type
Unexecuted instantiation: rsa.c:get_certificate_type
Unexecuted instantiation: rsa_psk.c:get_certificate_type
Unexecuted instantiation: vko_gost.c:get_certificate_type
Unexecuted instantiation: aes-cbc-x86-aesni.c:get_certificate_type
Unexecuted instantiation: aes-cbc-x86-ssse3.c:get_certificate_type
Unexecuted instantiation: aes-ccm-x86-aesni.c:get_certificate_type
Unexecuted instantiation: aes-gcm-padlock.c:get_certificate_type
Unexecuted instantiation: aes-gcm-x86-aesni.c:get_certificate_type
Unexecuted instantiation: aes-gcm-x86-pclmul-avx.c:get_certificate_type
Unexecuted instantiation: aes-gcm-x86-pclmul.c:get_certificate_type
Unexecuted instantiation: aes-gcm-x86-ssse3.c:get_certificate_type
Unexecuted instantiation: aes-padlock.c:get_certificate_type
Unexecuted instantiation: aes-xts-x86-aesni.c:get_certificate_type
Unexecuted instantiation: hmac-padlock.c:get_certificate_type
Unexecuted instantiation: hmac-x86-ssse3.c:get_certificate_type
Unexecuted instantiation: sha-padlock.c:get_certificate_type
Unexecuted instantiation: sha-x86-ssse3.c:get_certificate_type
Unexecuted instantiation: bignum-le.c:get_certificate_type
Unexecuted instantiation: dsa-compute-k.c:get_certificate_type
Unexecuted instantiation: dsa-keygen-fips186.c:get_certificate_type
Unexecuted instantiation: dsa-validate.c:get_certificate_type
Unexecuted instantiation: ecdsa-compute-k.c:get_certificate_type
Unexecuted instantiation: gostdsa-mask.c:get_certificate_type
Unexecuted instantiation: provable-prime.c:get_certificate_type
Unexecuted instantiation: vko.c:get_certificate_type
Unexecuted instantiation: gost_keywrap.c:get_certificate_type
Unexecuted instantiation: gost-wrap.c:get_certificate_type
1804
1805
/* Macros to aide constant time/mem checks */
1806
0
#define CONSTCHECK_NOT_EQUAL(a, b) ((-((uint32_t)(a) ^ (uint32_t)(b))) >> 31)
1807
0
#define CONSTCHECK_EQUAL(a, b) (1U - CONSTCHECK_NOT_EQUAL(a, b))
1808
1809
extern unsigned int _gnutls_global_version;
1810
1811
bool _gnutls_config_is_ktls_enabled(void);
1812
bool _gnutls_config_is_rsa_pkcs1_encrypt_allowed(void);
1813
1814
#endif /* GNUTLS_LIB_GNUTLS_INT_H */