Coverage Report

Created: 2026-04-30 06:12

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/boringssl/crypto/fipsmodule/delocate.h
Line
Count
Source
1
// Copyright 2017 The BoringSSL Authors
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
//     https://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
15
#ifndef OPENSSL_HEADER_CRYPTO_FIPSMODULE_DELOCATE_H
16
#define OPENSSL_HEADER_CRYPTO_FIPSMODULE_DELOCATE_H
17
18
#include <openssl/base.h>
19
20
#include "../internal.h"
21
22
23
#if defined(BORINGSSL_PREFIX)
24
#define BCM_ADD_PREFIX(name) BORINGSSL_ADD_PREFIX(bcm_##name)
25
#else
26
#define BCM_ADD_PREFIX(name) bcm_##name
27
#endif
28
29
#if !defined(BORINGSSL_SHARED_LIBRARY) && defined(BORINGSSL_FIPS) && \
30
    !defined(OPENSSL_ASAN) && !defined(OPENSSL_MSAN)
31
#define DEFINE_BSS_GET(type, name, init_expr)                                  \
32
  /* delocate needs C linkage and for |name| to be unique across BCM. */       \
33
  extern "C" {                                                                 \
34
  extern type BCM_ADD_PREFIX(name);                                            \
35
  type BCM_ADD_PREFIX(name) init_expr;                                         \
36
  type *BCM_ADD_PREFIX(name##_bss_get)() __attribute__((const));               \
37
  } /* extern "C" */                                                           \
38
                                                                               \
39
  /* The getter functions are exported, but static variables are usually named \
40
   * with short names. Define a static wrapper function so the caller can use  \
41
   * a short name, while the symbol itself is prefixed. */                     \
42
  static type *name##_bss_get() { return BCM_ADD_PREFIX(name##_bss_get)(); }
43
#else
44
#define DEFINE_BSS_GET(type, name, init_expr) \
45
  static type name init_expr;                 \
46
2.09M
  static type *name##_bss_get() { return &name; }
bcm.cc:BN_value_one_once_bss_get()
Line
Count
Source
46
916
  static type *name##_bss_get() { return &name; }
bcm.cc:BN_value_one_storage_bss_get()
Line
Count
Source
46
933
  static type *name##_bss_get() { return &name; }
bcm.cc:EVP_aes_128_cbc_once_bss_get()
Line
Count
Source
46
5.15k
  static type *name##_bss_get() { return &name; }
bcm.cc:EVP_aes_128_cbc_storage_bss_get()
Line
Count
Source
46
5.16k
  static type *name##_bss_get() { return &name; }
Unexecuted instantiation: bcm.cc:EVP_aes_128_ctr_once_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aes_128_ctr_storage_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aes_128_ofb_once_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aes_128_ofb_storage_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aes_128_gcm_once_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aes_128_gcm_storage_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aes_192_cbc_once_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aes_192_cbc_storage_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aes_192_ctr_once_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aes_192_ctr_storage_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aes_192_ofb_once_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aes_192_ofb_storage_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aes_192_gcm_once_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aes_192_gcm_storage_bss_get()
bcm.cc:EVP_aes_256_cbc_once_bss_get()
Line
Count
Source
46
21.4k
  static type *name##_bss_get() { return &name; }
bcm.cc:EVP_aes_256_cbc_storage_bss_get()
Line
Count
Source
46
21.4k
  static type *name##_bss_get() { return &name; }
Unexecuted instantiation: bcm.cc:EVP_aes_256_ctr_once_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aes_256_ctr_storage_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aes_256_ofb_once_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aes_256_ofb_storage_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aes_256_gcm_once_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aes_256_gcm_storage_bss_get()
Unexecuted instantiation: bcm.cc:aes_hw_128_ecb_once_bss_get()
Unexecuted instantiation: bcm.cc:aes_hw_128_ecb_storage_bss_get()
Unexecuted instantiation: bcm.cc:aes_128_ecb_generic_once_bss_get()
Unexecuted instantiation: bcm.cc:aes_128_ecb_generic_storage_bss_get()
Unexecuted instantiation: bcm.cc:aes_hw_192_ecb_once_bss_get()
Unexecuted instantiation: bcm.cc:aes_hw_192_ecb_storage_bss_get()
Unexecuted instantiation: bcm.cc:aes_192_ecb_generic_once_bss_get()
Unexecuted instantiation: bcm.cc:aes_192_ecb_generic_storage_bss_get()
Unexecuted instantiation: bcm.cc:aes_hw_256_ecb_once_bss_get()
Unexecuted instantiation: bcm.cc:aes_hw_256_ecb_storage_bss_get()
Unexecuted instantiation: bcm.cc:aes_256_ecb_generic_once_bss_get()
Unexecuted instantiation: bcm.cc:aes_256_ecb_generic_storage_bss_get()
bcm.cc:EVP_aead_aes_128_gcm_once_bss_get()
Line
Count
Source
46
274
  static type *name##_bss_get() { return &name; }
bcm.cc:EVP_aead_aes_128_gcm_storage_bss_get()
Line
Count
Source
46
277
  static type *name##_bss_get() { return &name; }
Unexecuted instantiation: bcm.cc:EVP_aead_aes_192_gcm_once_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aead_aes_192_gcm_storage_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aead_aes_256_gcm_once_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aead_aes_256_gcm_storage_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aead_aes_128_gcm_randnonce_once_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aead_aes_128_gcm_randnonce_storage_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aead_aes_256_gcm_randnonce_once_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aead_aes_256_gcm_randnonce_storage_bss_get()
bcm.cc:EVP_aead_aes_128_gcm_tls12_once_bss_get()
Line
Count
Source
46
60.5k
  static type *name##_bss_get() { return &name; }
bcm.cc:EVP_aead_aes_128_gcm_tls12_storage_bss_get()
Line
Count
Source
46
60.5k
  static type *name##_bss_get() { return &name; }
bcm.cc:EVP_aead_aes_256_gcm_tls12_once_bss_get()
Line
Count
Source
46
25.4k
  static type *name##_bss_get() { return &name; }
bcm.cc:EVP_aead_aes_256_gcm_tls12_storage_bss_get()
Line
Count
Source
46
25.4k
  static type *name##_bss_get() { return &name; }
bcm.cc:EVP_aead_aes_128_gcm_tls13_once_bss_get()
Line
Count
Source
46
37.9k
  static type *name##_bss_get() { return &name; }
bcm.cc:EVP_aead_aes_128_gcm_tls13_storage_bss_get()
Line
Count
Source
46
37.9k
  static type *name##_bss_get() { return &name; }
bcm.cc:EVP_aead_aes_256_gcm_tls13_once_bss_get()
Line
Count
Source
46
36.9k
  static type *name##_bss_get() { return &name; }
bcm.cc:EVP_aead_aes_256_gcm_tls13_storage_bss_get()
Line
Count
Source
46
36.9k
  static type *name##_bss_get() { return &name; }
Unexecuted instantiation: bcm.cc:EVP_aead_aes_128_ccm_bluetooth_once_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aead_aes_128_ccm_bluetooth_storage_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aead_aes_128_ccm_bluetooth_8_once_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aead_aes_128_ccm_bluetooth_8_storage_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aead_aes_128_ccm_matter_once_bss_get()
Unexecuted instantiation: bcm.cc:EVP_aead_aes_128_ccm_matter_storage_bss_get()
bcm.cc:EVP_sha1_once_bss_get()
Line
Count
Source
46
44.2k
  static type *name##_bss_get() { return &name; }
bcm.cc:EVP_sha1_storage_bss_get()
Line
Count
Source
46
44.2k
  static type *name##_bss_get() { return &name; }
bcm.cc:EVP_sha224_once_bss_get()
Line
Count
Source
46
42
  static type *name##_bss_get() { return &name; }
bcm.cc:EVP_sha224_storage_bss_get()
Line
Count
Source
46
46
  static type *name##_bss_get() { return &name; }
bcm.cc:EVP_sha256_once_bss_get()
Line
Count
Source
46
236k
  static type *name##_bss_get() { return &name; }
bcm.cc:EVP_sha256_storage_bss_get()
Line
Count
Source
46
236k
  static type *name##_bss_get() { return &name; }
bcm.cc:EVP_sha384_once_bss_get()
Line
Count
Source
46
120k
  static type *name##_bss_get() { return &name; }
bcm.cc:EVP_sha384_storage_bss_get()
Line
Count
Source
46
120k
  static type *name##_bss_get() { return &name; }
bcm.cc:EVP_sha512_once_bss_get()
Line
Count
Source
46
14.1k
  static type *name##_bss_get() { return &name; }
bcm.cc:EVP_sha512_storage_bss_get()
Line
Count
Source
46
14.1k
  static type *name##_bss_get() { return &name; }
Unexecuted instantiation: bcm.cc:EVP_sha512_256_once_bss_get()
Unexecuted instantiation: bcm.cc:EVP_sha512_256_storage_bss_get()
bcm.cc:md_pctx_ops_once_bss_get()
Line
Count
Source
46
57.1k
  static type *name##_bss_get() { return &name; }
bcm.cc:md_pctx_ops_storage_bss_get()
Line
Count
Source
46
57.1k
  static type *name##_bss_get() { return &name; }
bcm.cc:EC_group_p224_once_bss_get()
Line
Count
Source
46
64.2k
  static type *name##_bss_get() { return &name; }
bcm.cc:EC_group_p224_storage_bss_get()
Line
Count
Source
46
64.2k
  static type *name##_bss_get() { return &name; }
bcm.cc:EC_group_p256_once_bss_get()
Line
Count
Source
46
67.8k
  static type *name##_bss_get() { return &name; }
bcm.cc:EC_group_p256_storage_bss_get()
Line
Count
Source
46
67.9k
  static type *name##_bss_get() { return &name; }
bcm.cc:EC_group_p384_once_bss_get()
Line
Count
Source
46
24.0k
  static type *name##_bss_get() { return &name; }
bcm.cc:EC_group_p384_storage_bss_get()
Line
Count
Source
46
24.0k
  static type *name##_bss_get() { return &name; }
bcm.cc:EC_group_p521_once_bss_get()
Line
Count
Source
46
9.11k
  static type *name##_bss_get() { return &name; }
bcm.cc:EC_group_p521_storage_bss_get()
Line
Count
Source
46
9.12k
  static type *name##_bss_get() { return &name; }
bcm.cc:g_ec_ex_data_class_bss_get()
Line
Count
Source
46
61.0k
  static type *name##_bss_get() { return &name; }
bcm.cc:bssl::EC_GFp_mont_method_once_bss_get()
Line
Count
Source
46
45
  static type *name##_bss_get() { return &name; }
bcm.cc:bssl::EC_GFp_mont_method_storage_bss_get()
Line
Count
Source
46
64
  static type *name##_bss_get() { return &name; }
bcm.cc:bssl::EC_GFp_nistz256_method_once_bss_get()
Line
Count
Source
46
19
  static type *name##_bss_get() { return &name; }
bcm.cc:bssl::EC_GFp_nistz256_method_storage_bss_get()
Line
Count
Source
46
38
  static type *name##_bss_get() { return &name; }
Unexecuted instantiation: bcm.cc:bssl::EC_GFp_nistp256_method_once_bss_get()
Unexecuted instantiation: bcm.cc:bssl::EC_GFp_nistp256_method_storage_bss_get()
bcm.cc:g_rsa_ex_data_class_bss_get()
Line
Count
Source
46
126k
  static type *name##_bss_get() { return &name; }
Unexecuted instantiation: bcm.cc:g_small_factors_once_bss_get()
Unexecuted instantiation: bcm.cc:g_small_factors_storage_bss_get()
bcm.cc:bssl::RSA_default_method_once_bss_get()
Line
Count
Source
46
126k
  static type *name##_bss_get() { return &name; }
bcm.cc:bssl::RSA_default_method_storage_bss_get()
Line
Count
Source
46
126k
  static type *name##_bss_get() { return &name; }
47
#endif
48
49
// For FIPS builds we require each of these objects be all zero.
50
#define DEFINE_STATIC_ONCE(name) \
51
  DEFINE_BSS_GET(bssl::CRYPTO_once_t, name, = CRYPTO_ONCE_INIT)
52
#define DEFINE_STATIC_MUTEX(name) \
53
  DEFINE_BSS_GET(bssl::StaticMutex, name, /* default ctor */)
54
#define DEFINE_STATIC_EX_DATA_CLASS(name) \
55
  DEFINE_BSS_GET(bssl::ExDataClass, name, /* default ctor */)
56
57
#define DEFINE_DATA(type, name, accessor_decorations)                     \
58
  DEFINE_BSS_GET(type, name##_storage, {})                                \
59
  DEFINE_STATIC_ONCE(name##_once)                                         \
60
  static void name##_do_init(type *out);                                  \
61
233
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
bcm.cc:BN_value_one_init()
Line
Count
Source
61
17
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
bcm.cc:EVP_aes_128_cbc_init()
Line
Count
Source
61
7
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
Unexecuted instantiation: bcm.cc:EVP_aes_128_ctr_init()
Unexecuted instantiation: bcm.cc:EVP_aes_128_ofb_init()
Unexecuted instantiation: bcm.cc:EVP_aes_128_gcm_init()
Unexecuted instantiation: bcm.cc:EVP_aes_192_cbc_init()
Unexecuted instantiation: bcm.cc:EVP_aes_192_ctr_init()
Unexecuted instantiation: bcm.cc:EVP_aes_192_ofb_init()
Unexecuted instantiation: bcm.cc:EVP_aes_192_gcm_init()
bcm.cc:EVP_aes_256_cbc_init()
Line
Count
Source
61
6
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
Unexecuted instantiation: bcm.cc:EVP_aes_256_ctr_init()
Unexecuted instantiation: bcm.cc:EVP_aes_256_ofb_init()
Unexecuted instantiation: bcm.cc:EVP_aes_256_gcm_init()
Unexecuted instantiation: bcm.cc:aes_hw_128_ecb_init()
Unexecuted instantiation: bcm.cc:aes_128_ecb_generic_init()
Unexecuted instantiation: bcm.cc:aes_hw_192_ecb_init()
Unexecuted instantiation: bcm.cc:aes_192_ecb_generic_init()
Unexecuted instantiation: bcm.cc:aes_hw_256_ecb_init()
Unexecuted instantiation: bcm.cc:aes_256_ecb_generic_init()
bcm.cc:EVP_aead_aes_128_gcm_init()
Line
Count
Source
61
3
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
Unexecuted instantiation: bcm.cc:EVP_aead_aes_192_gcm_init()
Unexecuted instantiation: bcm.cc:EVP_aead_aes_256_gcm_init()
Unexecuted instantiation: bcm.cc:EVP_aead_aes_128_gcm_randnonce_init()
Unexecuted instantiation: bcm.cc:EVP_aead_aes_256_gcm_randnonce_init()
bcm.cc:EVP_aead_aes_128_gcm_tls12_init()
Line
Count
Source
61
6
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
bcm.cc:EVP_aead_aes_256_gcm_tls12_init()
Line
Count
Source
61
6
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
bcm.cc:EVP_aead_aes_128_gcm_tls13_init()
Line
Count
Source
61
6
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
bcm.cc:EVP_aead_aes_256_gcm_tls13_init()
Line
Count
Source
61
6
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
Unexecuted instantiation: bcm.cc:EVP_aead_aes_128_ccm_bluetooth_init()
Unexecuted instantiation: bcm.cc:EVP_aead_aes_128_ccm_bluetooth_8_init()
Unexecuted instantiation: bcm.cc:EVP_aead_aes_128_ccm_matter_init()
bcm.cc:EVP_sha1_init()
Line
Count
Source
61
11
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
bcm.cc:EVP_sha224_init()
Line
Count
Source
61
4
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
bcm.cc:EVP_sha256_init()
Line
Count
Source
61
11
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
bcm.cc:EVP_sha384_init()
Line
Count
Source
61
10
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
bcm.cc:EVP_sha512_init()
Line
Count
Source
61
10
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
Unexecuted instantiation: bcm.cc:EVP_sha512_256_init()
bcm.cc:md_pctx_ops_init()
Line
Count
Source
61
6
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
bcm.cc:EC_group_p224_init()
Line
Count
Source
61
19
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
bcm.cc:EC_group_p256_init()
Line
Count
Source
61
19
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
bcm.cc:EC_group_p384_init()
Line
Count
Source
61
13
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
bcm.cc:EC_group_p521_init()
Line
Count
Source
61
13
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
bcm.cc:bssl::EC_GFp_mont_method_init()
Line
Count
Source
61
19
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
bcm.cc:bssl::EC_GFp_nistz256_method_init()
Line
Count
Source
61
19
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
Unexecuted instantiation: bcm.cc:bssl::EC_GFp_nistp256_method_init()
Unexecuted instantiation: bcm.cc:g_small_factors_init()
bcm.cc:bssl::RSA_default_method_init()
Line
Count
Source
61
22
  static void name##_init() { name##_do_init(name##_storage_bss_get()); } \
62
953k
  accessor_decorations type *name() {                                     \
63
953k
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
953k
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
953k
     * cast is needed. */                                                 \
66
953k
    return (const type *)name##_storage_bss_get();                        \
67
953k
  }                                                                       \
BN_value_one
Line
Count
Source
62
916
  accessor_decorations type *name() {                                     \
63
916
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
916
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
916
     * cast is needed. */                                                 \
66
916
    return (const type *)name##_storage_bss_get();                        \
67
916
  }                                                                       \
EVP_aes_128_cbc
Line
Count
Source
62
5.15k
  accessor_decorations type *name() {                                     \
63
5.15k
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
5.15k
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
5.15k
     * cast is needed. */                                                 \
66
5.15k
    return (const type *)name##_storage_bss_get();                        \
67
5.15k
  }                                                                       \
Unexecuted instantiation: EVP_aes_128_ctr
Unexecuted instantiation: EVP_aes_128_ofb
Unexecuted instantiation: EVP_aes_128_gcm
Unexecuted instantiation: EVP_aes_192_cbc
Unexecuted instantiation: EVP_aes_192_ctr
Unexecuted instantiation: EVP_aes_192_ofb
Unexecuted instantiation: EVP_aes_192_gcm
EVP_aes_256_cbc
Line
Count
Source
62
21.4k
  accessor_decorations type *name() {                                     \
63
21.4k
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
21.4k
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
21.4k
     * cast is needed. */                                                 \
66
21.4k
    return (const type *)name##_storage_bss_get();                        \
67
21.4k
  }                                                                       \
Unexecuted instantiation: EVP_aes_256_ctr
Unexecuted instantiation: EVP_aes_256_ofb
Unexecuted instantiation: EVP_aes_256_gcm
EVP_aead_aes_128_gcm
Line
Count
Source
62
274
  accessor_decorations type *name() {                                     \
63
274
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
274
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
274
     * cast is needed. */                                                 \
66
274
    return (const type *)name##_storage_bss_get();                        \
67
274
  }                                                                       \
Unexecuted instantiation: EVP_aead_aes_192_gcm
Unexecuted instantiation: EVP_aead_aes_256_gcm
Unexecuted instantiation: EVP_aead_aes_128_gcm_randnonce
Unexecuted instantiation: EVP_aead_aes_256_gcm_randnonce
EVP_aead_aes_128_gcm_tls12
Line
Count
Source
62
60.5k
  accessor_decorations type *name() {                                     \
63
60.5k
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
60.5k
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
60.5k
     * cast is needed. */                                                 \
66
60.5k
    return (const type *)name##_storage_bss_get();                        \
67
60.5k
  }                                                                       \
EVP_aead_aes_256_gcm_tls12
Line
Count
Source
62
25.4k
  accessor_decorations type *name() {                                     \
63
25.4k
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
25.4k
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
25.4k
     * cast is needed. */                                                 \
66
25.4k
    return (const type *)name##_storage_bss_get();                        \
67
25.4k
  }                                                                       \
EVP_aead_aes_128_gcm_tls13
Line
Count
Source
62
37.9k
  accessor_decorations type *name() {                                     \
63
37.9k
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
37.9k
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
37.9k
     * cast is needed. */                                                 \
66
37.9k
    return (const type *)name##_storage_bss_get();                        \
67
37.9k
  }                                                                       \
EVP_aead_aes_256_gcm_tls13
Line
Count
Source
62
36.9k
  accessor_decorations type *name() {                                     \
63
36.9k
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
36.9k
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
36.9k
     * cast is needed. */                                                 \
66
36.9k
    return (const type *)name##_storage_bss_get();                        \
67
36.9k
  }                                                                       \
Unexecuted instantiation: EVP_aead_aes_128_ccm_bluetooth
Unexecuted instantiation: EVP_aead_aes_128_ccm_bluetooth_8
Unexecuted instantiation: EVP_aead_aes_128_ccm_matter
EVP_sha1
Line
Count
Source
62
44.2k
  accessor_decorations type *name() {                                     \
63
44.2k
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
44.2k
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
44.2k
     * cast is needed. */                                                 \
66
44.2k
    return (const type *)name##_storage_bss_get();                        \
67
44.2k
  }                                                                       \
EVP_sha224
Line
Count
Source
62
42
  accessor_decorations type *name() {                                     \
63
42
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
42
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
42
     * cast is needed. */                                                 \
66
42
    return (const type *)name##_storage_bss_get();                        \
67
42
  }                                                                       \
EVP_sha256
Line
Count
Source
62
236k
  accessor_decorations type *name() {                                     \
63
236k
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
236k
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
236k
     * cast is needed. */                                                 \
66
236k
    return (const type *)name##_storage_bss_get();                        \
67
236k
  }                                                                       \
EVP_sha384
Line
Count
Source
62
120k
  accessor_decorations type *name() {                                     \
63
120k
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
120k
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
120k
     * cast is needed. */                                                 \
66
120k
    return (const type *)name##_storage_bss_get();                        \
67
120k
  }                                                                       \
EVP_sha512
Line
Count
Source
62
14.1k
  accessor_decorations type *name() {                                     \
63
14.1k
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
14.1k
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
14.1k
     * cast is needed. */                                                 \
66
14.1k
    return (const type *)name##_storage_bss_get();                        \
67
14.1k
  }                                                                       \
Unexecuted instantiation: EVP_sha512_256
EC_group_p224
Line
Count
Source
62
64.2k
  accessor_decorations type *name() {                                     \
63
64.2k
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
64.2k
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
64.2k
     * cast is needed. */                                                 \
66
64.2k
    return (const type *)name##_storage_bss_get();                        \
67
64.2k
  }                                                                       \
EC_group_p256
Line
Count
Source
62
67.8k
  accessor_decorations type *name() {                                     \
63
67.8k
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
67.8k
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
67.8k
     * cast is needed. */                                                 \
66
67.8k
    return (const type *)name##_storage_bss_get();                        \
67
67.8k
  }                                                                       \
EC_group_p384
Line
Count
Source
62
24.0k
  accessor_decorations type *name() {                                     \
63
24.0k
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
24.0k
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
24.0k
     * cast is needed. */                                                 \
66
24.0k
    return (const type *)name##_storage_bss_get();                        \
67
24.0k
  }                                                                       \
EC_group_p521
Line
Count
Source
62
9.11k
  accessor_decorations type *name() {                                     \
63
9.11k
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
9.11k
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
9.11k
     * cast is needed. */                                                 \
66
9.11k
    return (const type *)name##_storage_bss_get();                        \
67
9.11k
  }                                                                       \
bssl::EC_GFp_mont_method()
Line
Count
Source
62
45
  accessor_decorations type *name() {                                     \
63
45
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
45
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
45
     * cast is needed. */                                                 \
66
45
    return (const type *)name##_storage_bss_get();                        \
67
45
  }                                                                       \
bssl::EC_GFp_nistz256_method()
Line
Count
Source
62
19
  accessor_decorations type *name() {                                     \
63
19
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
19
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
19
     * cast is needed. */                                                 \
66
19
    return (const type *)name##_storage_bss_get();                        \
67
19
  }                                                                       \
Unexecuted instantiation: bssl::EC_GFp_nistp256_method()
bssl::RSA_default_method()
Line
Count
Source
62
126k
  accessor_decorations type *name() {                                     \
63
126k
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
126k
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
126k
     * cast is needed. */                                                 \
66
126k
    return (const type *)name##_storage_bss_get();                        \
67
126k
  }                                                                       \
Unexecuted instantiation: bcm.cc:aes_hw_128_ecb()
Unexecuted instantiation: bcm.cc:aes_128_ecb_generic()
Unexecuted instantiation: bcm.cc:aes_hw_192_ecb()
Unexecuted instantiation: bcm.cc:aes_192_ecb_generic()
Unexecuted instantiation: bcm.cc:aes_hw_256_ecb()
Unexecuted instantiation: bcm.cc:aes_256_ecb_generic()
bcm.cc:md_pctx_ops()
Line
Count
Source
62
57.1k
  accessor_decorations type *name() {                                     \
63
57.1k
    bssl::CRYPTO_once(name##_once_bss_get(), name##_init);                \
64
57.1k
    /* See http://c-faq.com/ansi/constmismatch.html for why the following \
65
57.1k
     * cast is needed. */                                                 \
66
57.1k
    return (const type *)name##_storage_bss_get();                        \
67
57.1k
  }                                                                       \
Unexecuted instantiation: bcm.cc:g_small_factors()
68
  static void name##_do_init(type *out)
69
70
// DEFINE_METHOD_FUNCTION defines a function named |name| which returns a
71
// method table of type const |type|*. In FIPS mode, to avoid rel.ro data, it
72
// is split into a CRYPTO_once_t-guarded initializer in the module and
73
// unhashed, non-module accessor functions to space reserved in the BSS. The
74
// method table is initialized by a caller-supplied function which takes a
75
// parameter named |out| of type |type|*. The caller should follow the macro
76
// invocation with the body of this function:
77
//
78
//     DEFINE_METHOD_FUNCTION(EVP_MD, EVP_md4) {
79
//       out->type = NID_md4;
80
//       out->md_size = MD4_DIGEST_LENGTH;
81
//       out->flags = 0;
82
//       out->init = md4_init;
83
//       out->update = md4_update;
84
//       out->final = md4_final;
85
//       out->block_size = 64;
86
//       out->ctx_size = sizeof(MD4_CTX);
87
//     }
88
//
89
// This mechanism does not use a static initializer because their execution
90
// order is undefined. See FIPS.md for more details.
91
#define DEFINE_METHOD_FUNCTION(type, name) DEFINE_DATA(type, name, const)
92
93
#define DEFINE_LOCAL_DATA(type, name) DEFINE_DATA(type, name, static const)
94
95
#endif  // OPENSSL_HEADER_CRYPTO_FIPSMODULE_DELOCATE_H