Coverage Report

Created: 2026-11-12 07:51

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/gnutls/lib/fips.h
Line
Count
Source
1
/*
2
 * Copyright (C) 2013 Red Hat
3
 *
4
 * Author: Nikos Mavrogiannopoulos
5
 *
6
 * This file is part of GnuTLS.
7
 *
8
 * The GnuTLS is free software; you can redistribute it and/or
9
 * modify it under the terms of the GNU Lesser General Public License
10
 * as published by the Free Software Foundation; either version 2.1 of
11
 * the License, or (at your option) any later version.
12
 *
13
 * This library is distributed in the hope that it will be useful, but
14
 * WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16
 * Lesser General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU Lesser General Public License
19
 * along with this program.  If not, see <https://www.gnu.org/licenses/>
20
 *
21
 */
22
23
#ifndef GNUTLS_LIB_FIPS_H
24
#define GNUTLS_LIB_FIPS_H
25
26
#include "gnutls_int.h"
27
#include <gnutls/gnutls.h>
28
29
#define FIPS140_RND_KEY_SIZE 32
30
31
typedef enum {
32
  LIB_STATE_POWERON,
33
  LIB_STATE_INIT,
34
  LIB_STATE_SELFTEST,
35
  LIB_STATE_OPERATIONAL,
36
  LIB_STATE_ERROR,
37
  LIB_STATE_SHUTDOWN
38
} gnutls_lib_state_t;
39
40
/* do not access directly */
41
extern unsigned int _gnutls_lib_state;
42
extern gnutls_crypto_rnd_st _gnutls_fips_rnd_ops;
43
44
void _gnutls_switch_fips_state(gnutls_fips140_operation_state_t state);
45
46
inline static void _gnutls_switch_lib_state(gnutls_lib_state_t state)
47
36
{
48
  /* Once into zombie state no errors can change us */
49
36
  _gnutls_lib_state = state;
50
36
}
Unexecuted instantiation: record.c:_gnutls_switch_lib_state
Unexecuted instantiation: cipher.c:_gnutls_switch_lib_state
Unexecuted instantiation: handshake-tls13.c:_gnutls_switch_lib_state
Unexecuted instantiation: handshake.c:_gnutls_switch_lib_state
Unexecuted instantiation: priority.c:_gnutls_switch_lib_state
Unexecuted instantiation: hash_int.c:_gnutls_switch_lib_state
Unexecuted instantiation: cipher_int.c:_gnutls_switch_lib_state
Unexecuted instantiation: cert-cred.c:_gnutls_switch_lib_state
global.c:_gnutls_switch_lib_state
Line
Count
Source
47
36
{
48
  /* Once into zombie state no errors can change us */
49
36
  _gnutls_lib_state = state;
50
36
}
Unexecuted instantiation: constate.c:_gnutls_switch_lib_state
Unexecuted instantiation: profiles.c:_gnutls_switch_lib_state
Unexecuted instantiation: state.c:_gnutls_switch_lib_state
Unexecuted instantiation: cert-cred-x509.c:_gnutls_switch_lib_state
Unexecuted instantiation: random.c:_gnutls_switch_lib_state
Unexecuted instantiation: crypto-api.c:_gnutls_switch_lib_state
Unexecuted instantiation: privkey.c:_gnutls_switch_lib_state
Unexecuted instantiation: pcert.c:_gnutls_switch_lib_state
Unexecuted instantiation: pubkey.c:_gnutls_switch_lib_state
Unexecuted instantiation: crypto-backend.c:_gnutls_switch_lib_state
Unexecuted instantiation: fips.c:_gnutls_switch_lib_state
Unexecuted instantiation: secrets.c:_gnutls_switch_lib_state
Unexecuted instantiation: post_handshake.c:_gnutls_switch_lib_state
Unexecuted instantiation: common.c:_gnutls_switch_lib_state
Unexecuted instantiation: crl.c:_gnutls_switch_lib_state
Unexecuted instantiation: crq.c:_gnutls_switch_lib_state
Unexecuted instantiation: dn.c:_gnutls_switch_lib_state
Unexecuted instantiation: extensions.c:_gnutls_switch_lib_state
Unexecuted instantiation: hostname-verify.c:_gnutls_switch_lib_state
Unexecuted instantiation: key_decode.c:_gnutls_switch_lib_state
Unexecuted instantiation: key_encode.c:_gnutls_switch_lib_state
Unexecuted instantiation: mpi.c:_gnutls_switch_lib_state
Unexecuted instantiation: ocsp.c:_gnutls_switch_lib_state
Unexecuted instantiation: output.c:_gnutls_switch_lib_state
Unexecuted instantiation: pkcs12.c:_gnutls_switch_lib_state
Unexecuted instantiation: pkcs12_bag.c:_gnutls_switch_lib_state
Unexecuted instantiation: pkcs7-crypt.c:_gnutls_switch_lib_state
Unexecuted instantiation: privkey_openssl.c:_gnutls_switch_lib_state
Unexecuted instantiation: privkey_pkcs8.c:_gnutls_switch_lib_state
Unexecuted instantiation: privkey_pkcs8_pbes1.c:_gnutls_switch_lib_state
Unexecuted instantiation: prov-seed.c:_gnutls_switch_lib_state
Unexecuted instantiation: sign.c:_gnutls_switch_lib_state
Unexecuted instantiation: spki.c:_gnutls_switch_lib_state
Unexecuted instantiation: time.c:_gnutls_switch_lib_state
Unexecuted instantiation: tls_features.c:_gnutls_switch_lib_state
Unexecuted instantiation: verify-high.c:_gnutls_switch_lib_state
Unexecuted instantiation: verify-high2.c:_gnutls_switch_lib_state
Unexecuted instantiation: verify.c:_gnutls_switch_lib_state
Unexecuted instantiation: virt-san.c:_gnutls_switch_lib_state
Unexecuted instantiation: x509.c:_gnutls_switch_lib_state
Unexecuted instantiation: x509_dn.c:_gnutls_switch_lib_state
Unexecuted instantiation: x509_ext.c:_gnutls_switch_lib_state
Unexecuted instantiation: x509_write.c:_gnutls_switch_lib_state
Unexecuted instantiation: heartbeat.c:_gnutls_switch_lib_state
Unexecuted instantiation: session_ticket.c:_gnutls_switch_lib_state
Unexecuted instantiation: psk_passwd.c:_gnutls_switch_lib_state
Unexecuted instantiation: cert_types.c:_gnutls_switch_lib_state
Unexecuted instantiation: ciphers.c:_gnutls_switch_lib_state
Unexecuted instantiation: ciphersuites.c:_gnutls_switch_lib_state
Unexecuted instantiation: ecc.c:_gnutls_switch_lib_state
Unexecuted instantiation: groups.c:_gnutls_switch_lib_state
Unexecuted instantiation: kx.c:_gnutls_switch_lib_state
Unexecuted instantiation: mac.c:_gnutls_switch_lib_state
Unexecuted instantiation: protocols.c:_gnutls_switch_lib_state
Unexecuted instantiation: publickey.c:_gnutls_switch_lib_state
Unexecuted instantiation: secparams.c:_gnutls_switch_lib_state
Unexecuted instantiation: pk.c:_gnutls_switch_lib_state
Unexecuted instantiation: rnd.c:_gnutls_switch_lib_state
Unexecuted instantiation: rsa-keygen-fips186.c:_gnutls_switch_lib_state
Unexecuted instantiation: sysrng-linux.c:_gnutls_switch_lib_state
Unexecuted instantiation: tls1-prf.c:_gnutls_switch_lib_state
Unexecuted instantiation: dh.c:_gnutls_switch_lib_state
Unexecuted instantiation: tls-sig.c:_gnutls_switch_lib_state
Unexecuted instantiation: attributes.c:_gnutls_switch_lib_state
Unexecuted instantiation: email-verify.c:_gnutls_switch_lib_state
Unexecuted instantiation: krb5.c:_gnutls_switch_lib_state
Unexecuted instantiation: name_constraints.c:_gnutls_switch_lib_state
Unexecuted instantiation: rsa.c:_gnutls_switch_lib_state
Unexecuted instantiation: rsa_psk.c:_gnutls_switch_lib_state
Unexecuted instantiation: aes-ccm-x86-aesni.c:_gnutls_switch_lib_state
Unexecuted instantiation: aes-xts-x86-aesni.c:_gnutls_switch_lib_state
Unexecuted instantiation: dsa-keygen-fips186.c:_gnutls_switch_lib_state
Unexecuted instantiation: dsa-validate.c:_gnutls_switch_lib_state
Unexecuted instantiation: provable-prime.c:_gnutls_switch_lib_state
Unexecuted instantiation: vko.c:_gnutls_switch_lib_state
51
52
inline static gnutls_lib_state_t _gnutls_get_lib_state(void)
53
0
{
54
0
  return _gnutls_lib_state;
55
0
}
Unexecuted instantiation: record.c:_gnutls_get_lib_state
Unexecuted instantiation: cipher.c:_gnutls_get_lib_state
Unexecuted instantiation: handshake-tls13.c:_gnutls_get_lib_state
Unexecuted instantiation: handshake.c:_gnutls_get_lib_state
Unexecuted instantiation: priority.c:_gnutls_get_lib_state
Unexecuted instantiation: hash_int.c:_gnutls_get_lib_state
Unexecuted instantiation: cipher_int.c:_gnutls_get_lib_state
Unexecuted instantiation: cert-cred.c:_gnutls_get_lib_state
Unexecuted instantiation: global.c:_gnutls_get_lib_state
Unexecuted instantiation: constate.c:_gnutls_get_lib_state
Unexecuted instantiation: profiles.c:_gnutls_get_lib_state
Unexecuted instantiation: state.c:_gnutls_get_lib_state
Unexecuted instantiation: cert-cred-x509.c:_gnutls_get_lib_state
Unexecuted instantiation: random.c:_gnutls_get_lib_state
Unexecuted instantiation: crypto-api.c:_gnutls_get_lib_state
Unexecuted instantiation: privkey.c:_gnutls_get_lib_state
Unexecuted instantiation: pcert.c:_gnutls_get_lib_state
Unexecuted instantiation: pubkey.c:_gnutls_get_lib_state
Unexecuted instantiation: crypto-backend.c:_gnutls_get_lib_state
Unexecuted instantiation: fips.c:_gnutls_get_lib_state
Unexecuted instantiation: secrets.c:_gnutls_get_lib_state
Unexecuted instantiation: post_handshake.c:_gnutls_get_lib_state
Unexecuted instantiation: common.c:_gnutls_get_lib_state
Unexecuted instantiation: crl.c:_gnutls_get_lib_state
Unexecuted instantiation: crq.c:_gnutls_get_lib_state
Unexecuted instantiation: dn.c:_gnutls_get_lib_state
Unexecuted instantiation: extensions.c:_gnutls_get_lib_state
Unexecuted instantiation: hostname-verify.c:_gnutls_get_lib_state
Unexecuted instantiation: key_decode.c:_gnutls_get_lib_state
Unexecuted instantiation: key_encode.c:_gnutls_get_lib_state
Unexecuted instantiation: mpi.c:_gnutls_get_lib_state
Unexecuted instantiation: ocsp.c:_gnutls_get_lib_state
Unexecuted instantiation: output.c:_gnutls_get_lib_state
Unexecuted instantiation: pkcs12.c:_gnutls_get_lib_state
Unexecuted instantiation: pkcs12_bag.c:_gnutls_get_lib_state
Unexecuted instantiation: pkcs7-crypt.c:_gnutls_get_lib_state
Unexecuted instantiation: privkey_openssl.c:_gnutls_get_lib_state
Unexecuted instantiation: privkey_pkcs8.c:_gnutls_get_lib_state
Unexecuted instantiation: privkey_pkcs8_pbes1.c:_gnutls_get_lib_state
Unexecuted instantiation: prov-seed.c:_gnutls_get_lib_state
Unexecuted instantiation: sign.c:_gnutls_get_lib_state
Unexecuted instantiation: spki.c:_gnutls_get_lib_state
Unexecuted instantiation: time.c:_gnutls_get_lib_state
Unexecuted instantiation: tls_features.c:_gnutls_get_lib_state
Unexecuted instantiation: verify-high.c:_gnutls_get_lib_state
Unexecuted instantiation: verify-high2.c:_gnutls_get_lib_state
Unexecuted instantiation: verify.c:_gnutls_get_lib_state
Unexecuted instantiation: virt-san.c:_gnutls_get_lib_state
Unexecuted instantiation: x509.c:_gnutls_get_lib_state
Unexecuted instantiation: x509_dn.c:_gnutls_get_lib_state
Unexecuted instantiation: x509_ext.c:_gnutls_get_lib_state
Unexecuted instantiation: x509_write.c:_gnutls_get_lib_state
Unexecuted instantiation: heartbeat.c:_gnutls_get_lib_state
Unexecuted instantiation: session_ticket.c:_gnutls_get_lib_state
Unexecuted instantiation: psk_passwd.c:_gnutls_get_lib_state
Unexecuted instantiation: cert_types.c:_gnutls_get_lib_state
Unexecuted instantiation: ciphers.c:_gnutls_get_lib_state
Unexecuted instantiation: ciphersuites.c:_gnutls_get_lib_state
Unexecuted instantiation: ecc.c:_gnutls_get_lib_state
Unexecuted instantiation: groups.c:_gnutls_get_lib_state
Unexecuted instantiation: kx.c:_gnutls_get_lib_state
Unexecuted instantiation: mac.c:_gnutls_get_lib_state
Unexecuted instantiation: protocols.c:_gnutls_get_lib_state
Unexecuted instantiation: publickey.c:_gnutls_get_lib_state
Unexecuted instantiation: secparams.c:_gnutls_get_lib_state
Unexecuted instantiation: pk.c:_gnutls_get_lib_state
Unexecuted instantiation: rnd.c:_gnutls_get_lib_state
Unexecuted instantiation: rsa-keygen-fips186.c:_gnutls_get_lib_state
Unexecuted instantiation: sysrng-linux.c:_gnutls_get_lib_state
Unexecuted instantiation: tls1-prf.c:_gnutls_get_lib_state
Unexecuted instantiation: dh.c:_gnutls_get_lib_state
Unexecuted instantiation: tls-sig.c:_gnutls_get_lib_state
Unexecuted instantiation: attributes.c:_gnutls_get_lib_state
Unexecuted instantiation: email-verify.c:_gnutls_get_lib_state
Unexecuted instantiation: krb5.c:_gnutls_get_lib_state
Unexecuted instantiation: name_constraints.c:_gnutls_get_lib_state
Unexecuted instantiation: rsa.c:_gnutls_get_lib_state
Unexecuted instantiation: rsa_psk.c:_gnutls_get_lib_state
Unexecuted instantiation: aes-ccm-x86-aesni.c:_gnutls_get_lib_state
Unexecuted instantiation: aes-xts-x86-aesni.c:_gnutls_get_lib_state
Unexecuted instantiation: dsa-keygen-fips186.c:_gnutls_get_lib_state
Unexecuted instantiation: dsa-validate.c:_gnutls_get_lib_state
Unexecuted instantiation: provable-prime.c:_gnutls_get_lib_state
Unexecuted instantiation: vko.c:_gnutls_get_lib_state
56
57
int _gnutls_fips_perform_self_checks1(void);
58
int _gnutls_fips_perform_self_checks2(void);
59
void _gnutls_fips_mode_reset_zombie(void);
60
61
#ifdef ENABLE_FIPS140
62
unsigned _gnutls_fips_mode_enabled(void);
63
#else
64
0
#define _gnutls_fips_mode_enabled() 0
65
#endif
66
67
#define HAVE_LIB_ERROR()                                             \
68
0
  unlikely(_gnutls_get_lib_state() != LIB_STATE_OPERATIONAL && \
69
0
     _gnutls_get_lib_state() != LIB_STATE_SELFTEST)
70
71
#define FAIL_IF_LIB_ERROR     \
72
0
  if (HAVE_LIB_ERROR()) \
73
0
  return GNUTLS_E_LIB_IN_ERROR_STATE
74
75
void _gnutls_lib_simulate_error(void);
76
void _gnutls_lib_force_operational(void);
77
78
typedef struct gnutls_fips140_context_st {
79
  gnutls_fips140_operation_state_t state;
80
  struct gnutls_fips140_context_st *next;
81
} gnutls_fips140_context_st;
82
83
#define GNUTLS_FIPS140_CONTEXT_INIT                 \
84
  {                                           \
85
    .state = GNUTLS_FIPS140_OP_INITIAL, \
86
    .next = NULL,                       \
87
  }
88
89
inline static bool
90
is_mac_algo_hmac_approved_in_fips(gnutls_mac_algorithm_t algo)
91
0
{
92
0
  switch (algo) {
93
0
  case GNUTLS_MAC_SHA1:
94
0
  case GNUTLS_MAC_SHA256:
95
0
  case GNUTLS_MAC_SHA384:
96
0
  case GNUTLS_MAC_SHA512:
97
0
  case GNUTLS_MAC_SHA224:
98
0
  case GNUTLS_MAC_SHA3_224:
99
0
  case GNUTLS_MAC_SHA3_256:
100
0
  case GNUTLS_MAC_SHA3_384:
101
0
  case GNUTLS_MAC_SHA3_512:
102
0
    return true;
103
0
  default:
104
0
    return false;
105
0
  }
106
0
}
Unexecuted instantiation: record.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: cipher.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: handshake-tls13.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: handshake.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: priority.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: hash_int.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: cipher_int.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: cert-cred.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: global.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: constate.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: profiles.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: state.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: cert-cred-x509.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: random.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: crypto-api.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: privkey.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: pcert.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: pubkey.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: crypto-backend.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: fips.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: secrets.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: post_handshake.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: common.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: crl.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: crq.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: dn.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: extensions.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: hostname-verify.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: key_decode.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: key_encode.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: mpi.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: ocsp.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: output.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: pkcs12.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: pkcs12_bag.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: pkcs7-crypt.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: privkey_openssl.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: privkey_pkcs8.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: privkey_pkcs8_pbes1.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: prov-seed.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: sign.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: spki.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: time.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: tls_features.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: verify-high.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: verify-high2.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: verify.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: virt-san.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: x509.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: x509_dn.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: x509_ext.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: x509_write.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: heartbeat.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: session_ticket.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: psk_passwd.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: cert_types.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: ciphers.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: ciphersuites.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: ecc.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: groups.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: kx.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: mac.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: protocols.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: publickey.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: secparams.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: pk.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: rnd.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: rsa-keygen-fips186.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: sysrng-linux.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: tls1-prf.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: dh.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: tls-sig.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: attributes.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: email-verify.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: krb5.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: name_constraints.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: rsa.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: rsa_psk.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: aes-ccm-x86-aesni.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: aes-xts-x86-aesni.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: dsa-keygen-fips186.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: dsa-validate.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: provable-prime.c:is_mac_algo_hmac_approved_in_fips
Unexecuted instantiation: vko.c:is_mac_algo_hmac_approved_in_fips
107
108
inline static bool is_mac_algo_approved_in_fips(gnutls_mac_algorithm_t algo)
109
0
{
110
0
  if (is_mac_algo_hmac_approved_in_fips(algo)) {
111
0
    return true;
112
0
  }
113
114
0
  switch (algo) {
115
0
  case GNUTLS_MAC_AES_CMAC_128:
116
0
  case GNUTLS_MAC_AES_CMAC_256:
117
0
  case GNUTLS_MAC_AES_GMAC_128:
118
0
  case GNUTLS_MAC_AES_GMAC_192:
119
0
  case GNUTLS_MAC_AES_GMAC_256:
120
  /* They are not a MAC algorithm, but go through the same check */
121
0
  case GNUTLS_MAC_SHAKE_128:
122
0
  case GNUTLS_MAC_SHAKE_256:
123
0
    return true;
124
0
  default:
125
0
    return false;
126
0
  }
127
0
}
Unexecuted instantiation: record.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: cipher.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: handshake-tls13.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: handshake.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: priority.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: hash_int.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: cipher_int.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: cert-cred.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: global.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: constate.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: profiles.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: state.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: cert-cred-x509.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: random.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: crypto-api.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: privkey.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: pcert.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: pubkey.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: crypto-backend.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: fips.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: secrets.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: post_handshake.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: common.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: crl.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: crq.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: dn.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: extensions.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: hostname-verify.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: key_decode.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: key_encode.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: mpi.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: ocsp.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: output.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: pkcs12.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: pkcs12_bag.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: pkcs7-crypt.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: privkey_openssl.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: privkey_pkcs8.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: privkey_pkcs8_pbes1.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: prov-seed.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: sign.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: spki.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: time.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: tls_features.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: verify-high.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: verify-high2.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: verify.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: virt-san.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: x509.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: x509_dn.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: x509_ext.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: x509_write.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: heartbeat.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: session_ticket.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: psk_passwd.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: cert_types.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: ciphers.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: ciphersuites.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: ecc.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: groups.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: kx.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: mac.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: protocols.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: publickey.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: secparams.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: pk.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: rnd.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: rsa-keygen-fips186.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: sysrng-linux.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: tls1-prf.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: dh.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: tls-sig.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: attributes.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: email-verify.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: krb5.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: name_constraints.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: rsa.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: rsa_psk.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: aes-ccm-x86-aesni.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: aes-xts-x86-aesni.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: dsa-keygen-fips186.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: dsa-validate.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: provable-prime.c:is_mac_algo_approved_in_fips
Unexecuted instantiation: vko.c:is_mac_algo_approved_in_fips
128
129
inline static bool is_mac_algo_allowed_in_fips(gnutls_mac_algorithm_t algo)
130
0
{
131
0
  return is_mac_algo_approved_in_fips(algo);
132
0
}
Unexecuted instantiation: record.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: cipher.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: handshake-tls13.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: handshake.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: priority.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: hash_int.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: cipher_int.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: cert-cred.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: global.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: constate.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: profiles.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: state.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: cert-cred-x509.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: random.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: crypto-api.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: privkey.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: pcert.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: pubkey.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: crypto-backend.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: fips.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: secrets.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: post_handshake.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: common.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: crl.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: crq.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: dn.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: extensions.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: hostname-verify.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: key_decode.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: key_encode.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: mpi.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: ocsp.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: output.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: pkcs12.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: pkcs12_bag.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: pkcs7-crypt.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: privkey_openssl.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: privkey_pkcs8.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: privkey_pkcs8_pbes1.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: prov-seed.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: sign.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: spki.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: time.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: tls_features.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: verify-high.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: verify-high2.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: verify.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: virt-san.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: x509.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: x509_dn.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: x509_ext.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: x509_write.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: heartbeat.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: session_ticket.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: psk_passwd.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: cert_types.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: ciphers.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: ciphersuites.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: ecc.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: groups.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: kx.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: mac.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: protocols.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: publickey.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: secparams.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: pk.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: rnd.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: rsa-keygen-fips186.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: sysrng-linux.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: tls1-prf.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: dh.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: tls-sig.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: attributes.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: email-verify.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: krb5.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: name_constraints.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: rsa.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: rsa_psk.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: aes-ccm-x86-aesni.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: aes-xts-x86-aesni.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: dsa-keygen-fips186.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: dsa-validate.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: provable-prime.c:is_mac_algo_allowed_in_fips
Unexecuted instantiation: vko.c:is_mac_algo_allowed_in_fips
133
134
inline static bool
135
is_cipher_algo_approved_in_fips(gnutls_cipher_algorithm_t algo)
136
0
{
137
0
  switch (algo) {
138
0
  case GNUTLS_CIPHER_AES_128_CBC:
139
0
  case GNUTLS_CIPHER_AES_256_CBC:
140
0
  case GNUTLS_CIPHER_AES_192_CBC:
141
0
  case GNUTLS_CIPHER_AES_128_CCM:
142
0
  case GNUTLS_CIPHER_AES_256_CCM:
143
0
  case GNUTLS_CIPHER_AES_128_CCM_8:
144
0
  case GNUTLS_CIPHER_AES_256_CCM_8:
145
0
  case GNUTLS_CIPHER_AES_128_CFB8:
146
0
  case GNUTLS_CIPHER_AES_192_CFB8:
147
0
  case GNUTLS_CIPHER_AES_256_CFB8:
148
0
  case GNUTLS_CIPHER_AES_128_CFB:
149
0
  case GNUTLS_CIPHER_AES_192_CFB:
150
0
  case GNUTLS_CIPHER_AES_256_CFB:
151
0
  case GNUTLS_CIPHER_AES_128_XTS:
152
0
  case GNUTLS_CIPHER_AES_256_XTS:
153
0
    return true;
154
0
  default:
155
0
    return false;
156
0
  }
157
0
}
Unexecuted instantiation: record.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: cipher.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: handshake-tls13.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: handshake.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: priority.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: hash_int.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: cipher_int.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: cert-cred.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: global.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: constate.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: profiles.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: state.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: cert-cred-x509.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: random.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: crypto-api.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: privkey.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: pcert.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: pubkey.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: crypto-backend.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: fips.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: secrets.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: post_handshake.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: common.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: crl.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: crq.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: dn.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: extensions.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: hostname-verify.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: key_decode.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: key_encode.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: mpi.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: ocsp.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: output.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: pkcs12.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: pkcs12_bag.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: pkcs7-crypt.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: privkey_openssl.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: privkey_pkcs8.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: privkey_pkcs8_pbes1.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: prov-seed.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: sign.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: spki.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: time.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: tls_features.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: verify-high.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: verify-high2.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: verify.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: virt-san.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: x509.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: x509_dn.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: x509_ext.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: x509_write.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: heartbeat.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: session_ticket.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: psk_passwd.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: cert_types.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: ciphers.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: ciphersuites.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: ecc.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: groups.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: kx.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: mac.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: protocols.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: publickey.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: secparams.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: pk.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: rnd.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: rsa-keygen-fips186.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: sysrng-linux.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: tls1-prf.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: dh.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: tls-sig.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: attributes.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: email-verify.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: krb5.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: name_constraints.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: rsa.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: rsa_psk.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: aes-ccm-x86-aesni.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: aes-xts-x86-aesni.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: dsa-keygen-fips186.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: dsa-validate.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: provable-prime.c:is_cipher_algo_approved_in_fips
Unexecuted instantiation: vko.c:is_cipher_algo_approved_in_fips
158
159
inline static bool
160
is_cipher_algo_allowed_in_fips(gnutls_cipher_algorithm_t algo)
161
0
{
162
0
  if (is_cipher_algo_approved_in_fips(algo)) {
163
0
    return true;
164
0
  }
165
0
166
0
  /* GCM is only approved in TLS */
167
0
  switch (algo) {
168
0
  case GNUTLS_CIPHER_AES_128_GCM:
169
0
  case GNUTLS_CIPHER_AES_192_GCM:
170
0
  case GNUTLS_CIPHER_AES_256_GCM:
171
0
    return true;
172
0
  default:
173
0
    return false;
174
0
  }
175
0
}
Unexecuted instantiation: record.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: cipher.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: handshake-tls13.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: handshake.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: priority.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: hash_int.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: cipher_int.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: cert-cred.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: global.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: constate.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: profiles.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: state.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: cert-cred-x509.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: random.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: crypto-api.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: privkey.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: pcert.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: pubkey.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: crypto-backend.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: fips.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: secrets.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: post_handshake.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: common.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: crl.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: crq.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: dn.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: extensions.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: hostname-verify.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: key_decode.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: key_encode.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: mpi.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: ocsp.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: output.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: pkcs12.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: pkcs12_bag.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: pkcs7-crypt.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: privkey_openssl.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: privkey_pkcs8.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: privkey_pkcs8_pbes1.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: prov-seed.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: sign.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: spki.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: time.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: tls_features.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: verify-high.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: verify-high2.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: verify.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: virt-san.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: x509.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: x509_dn.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: x509_ext.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: x509_write.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: heartbeat.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: session_ticket.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: psk_passwd.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: cert_types.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: ciphers.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: ciphersuites.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: ecc.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: groups.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: kx.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: mac.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: protocols.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: publickey.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: secparams.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: pk.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: rnd.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: rsa-keygen-fips186.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: sysrng-linux.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: tls1-prf.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: dh.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: tls-sig.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: attributes.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: email-verify.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: krb5.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: name_constraints.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: rsa.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: rsa_psk.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: aes-ccm-x86-aesni.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: aes-xts-x86-aesni.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: dsa-keygen-fips186.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: dsa-validate.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: provable-prime.c:is_cipher_algo_allowed_in_fips
Unexecuted instantiation: vko.c:is_cipher_algo_allowed_in_fips
176
177
#ifdef ENABLE_FIPS140
178
/* This will test the condition when in FIPS140-2 mode
179
 * and return an error if necessary or ignore */
180
#define FIPS_RULE(condition, ret_error, ...)                                            \
181
  {                                                                               \
182
    gnutls_fips_mode_t _mode = _gnutls_fips_mode_enabled();                 \
183
    if (_mode != GNUTLS_FIPS140_DISABLED) {                                 \
184
      if (condition) {                                                \
185
        if (_mode == GNUTLS_FIPS140_LOG) {                      \
186
          _gnutls_audit_log(                              \
187
            NULL,                                   \
188
            "fips140-2: allowing " __VA_ARGS__);    \
189
        } else if (_mode != GNUTLS_FIPS140_LAX) {               \
190
          _gnutls_debug_log(                              \
191
            "fips140-2: disallowing " __VA_ARGS__); \
192
          return ret_error;                               \
193
        }                                                       \
194
      }                                                               \
195
    }                                                                       \
196
  }
197
198
inline static bool is_mac_algo_allowed(gnutls_mac_algorithm_t algo)
199
{
200
  gnutls_fips_mode_t mode = _gnutls_fips_mode_enabled();
201
  if (_gnutls_get_lib_state() != LIB_STATE_SELFTEST &&
202
      !is_mac_algo_allowed_in_fips(algo)) {
203
    switch (mode) {
204
    case GNUTLS_FIPS140_LOG:
205
      _gnutls_audit_log(NULL,
206
            "fips140-2: allowing access to %s\n",
207
            gnutls_mac_get_name(algo));
208
      FALLTHROUGH;
209
    case GNUTLS_FIPS140_DISABLED:
210
    case GNUTLS_FIPS140_LAX:
211
      return true;
212
    default:
213
      return false;
214
    }
215
  }
216
217
  return true;
218
}
219
220
inline static bool is_cipher_algo_allowed(gnutls_cipher_algorithm_t algo)
221
{
222
  gnutls_fips_mode_t mode = _gnutls_fips_mode_enabled();
223
  if (_gnutls_get_lib_state() != LIB_STATE_SELFTEST &&
224
      !is_cipher_algo_allowed_in_fips(algo)) {
225
    switch (mode) {
226
    case GNUTLS_FIPS140_LOG:
227
      _gnutls_audit_log(NULL,
228
            "fips140-2: allowing access to %s\n",
229
            gnutls_cipher_get_name(algo));
230
      FALLTHROUGH;
231
    case GNUTLS_FIPS140_DISABLED:
232
    case GNUTLS_FIPS140_LAX:
233
      return true;
234
    default:
235
      return false;
236
    }
237
  }
238
239
  return true;
240
}
241
#else
242
0
#define is_mac_algo_allowed(x) true
243
0
#define is_cipher_algo_allowed(x) true
244
#define FIPS_RULE(condition, ret_error, ...)
245
#endif
246
247
#endif /* GNUTLS_LIB_FIPS_H */