Coverage Report

Created: 2025-06-11 06:40

/src/boringssl/crypto/internal.h
Line
Count
Source (jump to first uncovered line)
1
// Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
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_INTERNAL_H
16
#define OPENSSL_HEADER_CRYPTO_INTERNAL_H
17
18
#include <openssl/crypto.h>
19
#include <openssl/ex_data.h>
20
#include <openssl/stack.h>
21
22
#include <assert.h>
23
#include <stdlib.h>
24
#include <string.h>
25
26
#if defined(BORINGSSL_CONSTANT_TIME_VALIDATION)
27
#include <valgrind/memcheck.h>
28
#endif
29
30
#if defined(BORINGSSL_FIPS_BREAK_TESTS)
31
#include <stdlib.h>
32
#endif
33
34
#if defined(OPENSSL_THREADS) && \
35
    (!defined(OPENSSL_WINDOWS) || defined(__MINGW32__))
36
#include <pthread.h>
37
#define OPENSSL_PTHREADS
38
#endif
39
40
#if defined(OPENSSL_THREADS) && !defined(OPENSSL_PTHREADS) && \
41
    defined(OPENSSL_WINDOWS)
42
#define OPENSSL_WINDOWS_THREADS
43
#endif
44
45
#if defined(OPENSSL_THREADS)
46
#include <atomic>
47
#endif
48
49
#if defined(OPENSSL_WINDOWS_THREADS)
50
#include <windows.h>
51
#endif
52
53
#if defined(__cplusplus)
54
extern "C" {
55
#endif
56
57
58
#if !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_STATIC_ARMCAP) && \
59
    (defined(OPENSSL_X86) || defined(OPENSSL_X86_64) ||            \
60
     defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64))
61
// x86, x86_64, and the ARMs need to record the result of a cpuid/getauxval call
62
// for the asm to work correctly, unless compiled without asm code.
63
#define NEED_CPUID
64
65
// OPENSSL_cpuid_setup initializes the platform-specific feature cache. This
66
// function should not be called directly. Call |OPENSSL_init_cpuid| instead.
67
void OPENSSL_cpuid_setup(void);
68
69
// OPENSSL_init_cpuid initializes the platform-specific feature cache, if
70
// needed. This function is idempotent and may be called concurrently.
71
void OPENSSL_init_cpuid(void);
72
#else
73
inline void OPENSSL_init_cpuid(void) {}
74
#endif
75
76
#if (defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)) && \
77
    !defined(OPENSSL_STATIC_ARMCAP)
78
// OPENSSL_get_armcap_pointer_for_test returns a pointer to |OPENSSL_armcap_P|
79
// for unit tests. Any modifications to the value must be made before any other
80
// function call in BoringSSL.
81
OPENSSL_EXPORT uint32_t *OPENSSL_get_armcap_pointer_for_test(void);
82
#endif
83
84
85
// On non-MSVC 64-bit targets, we expect __uint128_t support. This includes
86
// clang-cl, which defines both __clang__ and _MSC_VER.
87
#if (!defined(_MSC_VER) || defined(__clang__)) && defined(OPENSSL_64_BIT)
88
#define BORINGSSL_HAS_UINT128
89
typedef __int128_t int128_t;
90
typedef __uint128_t uint128_t;
91
92
// __uint128_t division depends on intrinsics in the compiler runtime. Those
93
// intrinsics are missing in clang-cl (https://crbug.com/787617) and nanolibc.
94
// These may be bugs in the toolchain definition, but just disable it for now.
95
// EDK2's toolchain is missing __udivti3 (b/339380897) so cannot support
96
// 128-bit division currently.
97
#if !defined(_MSC_VER) && !defined(OPENSSL_NANOLIBC) && \
98
    !defined(__EDK2_BORINGSSL__)
99
#define BORINGSSL_CAN_DIVIDE_UINT128
100
#endif
101
#endif
102
103
611k
#define OPENSSL_ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0]))
104
105
// GCC-like compilers indicate SSE2 with |__SSE2__|. MSVC leaves the caller to
106
// know that x86_64 has SSE2, and uses _M_IX86_FP to indicate SSE2 on x86.
107
// https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros?view=msvc-170
108
#if defined(__SSE2__) || defined(_M_AMD64) || defined(_M_X64) || \
109
    (defined(_M_IX86_FP) && _M_IX86_FP >= 2)
110
#define OPENSSL_SSE2
111
#endif
112
113
#if defined(OPENSSL_X86) && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_SSE2)
114
#error \
115
    "x86 assembly requires SSE2. Build with -msse2 (recommended), or disable assembly optimizations with -DOPENSSL_NO_ASM."
116
#endif
117
118
// For convenience in testing the fallback code, we allow disabling SSE2
119
// intrinsics via |OPENSSL_NO_SSE2_FOR_TESTING|. We require SSE2 on x86 and
120
// x86_64, so we would otherwise need to test such code on a non-x86 platform.
121
//
122
// This does not remove the above requirement for SSE2 support with assembly
123
// optimizations. It only disables some intrinsics-based optimizations so that
124
// we can test the fallback code on CI.
125
#if defined(OPENSSL_SSE2) && defined(OPENSSL_NO_SSE2_FOR_TESTING)
126
#undef OPENSSL_SSE2
127
#endif
128
129
#if defined(__GNUC__) || defined(__clang__)
130
#define OPENSSL_ATTR_CONST __attribute__((const))
131
#else
132
#define OPENSSL_ATTR_CONST
133
#endif
134
135
#if defined(BORINGSSL_MALLOC_FAILURE_TESTING)
136
// OPENSSL_reset_malloc_counter_for_testing, when malloc testing is enabled,
137
// resets the internal malloc counter, to simulate further malloc failures. This
138
// should be called in between independent tests, at a point where failure from
139
// a previous test will not impact subsequent ones.
140
OPENSSL_EXPORT void OPENSSL_reset_malloc_counter_for_testing(void);
141
142
// OPENSSL_disable_malloc_failures_for_testing, when malloc testing is enabled,
143
// disables simulated malloc failures. Calls to |OPENSSL_malloc| will not
144
// increment the malloc counter or synthesize failures. This may be used to skip
145
// simulating malloc failures in some region of code.
146
OPENSSL_EXPORT void OPENSSL_disable_malloc_failures_for_testing(void);
147
148
// OPENSSL_enable_malloc_failures_for_testing, when malloc testing is enabled,
149
// re-enables simulated malloc failures.
150
OPENSSL_EXPORT void OPENSSL_enable_malloc_failures_for_testing(void);
151
#else
152
0
inline void OPENSSL_reset_malloc_counter_for_testing(void) {}
153
0
inline void OPENSSL_disable_malloc_failures_for_testing(void) {}
154
0
inline void OPENSSL_enable_malloc_failures_for_testing(void) {}
155
#endif
156
157
#if defined(__has_builtin)
158
#define OPENSSL_HAS_BUILTIN(x) __has_builtin(x)
159
#else
160
#define OPENSSL_HAS_BUILTIN(x) 0
161
#endif
162
163
164
// Pointer utility functions.
165
166
// buffers_alias returns one if |a| and |b| alias and zero otherwise.
167
static inline int buffers_alias(const void *a, size_t a_bytes, const void *b,
168
109k
                                size_t b_bytes) {
169
  // Cast |a| and |b| to integers. In C, pointer comparisons between unrelated
170
  // objects are undefined whereas pointer to integer conversions are merely
171
  // implementation-defined. We assume the implementation defined it in a sane
172
  // way.
173
109k
  uintptr_t a_u = (uintptr_t)a;
174
109k
  uintptr_t b_u = (uintptr_t)b;
175
109k
  return a_u + a_bytes > b_u && b_u + b_bytes > a_u;
176
109k
}
Unexecuted instantiation: err.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: evp.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: evp_asn1.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: evp_ctx.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: p_ec.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: p_ed25519.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: p_hkdf.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: p_rsa.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: p_x25519.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: mem.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: refcount.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: rsa_asn1.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: rsa_crypt.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: thread_pthread.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: bcm.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: convert.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: asn1_compat.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: cbb.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: cbs.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: crypto.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: curve25519.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
curve25519_64_adx.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Line
Count
Source
168
109k
                                size_t b_bytes) {
169
  // Cast |a| and |b| to integers. In C, pointer comparisons between unrelated
170
  // objects are undefined whereas pointer to integer conversions are merely
171
  // implementation-defined. We assume the implementation defined it in a sane
172
  // way.
173
109k
  uintptr_t a_u = (uintptr_t)a;
174
109k
  uintptr_t b_u = (uintptr_t)b;
175
109k
  return a_u + a_bytes > b_u && b_u + b_bytes > a_u;
176
109k
}
Unexecuted instantiation: digest_extra.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: dsa.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: dsa_asn1.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: ec_asn1.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: ecdh.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: engine.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: p_dh.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: ex_data.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: md4.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: md5.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: obj.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: deterministic.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: fork_detect.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: forkunsafe.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: stack.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: a_object.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: bio.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: file.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: blake2.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: exponentiation.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: chacha.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: cpu_intel.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
Unexecuted instantiation: lhash.cc:buffers_alias(void const*, unsigned long, void const*, unsigned long)
177
178
// align_pointer returns |ptr|, advanced to |alignment|. |alignment| must be a
179
// power of two, and |ptr| must have at least |alignment - 1| bytes of scratch
180
// space.
181
0
static inline void *align_pointer(void *ptr, size_t alignment) {
182
  // |alignment| must be a power of two.
183
0
  assert(alignment != 0 && (alignment & (alignment - 1)) == 0);
184
  // Instead of aligning |ptr| as a |uintptr_t| and casting back, compute the
185
  // offset and advance in pointer space. C guarantees that casting from pointer
186
  // to |uintptr_t| and back gives the same pointer, but general
187
  // integer-to-pointer conversions are implementation-defined. GCC does define
188
  // it in the useful way, but this makes fewer assumptions.
189
0
  uintptr_t offset = (0u - (uintptr_t)ptr) & (alignment - 1);
190
0
  ptr = (char *)ptr + offset;
191
0
  assert(((uintptr_t)ptr & (alignment - 1)) == 0);
192
0
  return ptr;
193
0
}
Unexecuted instantiation: err.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: evp.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: evp_asn1.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: evp_ctx.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: p_ec.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: p_ed25519.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: p_hkdf.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: p_rsa.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: p_x25519.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: mem.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: refcount.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: rsa_asn1.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: rsa_crypt.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: thread_pthread.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: bcm.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: convert.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: asn1_compat.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: cbb.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: cbs.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: crypto.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: curve25519.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: curve25519_64_adx.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: digest_extra.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: dsa.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: dsa_asn1.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: ec_asn1.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: ecdh.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: engine.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: p_dh.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: ex_data.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: md4.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: md5.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: obj.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: deterministic.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: fork_detect.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: forkunsafe.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: stack.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: a_object.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: bio.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: file.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: blake2.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: exponentiation.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: chacha.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: cpu_intel.cc:align_pointer(void*, unsigned long)
Unexecuted instantiation: lhash.cc:align_pointer(void*, unsigned long)
194
195
196
// Constant-time utility functions.
197
//
198
// The following methods return a bitmask of all ones (0xff...f) for true and 0
199
// for false. This is useful for choosing a value based on the result of a
200
// conditional in constant time. For example,
201
//
202
// if (a < b) {
203
//   c = a;
204
// } else {
205
//   c = b;
206
// }
207
//
208
// can be written as
209
//
210
// crypto_word_t lt = constant_time_lt_w(a, b);
211
// c = constant_time_select_w(lt, a, b);
212
213
// crypto_word_t is the type that most constant-time functions use. Ideally we
214
// would like it to be |size_t|, but NaCl builds in 64-bit mode with 32-bit
215
// pointers, which means that |size_t| can be 32 bits when |BN_ULONG| is 64
216
// bits. Since we want to be able to do constant-time operations on a
217
// |BN_ULONG|, |crypto_word_t| is defined as an unsigned value with the native
218
// word length.
219
#if defined(OPENSSL_64_BIT)
220
typedef uint64_t crypto_word_t;
221
#elif defined(OPENSSL_32_BIT)
222
typedef uint32_t crypto_word_t;
223
#else
224
#error "Must define either OPENSSL_32_BIT or OPENSSL_64_BIT"
225
#endif
226
227
0
#define CONSTTIME_TRUE_W ~((crypto_word_t)0)
228
0
#define CONSTTIME_FALSE_W ((crypto_word_t)0)
229
#define CONSTTIME_TRUE_8 ((uint8_t)0xff)
230
#define CONSTTIME_FALSE_8 ((uint8_t)0)
231
232
// value_barrier_w returns |a|, but prevents GCC and Clang from reasoning about
233
// the returned value. This is used to mitigate compilers undoing constant-time
234
// code, until we can express our requirements directly in the language.
235
//
236
// Note the compiler is aware that |value_barrier_w| has no side effects and
237
// always has the same output for a given input. This allows it to eliminate
238
// dead code, move computations across loops, and vectorize.
239
43.9M
static inline crypto_word_t value_barrier_w(crypto_word_t a) {
240
43.9M
#if defined(__GNUC__) || defined(__clang__)
241
43.9M
  __asm__("" : "+r"(a) : /* no inputs */);
242
43.9M
#endif
243
43.9M
  return a;
244
43.9M
}
Unexecuted instantiation: err.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: evp.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: evp_asn1.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: evp_ctx.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: p_ec.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: p_ed25519.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: p_hkdf.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: p_rsa.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: p_x25519.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: mem.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: refcount.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: rsa_asn1.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: rsa_crypt.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: thread_pthread.cc:value_barrier_w(unsigned long)
bcm.cc:value_barrier_w(unsigned long)
Line
Count
Source
239
35.3M
static inline crypto_word_t value_barrier_w(crypto_word_t a) {
240
35.3M
#if defined(__GNUC__) || defined(__clang__)
241
35.3M
  __asm__("" : "+r"(a) : /* no inputs */);
242
35.3M
#endif
243
35.3M
  return a;
244
35.3M
}
Unexecuted instantiation: convert.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: asn1_compat.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: cbb.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: cbs.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: crypto.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: curve25519.cc:value_barrier_w(unsigned long)
curve25519_64_adx.cc:value_barrier_w(unsigned long)
Line
Count
Source
239
8.57M
static inline crypto_word_t value_barrier_w(crypto_word_t a) {
240
8.57M
#if defined(__GNUC__) || defined(__clang__)
241
8.57M
  __asm__("" : "+r"(a) : /* no inputs */);
242
8.57M
#endif
243
8.57M
  return a;
244
8.57M
}
Unexecuted instantiation: digest_extra.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: dsa.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: dsa_asn1.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: ec_asn1.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: ecdh.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: engine.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: p_dh.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: ex_data.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: md4.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: md5.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: obj.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: deterministic.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: fork_detect.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: forkunsafe.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: stack.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: a_object.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: bio.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: file.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: blake2.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: exponentiation.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: chacha.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: cpu_intel.cc:value_barrier_w(unsigned long)
Unexecuted instantiation: lhash.cc:value_barrier_w(unsigned long)
245
246
// value_barrier_u32 behaves like |value_barrier_w| but takes a |uint32_t|.
247
2.09M
static inline uint32_t value_barrier_u32(uint32_t a) {
248
2.09M
#if defined(__GNUC__) || defined(__clang__)
249
2.09M
  __asm__("" : "+r"(a) : /* no inputs */);
250
2.09M
#endif
251
2.09M
  return a;
252
2.09M
}
Unexecuted instantiation: err.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: evp.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: evp_asn1.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: evp_ctx.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: p_dh_asn1.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: p_dsa_asn1.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: p_ec.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: p_ec_asn1.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: p_ed25519.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: p_ed25519_asn1.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: p_hkdf.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: p_rsa.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: p_rsa_asn1.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: p_x25519.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: p_x25519_asn1.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: mem.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: refcount.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: rsa_asn1.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: rsa_crypt.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: thread_pthread.cc:value_barrier_u32(unsigned int)
bcm.cc:value_barrier_u32(unsigned int)
Line
Count
Source
247
1.67M
static inline uint32_t value_barrier_u32(uint32_t a) {
248
1.67M
#if defined(__GNUC__) || defined(__clang__)
249
1.67M
  __asm__("" : "+r"(a) : /* no inputs */);
250
1.67M
#endif
251
1.67M
  return a;
252
1.67M
}
Unexecuted instantiation: convert.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: asn1_compat.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: cbb.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: cbs.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: crypto.cc:value_barrier_u32(unsigned int)
curve25519.cc:value_barrier_u32(unsigned int)
Line
Count
Source
247
426k
static inline uint32_t value_barrier_u32(uint32_t a) {
248
426k
#if defined(__GNUC__) || defined(__clang__)
249
426k
  __asm__("" : "+r"(a) : /* no inputs */);
250
426k
#endif
251
426k
  return a;
252
426k
}
Unexecuted instantiation: curve25519_64_adx.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: digest_extra.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: dsa.cc:value_barrier_u32(unsigned int)
dsa_asn1.cc:value_barrier_u32(unsigned int)
Line
Count
Source
247
569
static inline uint32_t value_barrier_u32(uint32_t a) {
248
569
#if defined(__GNUC__) || defined(__clang__)
249
569
  __asm__("" : "+r"(a) : /* no inputs */);
250
569
#endif
251
569
  return a;
252
569
}
Unexecuted instantiation: ec_asn1.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: ecdh.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: ecdsa_asn1.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: engine.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: p_dh.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: ex_data.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: md4.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: md5.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: obj.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: deterministic.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: fork_detect.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: forkunsafe.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: stack.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: a_object.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: bio.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: file.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: blake2.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: exponentiation.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: chacha.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: cpu_intel.cc:value_barrier_u32(unsigned int)
Unexecuted instantiation: lhash.cc:value_barrier_u32(unsigned int)
253
254
// value_barrier_u64 behaves like |value_barrier_w| but takes a |uint64_t|.
255
0
static inline uint64_t value_barrier_u64(uint64_t a) {
256
0
#if defined(__GNUC__) || defined(__clang__)
257
0
  __asm__("" : "+r"(a) : /* no inputs */);
258
0
#endif
259
0
  return a;
260
0
}
Unexecuted instantiation: err.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: evp.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: evp_asn1.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: evp_ctx.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: p_ec.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: p_ed25519.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: p_hkdf.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: p_rsa.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: p_x25519.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: mem.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: refcount.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: rsa_asn1.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: rsa_crypt.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: thread_pthread.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: bcm.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: convert.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: asn1_compat.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: cbb.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: cbs.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: crypto.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: curve25519.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: curve25519_64_adx.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: digest_extra.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: dsa.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: dsa_asn1.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: ec_asn1.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: ecdh.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: engine.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: p_dh.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: ex_data.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: md4.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: md5.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: obj.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: deterministic.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: fork_detect.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: forkunsafe.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: stack.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: a_object.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: bio.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: file.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: blake2.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: exponentiation.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: chacha.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: cpu_intel.cc:value_barrier_u64(unsigned long)
Unexecuted instantiation: lhash.cc:value_barrier_u64(unsigned long)
261
262
// |value_barrier_u8| could be defined as above, but compilers other than
263
// clang seem to still materialize 0x00..00MM instead of reusing 0x??..??MM.
264
265
// constant_time_msb_w returns the given value with the MSB copied to all the
266
// other bits.
267
1.52M
static inline crypto_word_t constant_time_msb_w(crypto_word_t a) {
268
1.52M
  return 0u - (a >> (sizeof(a) * 8 - 1));
269
1.52M
}
Unexecuted instantiation: err.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: evp.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: evp_asn1.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: evp_ctx.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: p_ec.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: p_ed25519.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: p_hkdf.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: p_rsa.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: p_x25519.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: mem.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: refcount.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: rsa_asn1.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: rsa_crypt.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: thread_pthread.cc:constant_time_msb_w(unsigned long)
bcm.cc:constant_time_msb_w(unsigned long)
Line
Count
Source
267
1.41M
static inline crypto_word_t constant_time_msb_w(crypto_word_t a) {
268
1.41M
  return 0u - (a >> (sizeof(a) * 8 - 1));
269
1.41M
}
Unexecuted instantiation: convert.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: asn1_compat.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: cbb.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: cbs.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: crypto.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: curve25519.cc:constant_time_msb_w(unsigned long)
curve25519_64_adx.cc:constant_time_msb_w(unsigned long)
Line
Count
Source
267
109k
static inline crypto_word_t constant_time_msb_w(crypto_word_t a) {
268
109k
  return 0u - (a >> (sizeof(a) * 8 - 1));
269
109k
}
Unexecuted instantiation: digest_extra.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: dsa.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: dsa_asn1.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: ec_asn1.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: ecdh.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: engine.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: p_dh.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: ex_data.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: md4.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: md5.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: obj.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: deterministic.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: fork_detect.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: forkunsafe.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: stack.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: a_object.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: bio.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: file.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: blake2.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: exponentiation.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: chacha.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: cpu_intel.cc:constant_time_msb_w(unsigned long)
Unexecuted instantiation: lhash.cc:constant_time_msb_w(unsigned long)
270
271
// constant_time_lt_w returns 0xff..f if a < b and 0 otherwise.
272
static inline crypto_word_t constant_time_lt_w(crypto_word_t a,
273
56.1k
                                               crypto_word_t b) {
274
  // Consider the two cases of the problem:
275
  //   msb(a) == msb(b): a < b iff the MSB of a - b is set.
276
  //   msb(a) != msb(b): a < b iff the MSB of b is set.
277
  //
278
  // If msb(a) == msb(b) then the following evaluates as:
279
  //   msb(a^((a^b)|((a-b)^a))) ==
280
  //   msb(a^((a-b) ^ a))       ==   (because msb(a^b) == 0)
281
  //   msb(a^a^(a-b))           ==   (rearranging)
282
  //   msb(a-b)                      (because ∀x. x^x == 0)
283
  //
284
  // Else, if msb(a) != msb(b) then the following evaluates as:
285
  //   msb(a^((a^b)|((a-b)^a))) ==
286
  //   msb(a^(𝟙 | ((a-b)^a)))   ==   (because msb(a^b) == 1 and 𝟙
287
  //                                  represents a value s.t. msb(𝟙) = 1)
288
  //   msb(a^𝟙)                 ==   (because ORing with 1 results in 1)
289
  //   msb(b)
290
  //
291
  //
292
  // Here is an SMT-LIB verification of this formula:
293
  //
294
  // (define-fun lt ((a (_ BitVec 32)) (b (_ BitVec 32))) (_ BitVec 32)
295
  //   (bvxor a (bvor (bvxor a b) (bvxor (bvsub a b) a)))
296
  // )
297
  //
298
  // (declare-fun a () (_ BitVec 32))
299
  // (declare-fun b () (_ BitVec 32))
300
  //
301
  // (assert (not (= (= #x00000001 (bvlshr (lt a b) #x0000001f)) (bvult a b))))
302
  // (check-sat)
303
  // (get-model)
304
56.1k
  return constant_time_msb_w(a ^ ((a ^ b) | ((a - b) ^ a)));
305
56.1k
}
Unexecuted instantiation: err.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: evp.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: evp_asn1.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: evp_ctx.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: p_ec.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: p_ed25519.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: p_hkdf.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: p_rsa.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: p_x25519.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: mem.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: refcount.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: rsa_asn1.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: rsa_crypt.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: thread_pthread.cc:constant_time_lt_w(unsigned long, unsigned long)
bcm.cc:constant_time_lt_w(unsigned long, unsigned long)
Line
Count
Source
273
56.1k
                                               crypto_word_t b) {
274
  // Consider the two cases of the problem:
275
  //   msb(a) == msb(b): a < b iff the MSB of a - b is set.
276
  //   msb(a) != msb(b): a < b iff the MSB of b is set.
277
  //
278
  // If msb(a) == msb(b) then the following evaluates as:
279
  //   msb(a^((a^b)|((a-b)^a))) ==
280
  //   msb(a^((a-b) ^ a))       ==   (because msb(a^b) == 0)
281
  //   msb(a^a^(a-b))           ==   (rearranging)
282
  //   msb(a-b)                      (because ∀x. x^x == 0)
283
  //
284
  // Else, if msb(a) != msb(b) then the following evaluates as:
285
  //   msb(a^((a^b)|((a-b)^a))) ==
286
  //   msb(a^(𝟙 | ((a-b)^a)))   ==   (because msb(a^b) == 1 and 𝟙
287
  //                                  represents a value s.t. msb(𝟙) = 1)
288
  //   msb(a^𝟙)                 ==   (because ORing with 1 results in 1)
289
  //   msb(b)
290
  //
291
  //
292
  // Here is an SMT-LIB verification of this formula:
293
  //
294
  // (define-fun lt ((a (_ BitVec 32)) (b (_ BitVec 32))) (_ BitVec 32)
295
  //   (bvxor a (bvor (bvxor a b) (bvxor (bvsub a b) a)))
296
  // )
297
  //
298
  // (declare-fun a () (_ BitVec 32))
299
  // (declare-fun b () (_ BitVec 32))
300
  //
301
  // (assert (not (= (= #x00000001 (bvlshr (lt a b) #x0000001f)) (bvult a b))))
302
  // (check-sat)
303
  // (get-model)
304
56.1k
  return constant_time_msb_w(a ^ ((a ^ b) | ((a - b) ^ a)));
305
56.1k
}
Unexecuted instantiation: convert.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: asn1_compat.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: cbb.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: cbs.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: crypto.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: curve25519.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: curve25519_64_adx.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: digest_extra.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: dsa.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: dsa_asn1.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: ec_asn1.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: ecdh.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: engine.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: p_dh.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: ex_data.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: md4.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: md5.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: obj.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: deterministic.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: fork_detect.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: forkunsafe.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: stack.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: a_object.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: bio.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: file.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: blake2.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: exponentiation.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: chacha.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: cpu_intel.cc:constant_time_lt_w(unsigned long, unsigned long)
Unexecuted instantiation: lhash.cc:constant_time_lt_w(unsigned long, unsigned long)
306
307
// constant_time_lt_8 acts like |constant_time_lt_w| but returns an 8-bit
308
// mask.
309
0
static inline uint8_t constant_time_lt_8(crypto_word_t a, crypto_word_t b) {
310
0
  return (uint8_t)(constant_time_lt_w(a, b));
311
0
}
Unexecuted instantiation: err.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: evp.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: evp_asn1.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: evp_ctx.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: p_ec.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: p_ed25519.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: p_hkdf.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: p_rsa.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: p_x25519.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: mem.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: refcount.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: rsa_asn1.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: rsa_crypt.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: thread_pthread.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: bcm.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: convert.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: asn1_compat.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: cbb.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: cbs.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: crypto.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: curve25519.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: curve25519_64_adx.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: digest_extra.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: dsa.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: dsa_asn1.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: ec_asn1.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: ecdh.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: engine.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: p_dh.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: ex_data.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: md4.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: md5.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: obj.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: deterministic.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: fork_detect.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: forkunsafe.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: stack.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: a_object.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: bio.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: file.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: blake2.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: exponentiation.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: chacha.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: cpu_intel.cc:constant_time_lt_8(unsigned long, unsigned long)
Unexecuted instantiation: lhash.cc:constant_time_lt_8(unsigned long, unsigned long)
312
313
// constant_time_ge_w returns 0xff..f if a >= b and 0 otherwise.
314
static inline crypto_word_t constant_time_ge_w(crypto_word_t a,
315
0
                                               crypto_word_t b) {
316
0
  return ~constant_time_lt_w(a, b);
317
0
}
Unexecuted instantiation: err.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: evp.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: evp_asn1.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: evp_ctx.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: p_ec.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: p_ed25519.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: p_hkdf.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: p_rsa.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: p_x25519.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: mem.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: refcount.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: rsa_asn1.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: rsa_crypt.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: thread_pthread.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: bcm.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: convert.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: asn1_compat.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: cbb.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: cbs.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: crypto.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: curve25519.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: curve25519_64_adx.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: digest_extra.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: dsa.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: dsa_asn1.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: ec_asn1.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: ecdh.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: engine.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: p_dh.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: ex_data.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: md4.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: md5.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: obj.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: deterministic.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: fork_detect.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: forkunsafe.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: stack.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: a_object.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: bio.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: file.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: blake2.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: exponentiation.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: chacha.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: cpu_intel.cc:constant_time_ge_w(unsigned long, unsigned long)
Unexecuted instantiation: lhash.cc:constant_time_ge_w(unsigned long, unsigned long)
318
319
// constant_time_ge_8 acts like |constant_time_ge_w| but returns an 8-bit
320
// mask.
321
0
static inline uint8_t constant_time_ge_8(crypto_word_t a, crypto_word_t b) {
322
0
  return (uint8_t)(constant_time_ge_w(a, b));
323
0
}
Unexecuted instantiation: err.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: evp.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: evp_asn1.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: evp_ctx.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: p_ec.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: p_ed25519.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: p_hkdf.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: p_rsa.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: p_x25519.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: mem.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: refcount.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: rsa_asn1.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: rsa_crypt.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: thread_pthread.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: bcm.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: convert.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: asn1_compat.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: cbb.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: cbs.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: crypto.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: curve25519.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: curve25519_64_adx.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: digest_extra.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: dsa.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: dsa_asn1.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: ec_asn1.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: ecdh.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: engine.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: p_dh.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: ex_data.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: md4.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: md5.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: obj.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: deterministic.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: fork_detect.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: forkunsafe.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: stack.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: a_object.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: bio.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: file.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: blake2.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: exponentiation.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: chacha.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: cpu_intel.cc:constant_time_ge_8(unsigned long, unsigned long)
Unexecuted instantiation: lhash.cc:constant_time_ge_8(unsigned long, unsigned long)
324
325
// constant_time_is_zero returns 0xff..f if a == 0 and 0 otherwise.
326
1.45M
static inline crypto_word_t constant_time_is_zero_w(crypto_word_t a) {
327
  // Here is an SMT-LIB verification of this formula:
328
  //
329
  // (define-fun is_zero ((a (_ BitVec 32))) (_ BitVec 32)
330
  //   (bvand (bvnot a) (bvsub a #x00000001))
331
  // )
332
  //
333
  // (declare-fun a () (_ BitVec 32))
334
  //
335
  // (assert (not (= (= #x00000001 (bvlshr (is_zero a) #x0000001f)) (= a
336
  // #x00000000)))) (check-sat) (get-model)
337
1.45M
  return constant_time_msb_w(~a & (a - 1));
338
1.45M
}
Unexecuted instantiation: err.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: evp.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: evp_asn1.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: evp_ctx.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: p_ec.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: p_ed25519.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: p_hkdf.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: p_rsa.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: p_x25519.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: mem.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: refcount.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: rsa_asn1.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: rsa_crypt.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: thread_pthread.cc:constant_time_is_zero_w(unsigned long)
bcm.cc:constant_time_is_zero_w(unsigned long)
Line
Count
Source
326
1.35M
static inline crypto_word_t constant_time_is_zero_w(crypto_word_t a) {
327
  // Here is an SMT-LIB verification of this formula:
328
  //
329
  // (define-fun is_zero ((a (_ BitVec 32))) (_ BitVec 32)
330
  //   (bvand (bvnot a) (bvsub a #x00000001))
331
  // )
332
  //
333
  // (declare-fun a () (_ BitVec 32))
334
  //
335
  // (assert (not (= (= #x00000001 (bvlshr (is_zero a) #x0000001f)) (= a
336
  // #x00000000)))) (check-sat) (get-model)
337
1.35M
  return constant_time_msb_w(~a & (a - 1));
338
1.35M
}
Unexecuted instantiation: convert.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: asn1_compat.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: cbb.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: cbs.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: crypto.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: curve25519.cc:constant_time_is_zero_w(unsigned long)
curve25519_64_adx.cc:constant_time_is_zero_w(unsigned long)
Line
Count
Source
326
99.2k
static inline crypto_word_t constant_time_is_zero_w(crypto_word_t a) {
327
  // Here is an SMT-LIB verification of this formula:
328
  //
329
  // (define-fun is_zero ((a (_ BitVec 32))) (_ BitVec 32)
330
  //   (bvand (bvnot a) (bvsub a #x00000001))
331
  // )
332
  //
333
  // (declare-fun a () (_ BitVec 32))
334
  //
335
  // (assert (not (= (= #x00000001 (bvlshr (is_zero a) #x0000001f)) (= a
336
  // #x00000000)))) (check-sat) (get-model)
337
99.2k
  return constant_time_msb_w(~a & (a - 1));
338
99.2k
}
Unexecuted instantiation: digest_extra.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: dsa.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: dsa_asn1.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: ec_asn1.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: ecdh.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: engine.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: p_dh.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: ex_data.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: md4.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: md5.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: obj.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: deterministic.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: fork_detect.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: forkunsafe.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: stack.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: a_object.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: bio.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: file.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: blake2.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: exponentiation.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: chacha.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: cpu_intel.cc:constant_time_is_zero_w(unsigned long)
Unexecuted instantiation: lhash.cc:constant_time_is_zero_w(unsigned long)
339
340
// constant_time_is_zero_8 acts like |constant_time_is_zero_w| but returns an
341
// 8-bit mask.
342
0
static inline uint8_t constant_time_is_zero_8(crypto_word_t a) {
343
0
  return (uint8_t)(constant_time_is_zero_w(a));
344
0
}
Unexecuted instantiation: err.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: evp.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: evp_asn1.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: evp_ctx.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: p_ec.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: p_ed25519.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: p_hkdf.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: p_rsa.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: p_x25519.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: mem.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: refcount.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: rsa_asn1.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: rsa_crypt.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: thread_pthread.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: bcm.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: convert.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: asn1_compat.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: cbb.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: cbs.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: crypto.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: curve25519.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: curve25519_64_adx.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: digest_extra.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: dsa.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: dsa_asn1.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: ec_asn1.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: ecdh.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: engine.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: p_dh.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: ex_data.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: md4.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: md5.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: obj.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: deterministic.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: fork_detect.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: forkunsafe.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: stack.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: a_object.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: bio.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: file.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: blake2.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: exponentiation.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: chacha.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: cpu_intel.cc:constant_time_is_zero_8(unsigned long)
Unexecuted instantiation: lhash.cc:constant_time_is_zero_8(unsigned long)
345
346
// constant_time_eq_w returns 0xff..f if a == b and 0 otherwise.
347
static inline crypto_word_t constant_time_eq_w(crypto_word_t a,
348
1.34M
                                               crypto_word_t b) {
349
1.34M
  return constant_time_is_zero_w(a ^ b);
350
1.34M
}
Unexecuted instantiation: err.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: evp.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: evp_asn1.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: evp_ctx.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: p_ec.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: p_ed25519.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: p_hkdf.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: p_rsa.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: p_x25519.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: mem.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: refcount.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: rsa_asn1.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: rsa_crypt.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: thread_pthread.cc:constant_time_eq_w(unsigned long, unsigned long)
bcm.cc:constant_time_eq_w(unsigned long, unsigned long)
Line
Count
Source
348
1.26M
                                               crypto_word_t b) {
349
1.26M
  return constant_time_is_zero_w(a ^ b);
350
1.26M
}
Unexecuted instantiation: convert.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: asn1_compat.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: cbb.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: cbs.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: crypto.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: curve25519.cc:constant_time_eq_w(unsigned long, unsigned long)
curve25519_64_adx.cc:constant_time_eq_w(unsigned long, unsigned long)
Line
Count
Source
348
79.3k
                                               crypto_word_t b) {
349
79.3k
  return constant_time_is_zero_w(a ^ b);
350
79.3k
}
Unexecuted instantiation: digest_extra.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: dsa.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: dsa_asn1.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: ec_asn1.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: ecdh.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: engine.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: p_dh.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: ex_data.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: md4.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: md5.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: obj.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: deterministic.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: fork_detect.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: forkunsafe.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: stack.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: a_object.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: bio.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: file.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: blake2.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: exponentiation.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: chacha.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: cpu_intel.cc:constant_time_eq_w(unsigned long, unsigned long)
Unexecuted instantiation: lhash.cc:constant_time_eq_w(unsigned long, unsigned long)
351
352
// constant_time_eq_8 acts like |constant_time_eq_w| but returns an 8-bit
353
// mask.
354
0
static inline uint8_t constant_time_eq_8(crypto_word_t a, crypto_word_t b) {
355
0
  return (uint8_t)(constant_time_eq_w(a, b));
356
0
}
Unexecuted instantiation: err.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: evp.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: evp_asn1.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: evp_ctx.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: p_ec.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: p_ed25519.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: p_hkdf.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: p_rsa.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: p_x25519.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: mem.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: refcount.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: rsa_asn1.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: rsa_crypt.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: thread_pthread.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: bcm.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: convert.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: asn1_compat.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: cbb.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: cbs.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: crypto.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: curve25519.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: curve25519_64_adx.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: digest_extra.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: dsa.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: dsa_asn1.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: ec_asn1.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: ecdh.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: engine.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: p_dh.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: ex_data.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: md4.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: md5.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: obj.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: deterministic.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: fork_detect.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: forkunsafe.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: stack.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: a_object.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: bio.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: file.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: blake2.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: exponentiation.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: chacha.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: cpu_intel.cc:constant_time_eq_8(unsigned long, unsigned long)
Unexecuted instantiation: lhash.cc:constant_time_eq_8(unsigned long, unsigned long)
357
358
// constant_time_eq_int acts like |constant_time_eq_w| but works on int
359
// values.
360
74.0k
static inline crypto_word_t constant_time_eq_int(int a, int b) {
361
74.0k
  return constant_time_eq_w((crypto_word_t)(a), (crypto_word_t)(b));
362
74.0k
}
Unexecuted instantiation: err.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: evp.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: evp_asn1.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: evp_ctx.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: p_dh_asn1.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: p_dsa_asn1.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: p_ec.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: p_ec_asn1.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: p_ed25519.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: p_ed25519_asn1.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: p_hkdf.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: p_rsa.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: p_rsa_asn1.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: p_x25519.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: p_x25519_asn1.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: mem.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: refcount.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: rsa_asn1.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: rsa_crypt.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: thread_pthread.cc:constant_time_eq_int(int, int)
bcm.cc:constant_time_eq_int(int, int)
Line
Count
Source
360
74.0k
static inline crypto_word_t constant_time_eq_int(int a, int b) {
361
74.0k
  return constant_time_eq_w((crypto_word_t)(a), (crypto_word_t)(b));
362
74.0k
}
Unexecuted instantiation: convert.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: asn1_compat.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: cbb.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: cbs.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: crypto.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: curve25519.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: curve25519_64_adx.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: digest_extra.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: dsa.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: dsa_asn1.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: ec_asn1.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: ecdh.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: ecdsa_asn1.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: engine.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: p_dh.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: ex_data.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: md4.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: md5.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: obj.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: deterministic.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: fork_detect.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: forkunsafe.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: stack.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: a_object.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: bio.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: file.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: blake2.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: exponentiation.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: chacha.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: cpu_intel.cc:constant_time_eq_int(int, int)
Unexecuted instantiation: lhash.cc:constant_time_eq_int(int, int)
363
364
// constant_time_eq_int_8 acts like |constant_time_eq_int| but returns an 8-bit
365
// mask.
366
0
static inline uint8_t constant_time_eq_int_8(int a, int b) {
367
0
  return constant_time_eq_8((crypto_word_t)(a), (crypto_word_t)(b));
368
0
}
Unexecuted instantiation: err.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: evp.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: evp_asn1.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: evp_ctx.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: p_dh_asn1.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: p_dsa_asn1.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: p_ec.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: p_ec_asn1.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: p_ed25519.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: p_ed25519_asn1.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: p_hkdf.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: p_rsa.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: p_rsa_asn1.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: p_x25519.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: p_x25519_asn1.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: mem.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: refcount.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: rsa_asn1.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: rsa_crypt.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: thread_pthread.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: bcm.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: convert.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: asn1_compat.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: cbb.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: cbs.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: crypto.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: curve25519.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: curve25519_64_adx.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: digest_extra.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: dsa.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: dsa_asn1.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: ec_asn1.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: ecdh.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: ecdsa_asn1.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: engine.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: p_dh.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: ex_data.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: md4.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: md5.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: obj.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: deterministic.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: fork_detect.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: forkunsafe.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: stack.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: a_object.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: bio.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: file.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: blake2.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: exponentiation.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: chacha.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: cpu_intel.cc:constant_time_eq_int_8(int, int)
Unexecuted instantiation: lhash.cc:constant_time_eq_int_8(int, int)
369
370
// constant_time_select_w returns (mask & a) | (~mask & b). When |mask| is all
371
// 1s or all 0s (as returned by the methods above), the select methods return
372
// either |a| (if |mask| is nonzero) or |b| (if |mask| is zero).
373
static inline crypto_word_t constant_time_select_w(crypto_word_t mask,
374
                                                   crypto_word_t a,
375
34.6M
                                                   crypto_word_t b) {
376
  // Clang recognizes this pattern as a select. While it usually transforms it
377
  // to a cmov, it sometimes further transforms it into a branch, which we do
378
  // not want.
379
  //
380
  // Hiding the value of the mask from the compiler evades this transformation.
381
34.6M
  mask = value_barrier_w(mask);
382
34.6M
  return (mask & a) | (~mask & b);
383
34.6M
}
Unexecuted instantiation: err.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: evp.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: evp_asn1.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: evp_ctx.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: p_ec.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: p_ed25519.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: p_hkdf.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: p_rsa.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: p_x25519.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: mem.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: refcount.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: rsa_asn1.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: rsa_crypt.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: thread_pthread.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
bcm.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Line
Count
Source
375
34.6M
                                                   crypto_word_t b) {
376
  // Clang recognizes this pattern as a select. While it usually transforms it
377
  // to a cmov, it sometimes further transforms it into a branch, which we do
378
  // not want.
379
  //
380
  // Hiding the value of the mask from the compiler evades this transformation.
381
34.6M
  mask = value_barrier_w(mask);
382
34.6M
  return (mask & a) | (~mask & b);
383
34.6M
}
Unexecuted instantiation: convert.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: asn1_compat.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: cbb.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: cbs.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: crypto.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: curve25519.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: curve25519_64_adx.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: digest_extra.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: dsa.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: dsa_asn1.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: ec_asn1.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: ecdh.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: engine.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: p_dh.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: ex_data.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: md4.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: md5.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: obj.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: deterministic.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: fork_detect.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: forkunsafe.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: stack.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: a_object.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: bio.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: file.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: blake2.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: exponentiation.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: chacha.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: cpu_intel.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
Unexecuted instantiation: lhash.cc:constant_time_select_w(unsigned long, unsigned long, unsigned long)
384
385
// constant_time_select_8 acts like |constant_time_select| but operates on
386
// 8-bit values.
387
static inline uint8_t constant_time_select_8(crypto_word_t mask, uint8_t a,
388
952k
                                             uint8_t b) {
389
  // |mask| is a word instead of |uint8_t| to avoid materializing 0x000..0MM
390
  // Making both |mask| and its value barrier |uint8_t| would allow the compiler
391
  // to materialize 0x????..?MM instead, but only clang is that clever.
392
  // However, vectorization of bitwise operations seems to work better on
393
  // |uint8_t| than a mix of |uint64_t| and |uint8_t|, so |m| is cast to
394
  // |uint8_t| after the value barrier but before the bitwise operations.
395
952k
  uint8_t m = value_barrier_w(mask);
396
952k
  return (m & a) | (~m & b);
397
952k
}
Unexecuted instantiation: err.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: evp.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: evp_asn1.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: evp_ctx.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: p_dh_asn1.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: p_dsa_asn1.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: p_ec.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: p_ec_asn1.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: p_ed25519.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: p_ed25519_asn1.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: p_hkdf.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: p_rsa.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: p_rsa_asn1.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: p_x25519.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: p_x25519_asn1.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: mem.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: refcount.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: rsa_asn1.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: rsa_crypt.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: thread_pthread.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: bcm.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: convert.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: asn1_compat.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: cbb.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: cbs.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: crypto.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: curve25519.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
curve25519_64_adx.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Line
Count
Source
388
952k
                                             uint8_t b) {
389
  // |mask| is a word instead of |uint8_t| to avoid materializing 0x000..0MM
390
  // Making both |mask| and its value barrier |uint8_t| would allow the compiler
391
  // to materialize 0x????..?MM instead, but only clang is that clever.
392
  // However, vectorization of bitwise operations seems to work better on
393
  // |uint8_t| than a mix of |uint64_t| and |uint8_t|, so |m| is cast to
394
  // |uint8_t| after the value barrier but before the bitwise operations.
395
952k
  uint8_t m = value_barrier_w(mask);
396
952k
  return (m & a) | (~m & b);
397
952k
}
Unexecuted instantiation: digest_extra.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: dsa.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: dsa_asn1.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: ec_asn1.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: ecdh.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: ecdsa_asn1.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: engine.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: p_dh.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: ex_data.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: md4.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: md5.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: obj.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: deterministic.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: fork_detect.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: forkunsafe.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: stack.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: a_object.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: bio.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: file.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: blake2.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: exponentiation.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: chacha.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: cpu_intel.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
Unexecuted instantiation: lhash.cc:constant_time_select_8(unsigned long, unsigned char, unsigned char)
398
399
// constant_time_select_int acts like |constant_time_select| but operates on
400
// ints.
401
116k
static inline int constant_time_select_int(crypto_word_t mask, int a, int b) {
402
116k
  return (int)(constant_time_select_w(mask, (crypto_word_t)(a),
403
116k
                                      (crypto_word_t)(b)));
404
116k
}
Unexecuted instantiation: err.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: evp.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: evp_asn1.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: evp_ctx.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: p_dh_asn1.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: p_dsa_asn1.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: p_ec.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: p_ec_asn1.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: p_ed25519.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: p_ed25519_asn1.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: p_hkdf.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: p_rsa.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: p_rsa_asn1.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: p_x25519.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: p_x25519_asn1.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: mem.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: refcount.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: rsa_asn1.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: rsa_crypt.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: thread_pthread.cc:constant_time_select_int(unsigned long, int, int)
bcm.cc:constant_time_select_int(unsigned long, int, int)
Line
Count
Source
401
116k
static inline int constant_time_select_int(crypto_word_t mask, int a, int b) {
402
116k
  return (int)(constant_time_select_w(mask, (crypto_word_t)(a),
403
116k
                                      (crypto_word_t)(b)));
404
116k
}
Unexecuted instantiation: convert.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: asn1_compat.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: cbb.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: cbs.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: crypto.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: curve25519.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: curve25519_64_adx.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: digest_extra.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: dsa.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: dsa_asn1.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: ec_asn1.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: ecdh.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: ecdsa_asn1.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: engine.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: p_dh.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: ex_data.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: md4.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: md5.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: obj.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: deterministic.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: fork_detect.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: forkunsafe.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: stack.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: a_object.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: bio.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: file.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: blake2.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: exponentiation.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: chacha.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: cpu_intel.cc:constant_time_select_int(unsigned long, int, int)
Unexecuted instantiation: lhash.cc:constant_time_select_int(unsigned long, int, int)
405
406
// constant_time_conditional_memcpy copies |n| bytes from |src| to |dst| if
407
// |mask| is 0xff..ff and does nothing if |mask| is 0. The |n|-byte memory
408
// ranges at |dst| and |src| must not overlap, as when calling |memcpy|.
409
static inline void constant_time_conditional_memcpy(void *dst, const void *src,
410
                                                    const size_t n,
411
29.7k
                                                    const crypto_word_t mask) {
412
29.7k
  assert(!buffers_alias(dst, n, src, n));
413
29.7k
  uint8_t *out = (uint8_t *)dst;
414
29.7k
  const uint8_t *in = (const uint8_t *)src;
415
982k
  for (size_t i = 0; i < n; i++) {
416
952k
    out[i] = constant_time_select_8(mask, in[i], out[i]);
417
952k
  }
418
29.7k
}
Unexecuted instantiation: err.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: evp.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: evp_asn1.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: evp_ctx.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_ec.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_ed25519.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_hkdf.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_rsa.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_x25519.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: mem.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: refcount.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: rsa_asn1.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: rsa_crypt.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: thread_pthread.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: bcm.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: convert.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: asn1_compat.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: cbb.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: cbs.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: crypto.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: curve25519.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
curve25519_64_adx.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Line
Count
Source
411
29.7k
                                                    const crypto_word_t mask) {
412
29.7k
  assert(!buffers_alias(dst, n, src, n));
413
29.7k
  uint8_t *out = (uint8_t *)dst;
414
29.7k
  const uint8_t *in = (const uint8_t *)src;
415
982k
  for (size_t i = 0; i < n; i++) {
416
952k
    out[i] = constant_time_select_8(mask, in[i], out[i]);
417
952k
  }
418
29.7k
}
Unexecuted instantiation: digest_extra.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: dsa.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: dsa_asn1.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: ec_asn1.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: ecdh.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: engine.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_dh.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: ex_data.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: md4.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: md5.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: obj.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: deterministic.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: fork_detect.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: forkunsafe.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: stack.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: a_object.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: bio.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: file.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: blake2.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: exponentiation.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: chacha.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: cpu_intel.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: lhash.cc:constant_time_conditional_memcpy(void*, void const*, unsigned long, unsigned long)
419
420
// constant_time_conditional_memxor xors |n| bytes from |src| to |dst| if
421
// |mask| is 0xff..ff and does nothing if |mask| is 0. The |n|-byte memory
422
// ranges at |dst| and |src| must not overlap, as when calling |memcpy|.
423
static inline void constant_time_conditional_memxor(void *dst, const void *src,
424
                                                    size_t n,
425
79.3k
                                                    const crypto_word_t mask) {
426
79.3k
  assert(!buffers_alias(dst, n, src, n));
427
79.3k
  uint8_t *out = (uint8_t *)dst;
428
79.3k
  const uint8_t *in = (const uint8_t *)src;
429
#if defined(__GNUC__) && !defined(__clang__)
430
  // gcc 13.2.0 doesn't automatically vectorize this loop regardless of barrier
431
  typedef uint8_t v32u8 __attribute__((vector_size(32), aligned(1), may_alias));
432
  size_t n_vec = n & ~(size_t)31;
433
  v32u8 masks = ((uint8_t)mask - (v32u8){});  // broadcast
434
  for (size_t i = 0; i < n_vec; i += 32) {
435
    *(v32u8 *)&out[i] ^= masks & *(v32u8 *)&in[i];
436
  }
437
  out += n_vec;
438
  n -= n_vec;
439
#endif
440
7.69M
  for (size_t i = 0; i < n; i++) {
441
7.61M
    out[i] ^= value_barrier_w(mask) & in[i];
442
7.61M
  }
443
79.3k
}
Unexecuted instantiation: err.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: evp.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: evp_asn1.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: evp_ctx.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_ec.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_ed25519.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_hkdf.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_rsa.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_x25519.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: mem.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: refcount.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: rsa_asn1.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: rsa_crypt.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: thread_pthread.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: bcm.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: convert.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: asn1_compat.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: cbb.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: cbs.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: crypto.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: curve25519.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
curve25519_64_adx.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Line
Count
Source
425
79.3k
                                                    const crypto_word_t mask) {
426
79.3k
  assert(!buffers_alias(dst, n, src, n));
427
79.3k
  uint8_t *out = (uint8_t *)dst;
428
79.3k
  const uint8_t *in = (const uint8_t *)src;
429
#if defined(__GNUC__) && !defined(__clang__)
430
  // gcc 13.2.0 doesn't automatically vectorize this loop regardless of barrier
431
  typedef uint8_t v32u8 __attribute__((vector_size(32), aligned(1), may_alias));
432
  size_t n_vec = n & ~(size_t)31;
433
  v32u8 masks = ((uint8_t)mask - (v32u8){});  // broadcast
434
  for (size_t i = 0; i < n_vec; i += 32) {
435
    *(v32u8 *)&out[i] ^= masks & *(v32u8 *)&in[i];
436
  }
437
  out += n_vec;
438
  n -= n_vec;
439
#endif
440
7.69M
  for (size_t i = 0; i < n; i++) {
441
7.61M
    out[i] ^= value_barrier_w(mask) & in[i];
442
7.61M
  }
443
79.3k
}
Unexecuted instantiation: digest_extra.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: dsa.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: dsa_asn1.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: ec_asn1.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: ecdh.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: engine.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: p_dh.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: ex_data.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: md4.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: md5.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: obj.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: deterministic.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: fork_detect.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: forkunsafe.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: stack.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: a_object.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: bio.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: file.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: blake2.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: exponentiation.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: chacha.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: cpu_intel.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
Unexecuted instantiation: lhash.cc:constant_time_conditional_memxor(void*, void const*, unsigned long, unsigned long)
444
445
#if defined(BORINGSSL_CONSTANT_TIME_VALIDATION)
446
447
// CONSTTIME_SECRET takes a pointer and a number of bytes and marks that region
448
// of memory as secret. Secret data is tracked as it flows to registers and
449
// other parts of a memory. If secret data is used as a condition for a branch,
450
// or as a memory index, it will trigger warnings in valgrind.
451
#define CONSTTIME_SECRET(ptr, len) VALGRIND_MAKE_MEM_UNDEFINED(ptr, len)
452
453
// CONSTTIME_DECLASSIFY takes a pointer and a number of bytes and marks that
454
// region of memory as public. Public data is not subject to constant-time
455
// rules.
456
#define CONSTTIME_DECLASSIFY(ptr, len) VALGRIND_MAKE_MEM_DEFINED(ptr, len)
457
458
#else
459
460
#define CONSTTIME_SECRET(ptr, len)
461
#define CONSTTIME_DECLASSIFY(ptr, len)
462
463
#endif  // BORINGSSL_CONSTANT_TIME_VALIDATION
464
465
55.1k
static inline crypto_word_t constant_time_declassify_w(crypto_word_t v) {
466
  // Return |v| through a value barrier to be safe. Valgrind-based constant-time
467
  // validation is partly to check the compiler has not undone any constant-time
468
  // work. Any place |BORINGSSL_CONSTANT_TIME_VALIDATION| influences
469
  // optimizations, this validation is inaccurate.
470
  //
471
  // However, by sending pointers through valgrind, we likely inhibit escape
472
  // analysis. On local variables, particularly booleans, we likely
473
  // significantly impact optimizations.
474
  //
475
  // Thus, to be safe, stick a value barrier, in hopes of comparably inhibiting
476
  // compiler analysis.
477
55.1k
  CONSTTIME_DECLASSIFY(&v, sizeof(v));
478
55.1k
  return value_barrier_w(v);
479
55.1k
}
Unexecuted instantiation: err.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: evp.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: evp_asn1.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: evp_ctx.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: p_ec.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: p_ed25519.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: p_hkdf.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: p_rsa.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: p_x25519.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: mem.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: refcount.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: rsa_asn1.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: rsa_crypt.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: thread_pthread.cc:constant_time_declassify_w(unsigned long)
bcm.cc:constant_time_declassify_w(unsigned long)
Line
Count
Source
465
55.1k
static inline crypto_word_t constant_time_declassify_w(crypto_word_t v) {
466
  // Return |v| through a value barrier to be safe. Valgrind-based constant-time
467
  // validation is partly to check the compiler has not undone any constant-time
468
  // work. Any place |BORINGSSL_CONSTANT_TIME_VALIDATION| influences
469
  // optimizations, this validation is inaccurate.
470
  //
471
  // However, by sending pointers through valgrind, we likely inhibit escape
472
  // analysis. On local variables, particularly booleans, we likely
473
  // significantly impact optimizations.
474
  //
475
  // Thus, to be safe, stick a value barrier, in hopes of comparably inhibiting
476
  // compiler analysis.
477
55.1k
  CONSTTIME_DECLASSIFY(&v, sizeof(v));
478
55.1k
  return value_barrier_w(v);
479
55.1k
}
Unexecuted instantiation: convert.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: asn1_compat.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: cbb.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: cbs.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: crypto.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: curve25519.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: curve25519_64_adx.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: digest_extra.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: dsa.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: dsa_asn1.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: ec_asn1.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: ecdh.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: engine.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: p_dh.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: ex_data.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: md4.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: md5.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: obj.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: deterministic.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: fork_detect.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: forkunsafe.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: stack.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: a_object.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: bio.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: file.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: blake2.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: exponentiation.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: chacha.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: cpu_intel.cc:constant_time_declassify_w(unsigned long)
Unexecuted instantiation: lhash.cc:constant_time_declassify_w(unsigned long)
480
481
2.09M
static inline int constant_time_declassify_int(int v) {
482
2.09M
  static_assert(sizeof(uint32_t) == sizeof(int),
483
2.09M
                "int is not the same size as uint32_t");
484
  // See comment above.
485
2.09M
  CONSTTIME_DECLASSIFY(&v, sizeof(v));
486
2.09M
  return value_barrier_u32(v);
487
2.09M
}
Unexecuted instantiation: err.cc:constant_time_declassify_int(int)
Unexecuted instantiation: evp.cc:constant_time_declassify_int(int)
Unexecuted instantiation: evp_asn1.cc:constant_time_declassify_int(int)
Unexecuted instantiation: evp_ctx.cc:constant_time_declassify_int(int)
Unexecuted instantiation: p_dh_asn1.cc:constant_time_declassify_int(int)
Unexecuted instantiation: p_dsa_asn1.cc:constant_time_declassify_int(int)
Unexecuted instantiation: p_ec.cc:constant_time_declassify_int(int)
Unexecuted instantiation: p_ec_asn1.cc:constant_time_declassify_int(int)
Unexecuted instantiation: p_ed25519.cc:constant_time_declassify_int(int)
Unexecuted instantiation: p_ed25519_asn1.cc:constant_time_declassify_int(int)
Unexecuted instantiation: p_hkdf.cc:constant_time_declassify_int(int)
Unexecuted instantiation: p_rsa.cc:constant_time_declassify_int(int)
Unexecuted instantiation: p_rsa_asn1.cc:constant_time_declassify_int(int)
Unexecuted instantiation: p_x25519.cc:constant_time_declassify_int(int)
Unexecuted instantiation: p_x25519_asn1.cc:constant_time_declassify_int(int)
Unexecuted instantiation: mem.cc:constant_time_declassify_int(int)
Unexecuted instantiation: refcount.cc:constant_time_declassify_int(int)
Unexecuted instantiation: rsa_asn1.cc:constant_time_declassify_int(int)
Unexecuted instantiation: rsa_crypt.cc:constant_time_declassify_int(int)
Unexecuted instantiation: thread_pthread.cc:constant_time_declassify_int(int)
bcm.cc:constant_time_declassify_int(int)
Line
Count
Source
481
1.67M
static inline int constant_time_declassify_int(int v) {
482
1.67M
  static_assert(sizeof(uint32_t) == sizeof(int),
483
1.67M
                "int is not the same size as uint32_t");
484
  // See comment above.
485
1.67M
  CONSTTIME_DECLASSIFY(&v, sizeof(v));
486
1.67M
  return value_barrier_u32(v);
487
1.67M
}
Unexecuted instantiation: convert.cc:constant_time_declassify_int(int)
Unexecuted instantiation: asn1_compat.cc:constant_time_declassify_int(int)
Unexecuted instantiation: cbb.cc:constant_time_declassify_int(int)
Unexecuted instantiation: cbs.cc:constant_time_declassify_int(int)
Unexecuted instantiation: crypto.cc:constant_time_declassify_int(int)
curve25519.cc:constant_time_declassify_int(int)
Line
Count
Source
481
426k
static inline int constant_time_declassify_int(int v) {
482
426k
  static_assert(sizeof(uint32_t) == sizeof(int),
483
426k
                "int is not the same size as uint32_t");
484
  // See comment above.
485
426k
  CONSTTIME_DECLASSIFY(&v, sizeof(v));
486
426k
  return value_barrier_u32(v);
487
426k
}
Unexecuted instantiation: curve25519_64_adx.cc:constant_time_declassify_int(int)
Unexecuted instantiation: digest_extra.cc:constant_time_declassify_int(int)
Unexecuted instantiation: dsa.cc:constant_time_declassify_int(int)
dsa_asn1.cc:constant_time_declassify_int(int)
Line
Count
Source
481
569
static inline int constant_time_declassify_int(int v) {
482
569
  static_assert(sizeof(uint32_t) == sizeof(int),
483
569
                "int is not the same size as uint32_t");
484
  // See comment above.
485
569
  CONSTTIME_DECLASSIFY(&v, sizeof(v));
486
569
  return value_barrier_u32(v);
487
569
}
Unexecuted instantiation: ec_asn1.cc:constant_time_declassify_int(int)
Unexecuted instantiation: ecdh.cc:constant_time_declassify_int(int)
Unexecuted instantiation: ecdsa_asn1.cc:constant_time_declassify_int(int)
Unexecuted instantiation: engine.cc:constant_time_declassify_int(int)
Unexecuted instantiation: p_dh.cc:constant_time_declassify_int(int)
Unexecuted instantiation: ex_data.cc:constant_time_declassify_int(int)
Unexecuted instantiation: md4.cc:constant_time_declassify_int(int)
Unexecuted instantiation: md5.cc:constant_time_declassify_int(int)
Unexecuted instantiation: obj.cc:constant_time_declassify_int(int)
Unexecuted instantiation: deterministic.cc:constant_time_declassify_int(int)
Unexecuted instantiation: fork_detect.cc:constant_time_declassify_int(int)
Unexecuted instantiation: forkunsafe.cc:constant_time_declassify_int(int)
Unexecuted instantiation: stack.cc:constant_time_declassify_int(int)
Unexecuted instantiation: a_object.cc:constant_time_declassify_int(int)
Unexecuted instantiation: bio.cc:constant_time_declassify_int(int)
Unexecuted instantiation: file.cc:constant_time_declassify_int(int)
Unexecuted instantiation: blake2.cc:constant_time_declassify_int(int)
Unexecuted instantiation: exponentiation.cc:constant_time_declassify_int(int)
Unexecuted instantiation: chacha.cc:constant_time_declassify_int(int)
Unexecuted instantiation: cpu_intel.cc:constant_time_declassify_int(int)
Unexecuted instantiation: lhash.cc:constant_time_declassify_int(int)
488
489
// declassify_assert behaves like |assert| but declassifies the result of
490
// evaluating |expr|. This allows the assertion to branch on the (presumably
491
// public) result, but still ensures that values leading up to the computation
492
// were secret.
493
2.09M
#define declassify_assert(expr) assert(constant_time_declassify_int(expr))
494
495
496
// Thread-safe initialisation.
497
498
#if !defined(OPENSSL_THREADS)
499
typedef uint32_t CRYPTO_once_t;
500
#define CRYPTO_ONCE_INIT 0
501
#elif defined(OPENSSL_WINDOWS_THREADS)
502
typedef INIT_ONCE CRYPTO_once_t;
503
#define CRYPTO_ONCE_INIT INIT_ONCE_STATIC_INIT
504
#elif defined(OPENSSL_PTHREADS)
505
typedef pthread_once_t CRYPTO_once_t;
506
#define CRYPTO_ONCE_INIT PTHREAD_ONCE_INIT
507
#else
508
#error "Unknown threading library"
509
#endif
510
511
// CRYPTO_once calls |init| exactly once per process. This is thread-safe: if
512
// concurrent threads call |CRYPTO_once| with the same |CRYPTO_once_t| argument
513
// then they will block until |init| completes, but |init| will have only been
514
// called once.
515
//
516
// The |once| argument must be a |CRYPTO_once_t| that has been initialised with
517
// the value |CRYPTO_ONCE_INIT|.
518
OPENSSL_EXPORT void CRYPTO_once(CRYPTO_once_t *once, void (*init)(void));
519
520
521
// Atomics.
522
//
523
// The following functions provide an API analogous to <stdatomic.h> from C11
524
// and abstract between a few variations on atomics we need to support.
525
526
#if defined(OPENSSL_THREADS)
527
528
using CRYPTO_atomic_u32 = std::atomic<uint32_t>;
529
530
static_assert(sizeof(CRYPTO_atomic_u32) == sizeof(uint32_t));
531
532
9.82k
inline uint32_t CRYPTO_atomic_load_u32(const CRYPTO_atomic_u32 *val) {
533
9.82k
  return val->load(std::memory_order_seq_cst);
534
9.82k
}
535
536
inline bool CRYPTO_atomic_compare_exchange_weak_u32(CRYPTO_atomic_u32 *val,
537
                                                    uint32_t *expected,
538
9.82k
                                                    uint32_t desired) {
539
9.82k
  return val->compare_exchange_weak(
540
9.82k
      *expected, desired, std::memory_order_seq_cst, std::memory_order_seq_cst);
541
9.82k
}
542
543
0
inline void CRYPTO_atomic_store_u32(CRYPTO_atomic_u32 *val, uint32_t desired) {
544
0
  val->store(desired, std::memory_order_seq_cst);
545
0
}
546
547
#else
548
549
typedef uint32_t CRYPTO_atomic_u32;
550
551
inline uint32_t CRYPTO_atomic_load_u32(CRYPTO_atomic_u32 *val) { return *val; }
552
553
inline int CRYPTO_atomic_compare_exchange_weak_u32(CRYPTO_atomic_u32 *val,
554
                                                   uint32_t *expected,
555
                                                   uint32_t desired) {
556
  if (*val != *expected) {
557
    *expected = *val;
558
    return 0;
559
  }
560
  *val = desired;
561
  return 1;
562
}
563
564
inline void CRYPTO_atomic_store_u32(CRYPTO_atomic_u32 *val, uint32_t desired) {
565
  *val = desired;
566
}
567
568
#endif
569
570
// See the comment in the |__cplusplus| section above.
571
static_assert(sizeof(CRYPTO_atomic_u32) == sizeof(uint32_t),
572
              "CRYPTO_atomic_u32 does not match uint32_t size");
573
static_assert(alignof(CRYPTO_atomic_u32) == alignof(uint32_t),
574
              "CRYPTO_atomic_u32 does not match uint32_t alignment");
575
576
577
// Reference counting.
578
579
// CRYPTO_REFCOUNT_MAX is the value at which the reference count saturates.
580
9.82k
#define CRYPTO_REFCOUNT_MAX 0xffffffff
581
582
using CRYPTO_refcount_t = CRYPTO_atomic_u32;
583
584
// CRYPTO_refcount_inc atomically increments the value at |*count| unless the
585
// value would overflow. It's safe for multiple threads to concurrently call
586
// this or |CRYPTO_refcount_dec_and_test_zero| on the same
587
// |CRYPTO_refcount_t|.
588
OPENSSL_EXPORT void CRYPTO_refcount_inc(CRYPTO_refcount_t *count);
589
590
// CRYPTO_refcount_dec_and_test_zero tests the value at |*count|:
591
//   if it's zero, it crashes the address space.
592
//   if it's the maximum value, it returns zero.
593
//   otherwise, it atomically decrements it and returns one iff the resulting
594
//       value is zero.
595
//
596
// It's safe for multiple threads to concurrently call this or
597
// |CRYPTO_refcount_inc| on the same |CRYPTO_refcount_t|.
598
OPENSSL_EXPORT int CRYPTO_refcount_dec_and_test_zero(CRYPTO_refcount_t *count);
599
600
601
// Locks.
602
603
#if !defined(OPENSSL_THREADS)
604
typedef struct crypto_mutex_st {
605
  char padding;  // Empty structs have different sizes in C and C++.
606
} CRYPTO_MUTEX;
607
#define CRYPTO_MUTEX_INIT {0}
608
#elif defined(OPENSSL_WINDOWS_THREADS)
609
typedef SRWLOCK CRYPTO_MUTEX;
610
#define CRYPTO_MUTEX_INIT SRWLOCK_INIT
611
#elif defined(OPENSSL_PTHREADS)
612
typedef pthread_rwlock_t CRYPTO_MUTEX;
613
#define CRYPTO_MUTEX_INIT PTHREAD_RWLOCK_INITIALIZER
614
#else
615
#error "Unknown threading library"
616
#endif
617
618
// CRYPTO_MUTEX_init initialises |lock|. If |lock| is a static variable, use a
619
// |CRYPTO_MUTEX_INIT|.
620
OPENSSL_EXPORT void CRYPTO_MUTEX_init(CRYPTO_MUTEX *lock);
621
622
// CRYPTO_MUTEX_lock_read locks |lock| such that other threads may also have a
623
// read lock, but none may have a write lock.
624
OPENSSL_EXPORT void CRYPTO_MUTEX_lock_read(CRYPTO_MUTEX *lock);
625
626
// CRYPTO_MUTEX_lock_write locks |lock| such that no other thread has any type
627
// of lock on it.
628
OPENSSL_EXPORT void CRYPTO_MUTEX_lock_write(CRYPTO_MUTEX *lock);
629
630
// CRYPTO_MUTEX_unlock_read unlocks |lock| for reading.
631
OPENSSL_EXPORT void CRYPTO_MUTEX_unlock_read(CRYPTO_MUTEX *lock);
632
633
// CRYPTO_MUTEX_unlock_write unlocks |lock| for writing.
634
OPENSSL_EXPORT void CRYPTO_MUTEX_unlock_write(CRYPTO_MUTEX *lock);
635
636
// CRYPTO_MUTEX_cleanup releases all resources held by |lock|.
637
OPENSSL_EXPORT void CRYPTO_MUTEX_cleanup(CRYPTO_MUTEX *lock);
638
639
#if defined(__cplusplus)
640
extern "C++" {
641
642
BSSL_NAMESPACE_BEGIN
643
644
namespace internal {
645
646
// MutexLockBase is a RAII helper for CRYPTO_MUTEX locking.
647
template <void (*LockFunc)(CRYPTO_MUTEX *), void (*ReleaseFunc)(CRYPTO_MUTEX *)>
648
class MutexLockBase {
649
 public:
650
  explicit MutexLockBase(CRYPTO_MUTEX *mu) : mu_(mu) {
651
    assert(mu_ != nullptr);
652
    LockFunc(mu_);
653
  }
654
  ~MutexLockBase() { ReleaseFunc(mu_); }
655
  MutexLockBase(const MutexLockBase<LockFunc, ReleaseFunc> &) = delete;
656
  MutexLockBase &operator=(const MutexLockBase<LockFunc, ReleaseFunc> &) =
657
      delete;
658
659
 private:
660
  CRYPTO_MUTEX *const mu_;
661
};
662
663
}  // namespace internal
664
665
using MutexWriteLock =
666
    internal::MutexLockBase<CRYPTO_MUTEX_lock_write, CRYPTO_MUTEX_unlock_write>;
667
using MutexReadLock =
668
    internal::MutexLockBase<CRYPTO_MUTEX_lock_read, CRYPTO_MUTEX_unlock_read>;
669
670
BSSL_NAMESPACE_END
671
672
}  // extern "C++"
673
#endif  // defined(__cplusplus)
674
675
676
// Thread local storage.
677
678
// thread_local_data_t enumerates the types of thread-local data that can be
679
// stored.
680
typedef enum {
681
  OPENSSL_THREAD_LOCAL_ERR = 0,
682
  OPENSSL_THREAD_LOCAL_RAND,
683
  OPENSSL_THREAD_LOCAL_FIPS_COUNTERS,
684
  OPENSSL_THREAD_LOCAL_FIPS_SERVICE_INDICATOR_STATE,
685
  OPENSSL_THREAD_LOCAL_TEST,
686
  NUM_OPENSSL_THREAD_LOCALS,
687
} thread_local_data_t;
688
689
// thread_local_destructor_t is the type of a destructor function that will be
690
// called when a thread exits and its thread-local storage needs to be freed.
691
typedef void (*thread_local_destructor_t)(void *);
692
693
// CRYPTO_get_thread_local gets the pointer value that is stored for the
694
// current thread for the given index, or NULL if none has been set.
695
OPENSSL_EXPORT void *CRYPTO_get_thread_local(thread_local_data_t value);
696
697
// CRYPTO_set_thread_local sets a pointer value for the current thread at the
698
// given index. This function should only be called once per thread for a given
699
// |index|: rather than update the pointer value itself, update the data that
700
// is pointed to.
701
//
702
// The destructor function will be called when a thread exits to free this
703
// thread-local data. All calls to |CRYPTO_set_thread_local| with the same
704
// |index| should have the same |destructor| argument. The destructor may be
705
// called with a NULL argument if a thread that never set a thread-local
706
// pointer for |index|, exits. The destructor may be called concurrently with
707
// different arguments.
708
//
709
// This function returns one on success or zero on error. If it returns zero
710
// then |destructor| has been called with |value| already.
711
OPENSSL_EXPORT int CRYPTO_set_thread_local(
712
    thread_local_data_t index, void *value,
713
    thread_local_destructor_t destructor);
714
715
716
// ex_data
717
718
struct crypto_ex_data_st {
719
  STACK_OF(void) *sk;
720
} /* CRYPTO_EX_DATA */;
721
722
typedef struct crypto_ex_data_func_st CRYPTO_EX_DATA_FUNCS;
723
724
// CRYPTO_EX_DATA_CLASS tracks the ex_indices registered for a type which
725
// supports ex_data. It should defined as a static global within the module
726
// which defines that type.
727
typedef struct {
728
  CRYPTO_MUTEX lock;
729
  // funcs is a linked list of |CRYPTO_EX_DATA_FUNCS| structures. It may be
730
  // traversed without serialization only up to |num_funcs|. last points to the
731
  // final entry of |funcs|, or NULL if empty.
732
  CRYPTO_EX_DATA_FUNCS *funcs, *last;
733
  // num_funcs is the number of entries in |funcs|.
734
  CRYPTO_atomic_u32 num_funcs;
735
  // num_reserved is one if the ex_data index zero is reserved for legacy
736
  // |TYPE_get_app_data| functions.
737
  uint8_t num_reserved;
738
} CRYPTO_EX_DATA_CLASS;
739
740
#define CRYPTO_EX_DATA_CLASS_INIT {CRYPTO_MUTEX_INIT, NULL, NULL, {}, 0}
741
#define CRYPTO_EX_DATA_CLASS_INIT_WITH_APP_DATA \
742
  {CRYPTO_MUTEX_INIT, NULL, NULL, {}, 1}
743
744
// CRYPTO_get_ex_new_index_ex allocates a new index for |ex_data_class|. Each
745
// class of object should provide a wrapper function that uses the correct
746
// |CRYPTO_EX_DATA_CLASS|. It returns the new index on success and -1 on error.
747
OPENSSL_EXPORT int CRYPTO_get_ex_new_index_ex(
748
    CRYPTO_EX_DATA_CLASS *ex_data_class, long argl, void *argp,
749
    CRYPTO_EX_free *free_func);
750
751
// CRYPTO_set_ex_data sets an extra data pointer on a given object. Each class
752
// of object should provide a wrapper function.
753
OPENSSL_EXPORT int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int index, void *val);
754
755
// CRYPTO_get_ex_data returns an extra data pointer for a given object, or NULL
756
// if no such index exists. Each class of object should provide a wrapper
757
// function.
758
OPENSSL_EXPORT void *CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int index);
759
760
// CRYPTO_new_ex_data initialises a newly allocated |CRYPTO_EX_DATA|.
761
OPENSSL_EXPORT void CRYPTO_new_ex_data(CRYPTO_EX_DATA *ad);
762
763
// CRYPTO_free_ex_data frees |ad|, which is an object of the given class.
764
OPENSSL_EXPORT void CRYPTO_free_ex_data(CRYPTO_EX_DATA_CLASS *ex_data_class,
765
                                        CRYPTO_EX_DATA *ad);
766
767
768
// Endianness conversions.
769
770
#if defined(__GNUC__) && __GNUC__ >= 2
771
0
static inline uint16_t CRYPTO_bswap2(uint16_t x) {
772
0
  return __builtin_bswap16(x);
773
0
}
Unexecuted instantiation: err.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: evp.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: evp_asn1.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: evp_ctx.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: p_dh_asn1.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: p_dsa_asn1.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: p_ec.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: p_ec_asn1.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: p_ed25519.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: p_ed25519_asn1.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: p_hkdf.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: p_rsa.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: p_rsa_asn1.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: p_x25519.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: p_x25519_asn1.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: mem.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: refcount.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: rsa_asn1.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: rsa_crypt.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: thread_pthread.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: bcm.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: convert.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: asn1_compat.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: cbb.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: cbs.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: crypto.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: curve25519.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: curve25519_64_adx.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: digest_extra.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: dsa.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: dsa_asn1.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: ec_asn1.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: ecdh.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: ecdsa_asn1.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: engine.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: p_dh.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: ex_data.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: md4.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: md5.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: obj.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: deterministic.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: fork_detect.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: forkunsafe.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: stack.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: a_object.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: bio.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: file.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: blake2.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: exponentiation.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: chacha.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: cpu_intel.cc:CRYPTO_bswap2(unsigned short)
Unexecuted instantiation: lhash.cc:CRYPTO_bswap2(unsigned short)
774
775
0
static inline uint32_t CRYPTO_bswap4(uint32_t x) {
776
0
  return __builtin_bswap32(x);
777
0
}
Unexecuted instantiation: err.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: evp.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: evp_asn1.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: evp_ctx.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: p_dh_asn1.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: p_dsa_asn1.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: p_ec.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: p_ec_asn1.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: p_ed25519.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: p_ed25519_asn1.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: p_hkdf.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: p_rsa.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: p_rsa_asn1.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: p_x25519.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: p_x25519_asn1.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: mem.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: refcount.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: rsa_asn1.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: rsa_crypt.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: thread_pthread.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: bcm.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: convert.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: asn1_compat.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: cbb.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: cbs.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: crypto.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: curve25519.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: curve25519_64_adx.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: digest_extra.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: dsa.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: dsa_asn1.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: ec_asn1.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: ecdh.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: ecdsa_asn1.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: engine.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: p_dh.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: ex_data.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: md4.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: md5.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: obj.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: deterministic.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: fork_detect.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: forkunsafe.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: stack.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: a_object.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: bio.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: file.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: blake2.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: exponentiation.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: chacha.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: cpu_intel.cc:CRYPTO_bswap4(unsigned int)
Unexecuted instantiation: lhash.cc:CRYPTO_bswap4(unsigned int)
778
779
156k
static inline uint64_t CRYPTO_bswap8(uint64_t x) {
780
156k
  return __builtin_bswap64(x);
781
156k
}
Unexecuted instantiation: err.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: evp.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: evp_asn1.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: evp_ctx.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: p_ec.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: p_ed25519.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: p_hkdf.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: p_rsa.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: p_x25519.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: mem.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: refcount.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: rsa_asn1.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: rsa_crypt.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: thread_pthread.cc:CRYPTO_bswap8(unsigned long)
bcm.cc:CRYPTO_bswap8(unsigned long)
Line
Count
Source
779
156k
static inline uint64_t CRYPTO_bswap8(uint64_t x) {
780
156k
  return __builtin_bswap64(x);
781
156k
}
Unexecuted instantiation: convert.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: asn1_compat.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: cbb.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: cbs.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: crypto.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: curve25519.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: curve25519_64_adx.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: digest_extra.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: dsa.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: dsa_asn1.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: ec_asn1.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: ecdh.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: engine.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: p_dh.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: ex_data.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: md4.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: md5.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: obj.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: deterministic.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: fork_detect.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: forkunsafe.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: stack.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: a_object.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: bio.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: file.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: blake2.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: exponentiation.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: chacha.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: cpu_intel.cc:CRYPTO_bswap8(unsigned long)
Unexecuted instantiation: lhash.cc:CRYPTO_bswap8(unsigned long)
782
#elif defined(_MSC_VER)
783
#pragma intrinsic(_byteswap_uint64, _byteswap_ulong, _byteswap_ushort)
784
static inline uint16_t CRYPTO_bswap2(uint16_t x) { return _byteswap_ushort(x); }
785
786
static inline uint32_t CRYPTO_bswap4(uint32_t x) { return _byteswap_ulong(x); }
787
788
static inline uint64_t CRYPTO_bswap8(uint64_t x) { return _byteswap_uint64(x); }
789
#else
790
static inline uint16_t CRYPTO_bswap2(uint16_t x) { return (x >> 8) | (x << 8); }
791
792
static inline uint32_t CRYPTO_bswap4(uint32_t x) {
793
  x = (x >> 16) | (x << 16);
794
  x = ((x & 0xff00ff00) >> 8) | ((x & 0x00ff00ff) << 8);
795
  return x;
796
}
797
798
static inline uint64_t CRYPTO_bswap8(uint64_t x) {
799
  return CRYPTO_bswap4(x >> 32) | (((uint64_t)CRYPTO_bswap4(x)) << 32);
800
}
801
#endif
802
803
804
// Language bug workarounds.
805
//
806
// Most C standard library functions are undefined if passed NULL, even when the
807
// corresponding length is zero. This gives them (and, in turn, all functions
808
// which call them) surprising behavior on empty arrays. Some compilers will
809
// miscompile code due to this rule. See also
810
// https://www.imperialviolet.org/2016/06/26/nonnull.html
811
//
812
// These wrapper functions behave the same as the corresponding C standard
813
// functions, but behave as expected when passed NULL if the length is zero.
814
//
815
// Note |OPENSSL_memcmp| is a different function from |CRYPTO_memcmp|.
816
817
// C++ defines |memchr| as a const-correct overload.
818
#if defined(__cplusplus)
819
extern "C++" {
820
821
0
static inline const void *OPENSSL_memchr(const void *s, int c, size_t n) {
822
0
  if (n == 0) {
823
0
    return NULL;
824
0
  }
825
826
0
  return memchr(s, c, n);
827
0
}
Unexecuted instantiation: err.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: evp.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: evp_asn1.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: evp_ctx.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: p_ec.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: p_ed25519.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: p_hkdf.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: p_rsa.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: p_x25519.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: mem.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: refcount.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: rsa_asn1.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: rsa_crypt.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: thread_pthread.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: bcm.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: convert.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: asn1_compat.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: cbb.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: cbs.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: crypto.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: curve25519.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: curve25519_64_adx.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: digest_extra.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: dsa.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: dsa_asn1.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: ec_asn1.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: ecdh.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: engine.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: p_dh.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: ex_data.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: md4.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: md5.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: obj.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: deterministic.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: fork_detect.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: forkunsafe.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: stack.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: a_object.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: bio.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: file.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: blake2.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: exponentiation.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: chacha.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: cpu_intel.cc:OPENSSL_memchr(void const*, int, unsigned long)
Unexecuted instantiation: lhash.cc:OPENSSL_memchr(void const*, int, unsigned long)
828
829
0
static inline void *OPENSSL_memchr(void *s, int c, size_t n) {
830
0
  if (n == 0) {
831
0
    return NULL;
832
0
  }
833
834
0
  return memchr(s, c, n);
835
0
}
Unexecuted instantiation: err.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: evp.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: evp_asn1.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: evp_ctx.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: p_ec.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: p_ed25519.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: p_hkdf.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: p_rsa.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: p_x25519.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: mem.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: refcount.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: rsa_asn1.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: rsa_crypt.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: thread_pthread.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: bcm.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: convert.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: asn1_compat.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: cbb.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: cbs.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: crypto.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: curve25519.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: curve25519_64_adx.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: digest_extra.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: dsa.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: dsa_asn1.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: ec_asn1.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: ecdh.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: engine.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: p_dh.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: ex_data.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: md4.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: md5.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: obj.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: deterministic.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: fork_detect.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: forkunsafe.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: stack.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: a_object.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: bio.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: file.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: blake2.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: exponentiation.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: chacha.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: cpu_intel.cc:OPENSSL_memchr(void*, int, unsigned long)
Unexecuted instantiation: lhash.cc:OPENSSL_memchr(void*, int, unsigned long)
836
837
}  // extern "C++"
838
#else  // __cplusplus
839
840
static inline void *OPENSSL_memchr(const void *s, int c, size_t n) {
841
  if (n == 0) {
842
    return NULL;
843
  }
844
845
  return memchr(s, c, n);
846
}
847
848
#endif  // __cplusplus
849
850
2.51k
static inline int OPENSSL_memcmp(const void *s1, const void *s2, size_t n) {
851
2.51k
  if (n == 0) {
852
0
    return 0;
853
0
  }
854
855
2.51k
  return memcmp(s1, s2, n);
856
2.51k
}
Unexecuted instantiation: err.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: evp.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
evp_asn1.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Line
Count
Source
850
2.06k
static inline int OPENSSL_memcmp(const void *s1, const void *s2, size_t n) {
851
2.06k
  if (n == 0) {
852
0
    return 0;
853
0
  }
854
855
2.06k
  return memcmp(s1, s2, n);
856
2.06k
}
Unexecuted instantiation: evp_ctx.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: p_ec.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: p_ed25519.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: p_hkdf.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: p_rsa.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: p_x25519.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: mem.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: refcount.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: rsa_asn1.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: rsa_crypt.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: thread_pthread.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: bcm.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: convert.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: asn1_compat.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: cbb.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: cbs.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: crypto.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: curve25519.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: curve25519_64_adx.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: digest_extra.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: dsa.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: dsa_asn1.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
ec_asn1.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Line
Count
Source
850
449
static inline int OPENSSL_memcmp(const void *s1, const void *s2, size_t n) {
851
449
  if (n == 0) {
852
0
    return 0;
853
0
  }
854
855
449
  return memcmp(s1, s2, n);
856
449
}
Unexecuted instantiation: ecdh.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: engine.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: p_dh.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: ex_data.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: md4.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: md5.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: obj.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: deterministic.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: fork_detect.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: forkunsafe.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: stack.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: a_object.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: bio.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: file.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: blake2.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: exponentiation.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: chacha.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: cpu_intel.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
Unexecuted instantiation: lhash.cc:OPENSSL_memcmp(void const*, void const*, unsigned long)
857
858
272k
static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) {
859
272k
  if (n == 0) {
860
35.4k
    return dst;
861
35.4k
  }
862
863
237k
  return memcpy(dst, src, n);
864
272k
}
Unexecuted instantiation: err.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: evp.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: evp_asn1.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: evp_ctx.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: p_ec.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: p_ed25519.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: p_hkdf.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: p_rsa.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: p_x25519.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
p_x25519_asn1.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Line
Count
Source
858
149
static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) {
859
149
  if (n == 0) {
860
0
    return dst;
861
0
  }
862
863
149
  return memcpy(dst, src, n);
864
149
}
Unexecuted instantiation: mem.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: refcount.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: rsa_asn1.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: rsa_crypt.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: thread_pthread.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
bcm.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Line
Count
Source
858
262k
static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) {
859
262k
  if (n == 0) {
860
35.4k
    return dst;
861
35.4k
  }
862
863
227k
  return memcpy(dst, src, n);
864
262k
}
Unexecuted instantiation: convert.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: asn1_compat.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: cbb.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: cbs.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: crypto.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
curve25519.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Line
Count
Source
858
161
static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) {
859
161
  if (n == 0) {
860
0
    return dst;
861
0
  }
862
863
161
  return memcpy(dst, src, n);
864
161
}
curve25519_64_adx.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Line
Count
Source
858
10.0k
static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) {
859
10.0k
  if (n == 0) {
860
0
    return dst;
861
0
  }
862
863
10.0k
  return memcpy(dst, src, n);
864
10.0k
}
Unexecuted instantiation: digest_extra.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: dsa.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: dsa_asn1.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: ec_asn1.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: ecdh.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: engine.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: p_dh.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: ex_data.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: md4.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: md5.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: obj.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: deterministic.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: fork_detect.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: forkunsafe.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: stack.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: a_object.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: bio.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: file.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: blake2.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: exponentiation.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: chacha.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: cpu_intel.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
Unexecuted instantiation: lhash.cc:OPENSSL_memcpy(void*, void const*, unsigned long)
865
866
5.16k
static inline void *OPENSSL_memmove(void *dst, const void *src, size_t n) {
867
5.16k
  if (n == 0) {
868
0
    return dst;
869
0
  }
870
871
5.16k
  return memmove(dst, src, n);
872
5.16k
}
Unexecuted instantiation: err.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: evp.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: evp_asn1.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: evp_ctx.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: p_ec.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: p_ed25519.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: p_hkdf.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: p_rsa.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: p_x25519.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: mem.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: refcount.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: rsa_asn1.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: rsa_crypt.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: thread_pthread.cc:OPENSSL_memmove(void*, void const*, unsigned long)
bcm.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Line
Count
Source
866
5.16k
static inline void *OPENSSL_memmove(void *dst, const void *src, size_t n) {
867
5.16k
  if (n == 0) {
868
0
    return dst;
869
0
  }
870
871
5.16k
  return memmove(dst, src, n);
872
5.16k
}
Unexecuted instantiation: convert.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: asn1_compat.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: cbb.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: cbs.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: crypto.cc:OPENSSL_memmove(void*, void const*, unsigned long)
curve25519.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Line
Count
Source
866
6
static inline void *OPENSSL_memmove(void *dst, const void *src, size_t n) {
867
6
  if (n == 0) {
868
0
    return dst;
869
0
  }
870
871
6
  return memmove(dst, src, n);
872
6
}
Unexecuted instantiation: curve25519_64_adx.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: digest_extra.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: dsa.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: dsa_asn1.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: ec_asn1.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: ecdh.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: engine.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: p_dh.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: ex_data.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: md4.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: md5.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: obj.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: deterministic.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: fork_detect.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: forkunsafe.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: stack.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: a_object.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: bio.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: file.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: blake2.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: exponentiation.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: chacha.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: cpu_intel.cc:OPENSSL_memmove(void*, void const*, unsigned long)
Unexecuted instantiation: lhash.cc:OPENSSL_memmove(void*, void const*, unsigned long)
873
874
4.88M
static inline void *OPENSSL_memset(void *dst, int c, size_t n) {
875
4.88M
  if (n == 0) {
876
3.30M
    return dst;
877
3.30M
  }
878
879
1.58M
  return memset(dst, c, n);
880
4.88M
}
err.cc:OPENSSL_memset(void*, int, unsigned long)
Line
Count
Source
874
246k
static inline void *OPENSSL_memset(void *dst, int c, size_t n) {
875
246k
  if (n == 0) {
876
0
    return dst;
877
0
  }
878
879
246k
  return memset(dst, c, n);
880
246k
}
Unexecuted instantiation: evp.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: evp_asn1.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: evp_ctx.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: p_ec.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: p_ed25519.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: p_hkdf.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: p_rsa.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: p_x25519.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:OPENSSL_memset(void*, int, unsigned long)
mem.cc:OPENSSL_memset(void*, int, unsigned long)
Line
Count
Source
874
139k
static inline void *OPENSSL_memset(void *dst, int c, size_t n) {
875
139k
  if (n == 0) {
876
0
    return dst;
877
0
  }
878
879
139k
  return memset(dst, c, n);
880
139k
}
Unexecuted instantiation: refcount.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: rsa_asn1.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: rsa_crypt.cc:OPENSSL_memset(void*, int, unsigned long)
thread_pthread.cc:OPENSSL_memset(void*, int, unsigned long)
Line
Count
Source
874
1
static inline void *OPENSSL_memset(void *dst, int c, size_t n) {
875
1
  if (n == 0) {
876
0
    return dst;
877
0
  }
878
879
1
  return memset(dst, c, n);
880
1
}
bcm.cc:OPENSSL_memset(void*, int, unsigned long)
Line
Count
Source
874
4.50M
static inline void *OPENSSL_memset(void *dst, int c, size_t n) {
875
4.50M
  if (n == 0) {
876
3.30M
    return dst;
877
3.30M
  }
878
879
1.19M
  return memset(dst, c, n);
880
4.50M
}
Unexecuted instantiation: convert.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: asn1_compat.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: cbb.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: cbs.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: crypto.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: curve25519.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: curve25519_64_adx.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: digest_extra.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: dsa.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: dsa_asn1.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: ec_asn1.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: ecdh.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: engine.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: p_dh.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: ex_data.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: md4.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: md5.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: obj.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: deterministic.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: fork_detect.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: forkunsafe.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: stack.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: a_object.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: bio.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: file.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: blake2.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: exponentiation.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: chacha.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: cpu_intel.cc:OPENSSL_memset(void*, int, unsigned long)
Unexecuted instantiation: lhash.cc:OPENSSL_memset(void*, int, unsigned long)
881
882
883
// Loads and stores.
884
//
885
// The following functions load and store sized integers with the specified
886
// endianness. They use |memcpy|, and so avoid alignment or strict aliasing
887
// requirements on the input and output pointers.
888
889
0
static inline uint16_t CRYPTO_load_u16_be(const void *in) {
890
0
  uint16_t v;
891
0
  OPENSSL_memcpy(&v, in, sizeof(v));
892
0
  return CRYPTO_bswap2(v);
893
0
}
Unexecuted instantiation: err.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: evp.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: evp_asn1.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: evp_ctx.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: p_dh_asn1.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: p_dsa_asn1.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: p_ec.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: p_ec_asn1.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: p_ed25519.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: p_ed25519_asn1.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: p_hkdf.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: p_rsa.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: p_rsa_asn1.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: p_x25519.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: p_x25519_asn1.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: mem.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: refcount.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: rsa_asn1.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: rsa_crypt.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: thread_pthread.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: bcm.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: convert.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: asn1_compat.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: cbb.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: cbs.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: crypto.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: curve25519.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: curve25519_64_adx.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: digest_extra.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: dsa.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: dsa_asn1.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: ec_asn1.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: ecdh.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: ecdsa_asn1.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: engine.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: p_dh.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: ex_data.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: md4.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: md5.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: obj.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: deterministic.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: fork_detect.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: forkunsafe.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: stack.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: a_object.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: bio.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: file.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: blake2.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: exponentiation.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: chacha.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: cpu_intel.cc:CRYPTO_load_u16_be(void const*)
Unexecuted instantiation: lhash.cc:CRYPTO_load_u16_be(void const*)
894
895
0
static inline void CRYPTO_store_u16_be(void *out, uint16_t v) {
896
0
  v = CRYPTO_bswap2(v);
897
0
  OPENSSL_memcpy(out, &v, sizeof(v));
898
0
}
Unexecuted instantiation: err.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: evp.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: evp_asn1.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: evp_ctx.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: p_dh_asn1.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: p_dsa_asn1.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: p_ec.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: p_ec_asn1.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: p_ed25519.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: p_ed25519_asn1.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: p_hkdf.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: p_rsa.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: p_rsa_asn1.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: p_x25519.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: p_x25519_asn1.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: mem.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: refcount.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: rsa_asn1.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: rsa_crypt.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: thread_pthread.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: bcm.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: convert.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: asn1_compat.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: cbb.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: cbs.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: crypto.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: curve25519.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: curve25519_64_adx.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: digest_extra.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: dsa.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: dsa_asn1.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: ec_asn1.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: ecdh.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: ecdsa_asn1.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: engine.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: p_dh.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: ex_data.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: md4.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: md5.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: obj.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: deterministic.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: fork_detect.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: forkunsafe.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: stack.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: a_object.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: bio.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: file.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: blake2.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: exponentiation.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: chacha.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: cpu_intel.cc:CRYPTO_store_u16_be(void*, unsigned short)
Unexecuted instantiation: lhash.cc:CRYPTO_store_u16_be(void*, unsigned short)
899
900
0
static inline uint32_t CRYPTO_load_u32_le(const void *in) {
901
0
  uint32_t v;
902
0
  OPENSSL_memcpy(&v, in, sizeof(v));
903
0
  return v;
904
0
}
Unexecuted instantiation: err.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: evp.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: evp_asn1.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: evp_ctx.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: p_dh_asn1.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: p_dsa_asn1.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: p_ec.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: p_ec_asn1.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: p_ed25519.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: p_ed25519_asn1.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: p_hkdf.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: p_rsa.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: p_rsa_asn1.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: p_x25519.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: p_x25519_asn1.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: mem.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: refcount.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: rsa_asn1.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: rsa_crypt.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: thread_pthread.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: bcm.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: convert.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: asn1_compat.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: cbb.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: cbs.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: crypto.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: curve25519.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: curve25519_64_adx.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: digest_extra.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: dsa.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: dsa_asn1.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: ec_asn1.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: ecdh.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: ecdsa_asn1.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: engine.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: p_dh.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: ex_data.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: md4.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: md5.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: obj.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: deterministic.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: fork_detect.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: forkunsafe.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: stack.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: a_object.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: bio.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: file.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: blake2.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: exponentiation.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: chacha.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: cpu_intel.cc:CRYPTO_load_u32_le(void const*)
Unexecuted instantiation: lhash.cc:CRYPTO_load_u32_le(void const*)
905
906
0
static inline void CRYPTO_store_u32_le(void *out, uint32_t v) {
907
0
  OPENSSL_memcpy(out, &v, sizeof(v));
908
0
}
Unexecuted instantiation: err.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: evp.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: evp_asn1.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: evp_ctx.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: p_dh_asn1.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: p_dsa_asn1.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: p_ec.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: p_ec_asn1.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: p_ed25519.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: p_ed25519_asn1.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: p_hkdf.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: p_rsa.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: p_rsa_asn1.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: p_x25519.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: p_x25519_asn1.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: mem.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: refcount.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: rsa_asn1.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: rsa_crypt.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: thread_pthread.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: bcm.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: convert.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: asn1_compat.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: cbb.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: cbs.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: crypto.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: curve25519.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: curve25519_64_adx.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: digest_extra.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: dsa.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: dsa_asn1.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: ec_asn1.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: ecdh.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: ecdsa_asn1.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: engine.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: p_dh.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: ex_data.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: md4.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: md5.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: obj.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: deterministic.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: fork_detect.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: forkunsafe.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: stack.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: a_object.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: bio.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: file.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: blake2.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: exponentiation.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: chacha.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: cpu_intel.cc:CRYPTO_store_u32_le(void*, unsigned int)
Unexecuted instantiation: lhash.cc:CRYPTO_store_u32_le(void*, unsigned int)
909
910
0
static inline uint32_t CRYPTO_load_u32_be(const void *in) {
911
0
  uint32_t v;
912
0
  OPENSSL_memcpy(&v, in, sizeof(v));
913
0
  return CRYPTO_bswap4(v);
914
0
}
Unexecuted instantiation: err.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: evp.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: evp_asn1.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: evp_ctx.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: p_dh_asn1.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: p_dsa_asn1.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: p_ec.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: p_ec_asn1.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: p_ed25519.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: p_ed25519_asn1.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: p_hkdf.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: p_rsa.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: p_rsa_asn1.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: p_x25519.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: p_x25519_asn1.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: mem.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: refcount.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: rsa_asn1.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: rsa_crypt.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: thread_pthread.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: bcm.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: convert.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: asn1_compat.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: cbb.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: cbs.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: crypto.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: curve25519.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: curve25519_64_adx.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: digest_extra.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: dsa.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: dsa_asn1.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: ec_asn1.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: ecdh.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: ecdsa_asn1.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: engine.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: p_dh.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: ex_data.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: md4.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: md5.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: obj.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: deterministic.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: fork_detect.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: forkunsafe.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: stack.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: a_object.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: bio.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: file.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: blake2.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: exponentiation.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: chacha.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: cpu_intel.cc:CRYPTO_load_u32_be(void const*)
Unexecuted instantiation: lhash.cc:CRYPTO_load_u32_be(void const*)
915
916
0
static inline void CRYPTO_store_u32_be(void *out, uint32_t v) {
917
0
  v = CRYPTO_bswap4(v);
918
0
  OPENSSL_memcpy(out, &v, sizeof(v));
919
0
}
Unexecuted instantiation: err.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: evp.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: evp_asn1.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: evp_ctx.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: p_dh_asn1.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: p_dsa_asn1.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: p_ec.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: p_ec_asn1.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: p_ed25519.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: p_ed25519_asn1.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: p_hkdf.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: p_rsa.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: p_rsa_asn1.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: p_x25519.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: p_x25519_asn1.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: mem.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: refcount.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: rsa_asn1.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: rsa_crypt.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: thread_pthread.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: bcm.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: convert.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: asn1_compat.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: cbb.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: cbs.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: crypto.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: curve25519.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: curve25519_64_adx.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: digest_extra.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: dsa.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: dsa_asn1.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: ec_asn1.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: ecdh.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: ecdsa_asn1.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: engine.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: p_dh.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: ex_data.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: md4.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: md5.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: obj.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: deterministic.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: fork_detect.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: forkunsafe.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: stack.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: a_object.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: bio.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: file.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: blake2.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: exponentiation.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: chacha.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: cpu_intel.cc:CRYPTO_store_u32_be(void*, unsigned int)
Unexecuted instantiation: lhash.cc:CRYPTO_store_u32_be(void*, unsigned int)
920
921
0
static inline uint64_t CRYPTO_load_u64_le(const void *in) {
922
0
  uint64_t v;
923
0
  OPENSSL_memcpy(&v, in, sizeof(v));
924
0
  return v;
925
0
}
Unexecuted instantiation: err.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: evp.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: evp_asn1.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: evp_ctx.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: p_dh_asn1.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: p_dsa_asn1.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: p_ec.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: p_ec_asn1.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: p_ed25519.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: p_ed25519_asn1.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: p_hkdf.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: p_rsa.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: p_rsa_asn1.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: p_x25519.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: p_x25519_asn1.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: mem.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: refcount.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: rsa_asn1.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: rsa_crypt.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: thread_pthread.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: bcm.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: convert.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: asn1_compat.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: cbb.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: cbs.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: crypto.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: curve25519.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: curve25519_64_adx.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: digest_extra.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: dsa.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: dsa_asn1.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: ec_asn1.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: ecdh.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: ecdsa_asn1.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: engine.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: p_dh.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: ex_data.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: md4.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: md5.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: obj.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: deterministic.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: fork_detect.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: forkunsafe.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: stack.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: a_object.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: bio.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: file.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: blake2.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: exponentiation.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: chacha.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: cpu_intel.cc:CRYPTO_load_u64_le(void const*)
Unexecuted instantiation: lhash.cc:CRYPTO_load_u64_le(void const*)
926
927
0
static inline void CRYPTO_store_u64_le(void *out, uint64_t v) {
928
0
  OPENSSL_memcpy(out, &v, sizeof(v));
929
0
}
Unexecuted instantiation: err.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: evp.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: evp_asn1.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: evp_ctx.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: p_ec.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: p_ed25519.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: p_hkdf.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: p_rsa.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: p_x25519.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: mem.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: refcount.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: rsa_asn1.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: rsa_crypt.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: thread_pthread.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: bcm.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: convert.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: asn1_compat.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: cbb.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: cbs.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: crypto.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: curve25519.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: curve25519_64_adx.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: digest_extra.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: dsa.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: dsa_asn1.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: ec_asn1.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: ecdh.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: engine.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: p_dh.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: ex_data.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: md4.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: md5.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: obj.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: deterministic.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: fork_detect.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: forkunsafe.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: stack.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: a_object.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: bio.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: file.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: blake2.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: exponentiation.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: chacha.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: cpu_intel.cc:CRYPTO_store_u64_le(void*, unsigned long)
Unexecuted instantiation: lhash.cc:CRYPTO_store_u64_le(void*, unsigned long)
930
931
0
static inline uint64_t CRYPTO_load_u64_be(const void *ptr) {
932
0
  uint64_t ret;
933
0
  OPENSSL_memcpy(&ret, ptr, sizeof(ret));
934
0
  return CRYPTO_bswap8(ret);
935
0
}
Unexecuted instantiation: err.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: evp.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: evp_asn1.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: evp_ctx.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: p_dh_asn1.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: p_dsa_asn1.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: p_ec.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: p_ec_asn1.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: p_ed25519.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: p_ed25519_asn1.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: p_hkdf.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: p_rsa.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: p_rsa_asn1.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: p_x25519.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: p_x25519_asn1.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: mem.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: refcount.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: rsa_asn1.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: rsa_crypt.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: thread_pthread.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: bcm.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: convert.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: asn1_compat.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: cbb.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: cbs.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: crypto.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: curve25519.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: curve25519_64_adx.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: digest_extra.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: dsa.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: dsa_asn1.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: ec_asn1.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: ecdh.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: ecdsa_asn1.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: engine.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: p_dh.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: ex_data.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: md4.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: md5.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: obj.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: deterministic.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: fork_detect.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: forkunsafe.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: stack.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: a_object.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: bio.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: file.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: blake2.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: exponentiation.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: chacha.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: cpu_intel.cc:CRYPTO_load_u64_be(void const*)
Unexecuted instantiation: lhash.cc:CRYPTO_load_u64_be(void const*)
936
937
60
static inline void CRYPTO_store_u64_be(void *out, uint64_t v) {
938
60
  v = CRYPTO_bswap8(v);
939
60
  OPENSSL_memcpy(out, &v, sizeof(v));
940
60
}
Unexecuted instantiation: err.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: evp.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: evp_asn1.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: evp_ctx.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: p_ec.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: p_ed25519.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: p_hkdf.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: p_rsa.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: p_x25519.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: mem.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: refcount.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: rsa_asn1.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: rsa_crypt.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: thread_pthread.cc:CRYPTO_store_u64_be(void*, unsigned long)
bcm.cc:CRYPTO_store_u64_be(void*, unsigned long)
Line
Count
Source
937
60
static inline void CRYPTO_store_u64_be(void *out, uint64_t v) {
938
60
  v = CRYPTO_bswap8(v);
939
60
  OPENSSL_memcpy(out, &v, sizeof(v));
940
60
}
Unexecuted instantiation: convert.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: asn1_compat.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: cbb.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: cbs.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: crypto.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: curve25519.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: curve25519_64_adx.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: digest_extra.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: dsa.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: dsa_asn1.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: ec_asn1.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: ecdh.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: engine.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: p_dh.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: ex_data.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: md4.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: md5.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: obj.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: deterministic.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: fork_detect.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: forkunsafe.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: stack.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: a_object.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: bio.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: file.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: blake2.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: exponentiation.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: chacha.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: cpu_intel.cc:CRYPTO_store_u64_be(void*, unsigned long)
Unexecuted instantiation: lhash.cc:CRYPTO_store_u64_be(void*, unsigned long)
941
942
0
static inline crypto_word_t CRYPTO_load_word_le(const void *in) {
943
0
  crypto_word_t v;
944
0
  OPENSSL_memcpy(&v, in, sizeof(v));
945
0
  return v;
946
0
}
Unexecuted instantiation: err.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: evp.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: evp_asn1.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: evp_ctx.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: p_dh_asn1.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: p_dsa_asn1.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: p_ec.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: p_ec_asn1.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: p_ed25519.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: p_ed25519_asn1.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: p_hkdf.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: p_rsa.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: p_rsa_asn1.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: p_x25519.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: p_x25519_asn1.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: mem.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: refcount.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: rsa_asn1.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: rsa_crypt.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: thread_pthread.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: bcm.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: convert.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: asn1_compat.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: cbb.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: cbs.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: crypto.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: curve25519.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: curve25519_64_adx.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: digest_extra.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: dsa.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: dsa_asn1.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: ec_asn1.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: ecdh.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: ecdsa_asn1.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: engine.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: p_dh.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: ex_data.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: md4.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: md5.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: obj.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: deterministic.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: fork_detect.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: forkunsafe.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: stack.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: a_object.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: bio.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: file.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: blake2.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: exponentiation.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: chacha.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: cpu_intel.cc:CRYPTO_load_word_le(void const*)
Unexecuted instantiation: lhash.cc:CRYPTO_load_word_le(void const*)
947
948
0
static inline void CRYPTO_store_word_le(void *out, crypto_word_t v) {
949
0
  OPENSSL_memcpy(out, &v, sizeof(v));
950
0
}
Unexecuted instantiation: err.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: evp.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: evp_asn1.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: evp_ctx.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: p_dh_asn1.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: p_dsa_asn1.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: p_ec.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: p_ec_asn1.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: p_ed25519.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: p_ed25519_asn1.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: p_hkdf.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: p_rsa.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: p_rsa_asn1.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: p_x25519.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: p_x25519_asn1.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: mem.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: refcount.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: rsa_asn1.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: rsa_crypt.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: thread_pthread.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: bcm.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: convert.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: asn1_compat.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: cbb.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: cbs.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: crypto.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: curve25519.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: curve25519_64_adx.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: digest_extra.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: dsa.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: dsa_asn1.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: ec_asn1.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: ecdh.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: ecdsa_asn1.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: engine.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: p_dh.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: ex_data.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: md4.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: md5.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: obj.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: deterministic.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: fork_detect.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: forkunsafe.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: stack.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: a_object.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: bio.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: file.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: blake2.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: exponentiation.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: chacha.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: cpu_intel.cc:CRYPTO_store_word_le(void*, unsigned long)
Unexecuted instantiation: lhash.cc:CRYPTO_store_word_le(void*, unsigned long)
951
952
156k
static inline crypto_word_t CRYPTO_load_word_be(const void *in) {
953
156k
  crypto_word_t v;
954
156k
  OPENSSL_memcpy(&v, in, sizeof(v));
955
156k
#if defined(OPENSSL_64_BIT)
956
156k
  static_assert(sizeof(v) == 8, "crypto_word_t has unexpected size");
957
156k
  return CRYPTO_bswap8(v);
958
#else
959
  static_assert(sizeof(v) == 4, "crypto_word_t has unexpected size");
960
  return CRYPTO_bswap4(v);
961
#endif
962
156k
}
Unexecuted instantiation: err.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: evp.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: evp_asn1.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: evp_ctx.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: p_dh_asn1.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: p_dsa_asn1.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: p_ec.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: p_ec_asn1.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: p_ed25519.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: p_ed25519_asn1.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: p_hkdf.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: p_rsa.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: p_rsa_asn1.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: p_x25519.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: p_x25519_asn1.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: mem.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: refcount.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: rsa_asn1.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: rsa_crypt.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: thread_pthread.cc:CRYPTO_load_word_be(void const*)
bcm.cc:CRYPTO_load_word_be(void const*)
Line
Count
Source
952
156k
static inline crypto_word_t CRYPTO_load_word_be(const void *in) {
953
156k
  crypto_word_t v;
954
156k
  OPENSSL_memcpy(&v, in, sizeof(v));
955
156k
#if defined(OPENSSL_64_BIT)
956
156k
  static_assert(sizeof(v) == 8, "crypto_word_t has unexpected size");
957
156k
  return CRYPTO_bswap8(v);
958
#else
959
  static_assert(sizeof(v) == 4, "crypto_word_t has unexpected size");
960
  return CRYPTO_bswap4(v);
961
#endif
962
156k
}
Unexecuted instantiation: convert.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: asn1_compat.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: cbb.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: cbs.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: crypto.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: curve25519.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: curve25519_64_adx.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: digest_extra.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: dsa.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: dsa_asn1.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: ec_asn1.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: ecdh.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: ecdsa_asn1.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: engine.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: p_dh.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: ex_data.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: md4.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: md5.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: obj.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: deterministic.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: fork_detect.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: forkunsafe.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: stack.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: a_object.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: bio.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: file.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: blake2.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: exponentiation.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: chacha.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: cpu_intel.cc:CRYPTO_load_word_be(void const*)
Unexecuted instantiation: lhash.cc:CRYPTO_load_word_be(void const*)
963
964
965
// Bit rotation functions.
966
//
967
// Note these functions use |(-shift) & 31|, etc., because shifting by the bit
968
// width is undefined. Both Clang and GCC recognize this pattern as a rotation,
969
// but MSVC does not. Instead, we call MSVC's built-in functions.
970
971
0
static inline uint32_t CRYPTO_rotl_u32(uint32_t value, int shift) {
972
#if defined(_MSC_VER)
973
  return _rotl(value, shift);
974
#else
975
0
  return (value << shift) | (value >> ((-shift) & 31));
976
0
#endif
977
0
}
Unexecuted instantiation: err.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: evp.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: evp_asn1.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: evp_ctx.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: p_dh_asn1.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: p_dsa_asn1.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: p_ec.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: p_ec_asn1.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: p_ed25519.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: p_ed25519_asn1.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: p_hkdf.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: p_rsa.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: p_rsa_asn1.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: p_x25519.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: p_x25519_asn1.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: mem.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: refcount.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: rsa_asn1.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: rsa_crypt.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: thread_pthread.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: bcm.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: convert.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: asn1_compat.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: cbb.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: cbs.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: crypto.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: curve25519.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: curve25519_64_adx.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: digest_extra.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: dsa.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: dsa_asn1.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: ec_asn1.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: ecdh.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: ecdsa_asn1.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: engine.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: p_dh.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: ex_data.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: md4.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: md5.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: obj.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: deterministic.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: fork_detect.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: forkunsafe.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: stack.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: a_object.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: bio.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: file.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: blake2.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: exponentiation.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: chacha.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: cpu_intel.cc:CRYPTO_rotl_u32(unsigned int, int)
Unexecuted instantiation: lhash.cc:CRYPTO_rotl_u32(unsigned int, int)
978
979
0
static inline uint32_t CRYPTO_rotr_u32(uint32_t value, int shift) {
980
0
#if defined(_MSC_VER)
981
0
  return _rotr(value, shift);
982
0
#else
983
0
  return (value >> shift) | (value << ((-shift) & 31));
984
0
#endif
985
0
}
Unexecuted instantiation: err.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: evp.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: evp_asn1.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: evp_ctx.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: p_dh_asn1.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: p_dsa_asn1.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: p_ec.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: p_ec_asn1.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: p_ed25519.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: p_ed25519_asn1.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: p_hkdf.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: p_rsa.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: p_rsa_asn1.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: p_x25519.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: p_x25519_asn1.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: mem.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: refcount.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: rsa_asn1.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: rsa_crypt.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: thread_pthread.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: bcm.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: convert.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: asn1_compat.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: cbb.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: cbs.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: crypto.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: curve25519.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: curve25519_64_adx.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: digest_extra.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: dsa.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: dsa_asn1.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: ec_asn1.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: ecdh.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: ecdsa_asn1.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: engine.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: p_dh.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: ex_data.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: md4.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: md5.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: obj.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: deterministic.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: fork_detect.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: forkunsafe.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: stack.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: a_object.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: bio.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: file.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: blake2.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: exponentiation.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: chacha.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: cpu_intel.cc:CRYPTO_rotr_u32(unsigned int, int)
Unexecuted instantiation: lhash.cc:CRYPTO_rotr_u32(unsigned int, int)
986
987
0
static inline uint64_t CRYPTO_rotl_u64(uint64_t value, int shift) {
988
#if defined(_MSC_VER)
989
  return _rotl64(value, shift);
990
#else
991
0
  return (value << shift) | (value >> ((-shift) & 63));
992
0
#endif
993
0
}
Unexecuted instantiation: err.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: evp.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: evp_asn1.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: evp_ctx.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: p_dh_asn1.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: p_dsa_asn1.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: p_ec.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: p_ec_asn1.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: p_ed25519.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: p_ed25519_asn1.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: p_hkdf.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: p_rsa.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: p_rsa_asn1.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: p_x25519.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: p_x25519_asn1.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: mem.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: refcount.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: rsa_asn1.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: rsa_crypt.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: thread_pthread.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: bcm.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: convert.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: asn1_compat.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: cbb.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: cbs.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: crypto.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: curve25519.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: curve25519_64_adx.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: digest_extra.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: dsa.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: dsa_asn1.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: ec_asn1.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: ecdh.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: ecdsa_asn1.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: engine.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: p_dh.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: ex_data.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: md4.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: md5.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: obj.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: deterministic.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: fork_detect.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: forkunsafe.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: stack.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: a_object.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: bio.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: file.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: blake2.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: exponentiation.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: chacha.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: cpu_intel.cc:CRYPTO_rotl_u64(unsigned long, int)
Unexecuted instantiation: lhash.cc:CRYPTO_rotl_u64(unsigned long, int)
994
995
0
static inline uint64_t CRYPTO_rotr_u64(uint64_t value, int shift) {
996
#if defined(_MSC_VER)
997
  return _rotr64(value, shift);
998
#else
999
0
  return (value >> shift) | (value << ((-shift) & 63));
1000
0
#endif
1001
0
}
Unexecuted instantiation: err.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: evp.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: evp_asn1.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: evp_ctx.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: p_dh_asn1.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: p_dsa_asn1.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: p_ec.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: p_ec_asn1.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: p_ed25519.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: p_ed25519_asn1.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: p_hkdf.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: p_rsa.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: p_rsa_asn1.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: p_x25519.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: p_x25519_asn1.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: mem.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: refcount.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: rsa_asn1.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: rsa_crypt.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: thread_pthread.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: bcm.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: convert.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: asn1_compat.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: cbb.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: cbs.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: crypto.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: curve25519.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: curve25519_64_adx.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: digest_extra.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: dsa.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: dsa_asn1.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: ec_asn1.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: ecdh.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: ecdsa_asn1.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: engine.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: p_dh.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: ex_data.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: md4.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: md5.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: obj.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: deterministic.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: fork_detect.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: forkunsafe.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: stack.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: a_object.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: bio.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: file.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: blake2.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: exponentiation.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: chacha.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: cpu_intel.cc:CRYPTO_rotr_u64(unsigned long, int)
Unexecuted instantiation: lhash.cc:CRYPTO_rotr_u64(unsigned long, int)
1002
1003
1004
// FIPS functions.
1005
1006
#if defined(BORINGSSL_FIPS)
1007
1008
// BORINGSSL_FIPS_abort is called when a FIPS power-on or continuous test
1009
// fails. It prevents any further cryptographic operations by the current
1010
// process.
1011
void BORINGSSL_FIPS_abort(void) __attribute__((noreturn));
1012
1013
// boringssl_self_test_startup runs all startup self tests and returns one on
1014
// success or zero on error. Startup self tests do not include lazy tests.
1015
// Call |BORINGSSL_self_test| to run every self test.
1016
int boringssl_self_test_startup(void);
1017
1018
// boringssl_ensure_rsa_self_test checks whether the RSA self-test has been run
1019
// in this address space. If not, it runs it and crashes the address space if
1020
// unsuccessful.
1021
void boringssl_ensure_rsa_self_test(void);
1022
1023
// boringssl_ensure_ecc_self_test checks whether the ECDSA and ECDH self-test
1024
// has been run in this address space. If not, it runs it and crashes the
1025
// address space if unsuccessful.
1026
void boringssl_ensure_ecc_self_test(void);
1027
1028
// boringssl_ensure_ffdh_self_test checks whether the FFDH self-test has been
1029
// run in this address space. If not, it runs it and crashes the address space
1030
// if unsuccessful.
1031
void boringssl_ensure_ffdh_self_test(void);
1032
1033
#else
1034
1035
// Outside of FIPS mode, the lazy tests are no-ops.
1036
1037
0
inline void boringssl_ensure_rsa_self_test(void) {}
1038
0
inline void boringssl_ensure_ecc_self_test(void) {}
1039
0
inline void boringssl_ensure_ffdh_self_test(void) {}
1040
1041
#endif  // FIPS
1042
1043
// BORINGSSL_check_test memcmp's two values of equal length. It returns 1 on
1044
// success and, on failure, it prints an error message that includes the
1045
// hexdumps the two values and returns 0.
1046
int BORINGSSL_check_test(const void *expected, const void *actual,
1047
                         size_t expected_len, const char *name);
1048
1049
// boringssl_self_test_sha256 performs a SHA-256 KAT.
1050
int boringssl_self_test_sha256(void);
1051
1052
// boringssl_self_test_sha512 performs a SHA-512 KAT.
1053
int boringssl_self_test_sha512(void);
1054
1055
// boringssl_self_test_hmac_sha256 performs an HMAC-SHA-256 KAT.
1056
int boringssl_self_test_hmac_sha256(void);
1057
1058
// boringssl_self_test_mlkem performs the ML-KEM KATs.
1059
OPENSSL_EXPORT int boringssl_self_test_mlkem(void);
1060
1061
// boringssl_self_test_mldsa performs the ML-DSA KATs.
1062
OPENSSL_EXPORT int boringssl_self_test_mldsa(void);
1063
1064
// boringssl_self_test_slhdsa performs the SLH-DSA KATs.
1065
OPENSSL_EXPORT int boringssl_self_test_slhdsa(void);
1066
1067
#if defined(BORINGSSL_FIPS_COUNTERS)
1068
void boringssl_fips_inc_counter(enum fips_counter_t counter);
1069
#else
1070
0
inline void boringssl_fips_inc_counter(enum fips_counter_t counter) {}
1071
#endif
1072
1073
#if defined(BORINGSSL_FIPS_BREAK_TESTS)
1074
inline int boringssl_fips_break_test(const char *test) {
1075
  const char *const value = getenv("BORINGSSL_FIPS_BREAK_TEST");
1076
  return value != NULL && strcmp(value, test) == 0;
1077
}
1078
#else
1079
0
inline int boringssl_fips_break_test(const char *test) { return 0; }
1080
#endif  // BORINGSSL_FIPS_BREAK_TESTS
1081
1082
1083
// Runtime CPU feature support
1084
1085
#if defined(OPENSSL_X86) || defined(OPENSSL_X86_64)
1086
// OPENSSL_ia32cap_P contains the Intel CPUID bits when running on an x86 or
1087
// x86-64 system.
1088
//
1089
//   Index 0:
1090
//     EDX for CPUID where EAX = 1
1091
//     Bit 30 is used to indicate an Intel CPU
1092
//   Index 1:
1093
//     ECX for CPUID where EAX = 1
1094
//   Index 2:
1095
//     EBX for CPUID where EAX = 7, ECX = 0
1096
//     Bit 14 (for removed feature MPX) is used to indicate a preference for ymm
1097
//       registers over zmm even when zmm registers are supported
1098
//   Index 3:
1099
//     ECX for CPUID where EAX = 7, ECX = 0
1100
//
1101
// Note: the CPUID bits are pre-adjusted for the OSXSAVE bit and the XMM, YMM,
1102
// and AVX512 bits in XCR0, so it is not necessary to check those. (WARNING: See
1103
// caveats in cpu_intel.c.)
1104
//
1105
// This symbol should only be accessed with |OPENSSL_get_ia32cap|.
1106
extern uint32_t OPENSSL_ia32cap_P[4];
1107
1108
// OPENSSL_get_ia32cap initializes the library if needed and returns the |idx|th
1109
// entry of |OPENSSL_ia32cap_P|. It is marked as a const function so duplicate
1110
// calls can be merged by the compiler, at least when indices match.
1111
OPENSSL_ATTR_CONST uint32_t OPENSSL_get_ia32cap(int idx);
1112
1113
// OPENSSL_adjust_ia32cap adjusts |cap|, which should contain
1114
// |OPENSSL_ia32cap_P|, based on the environment variable value in |env|. This
1115
// function is exposed for unit tests.
1116
void OPENSSL_adjust_ia32cap(uint32_t cap[4], const char *env);
1117
1118
// See Intel manual, volume 2A, table 3-11.
1119
1120
6
inline int CRYPTO_is_intel_cpu(void) {
1121
  // The reserved bit 30 is used to indicate an Intel CPU.
1122
6
  return (OPENSSL_get_ia32cap(0) & (1u << 30)) != 0;
1123
6
}
1124
1125
// See Intel manual, volume 2A, table 3-10.
1126
1127
0
inline int CRYPTO_is_PCLMUL_capable(void) {
1128
#if defined(__PCLMUL__)
1129
  return 1;
1130
#else
1131
0
  return (OPENSSL_get_ia32cap(1) & (1u << 1)) != 0;
1132
0
#endif
1133
0
}
1134
1135
0
inline int CRYPTO_is_SSSE3_capable(void) {
1136
#if defined(__SSSE3__)
1137
  return 1;
1138
#else
1139
0
  return (OPENSSL_get_ia32cap(1) & (1u << 9)) != 0;
1140
0
#endif
1141
0
}
1142
1143
0
inline int CRYPTO_is_SSE4_1_capable(void) {
1144
0
#if defined(__SSE4_1__)
1145
0
  return 1;
1146
0
#else
1147
0
  return (OPENSSL_get_ia32cap(1) & (1u << 19)) != 0;
1148
0
#endif
1149
0
}
1150
1151
0
inline int CRYPTO_is_MOVBE_capable(void) {
1152
#if defined(__MOVBE__)
1153
  return 1;
1154
#else
1155
0
  return (OPENSSL_get_ia32cap(1) & (1u << 22)) != 0;
1156
0
#endif
1157
0
}
1158
1159
0
inline int CRYPTO_is_AESNI_capable(void) {
1160
#if defined(__AES__)
1161
  return 1;
1162
#else
1163
0
  return (OPENSSL_get_ia32cap(1) & (1u << 25)) != 0;
1164
0
#endif
1165
0
}
1166
1167
// We intentionally avoid defining a |CRYPTO_is_XSAVE_capable| function. See
1168
// |CRYPTO_cpu_perf_is_like_silvermont|.
1169
1170
6
inline int CRYPTO_is_AVX_capable(void) {
1171
#if defined(__AVX__)
1172
  return 1;
1173
#else
1174
6
  return (OPENSSL_get_ia32cap(1) & (1u << 28)) != 0;
1175
6
#endif
1176
6
}
1177
1178
0
inline int CRYPTO_is_RDRAND_capable(void) {
1179
  // We intentionally do not check |__RDRND__| here. On some AMD processors, we
1180
  // will act as if the hardware is RDRAND-incapable, even it actually supports
1181
  // it. See cpu_intel.c.
1182
0
  return (OPENSSL_get_ia32cap(1) & (1u << 30)) != 0;
1183
0
}
1184
1185
// See Intel manual, volume 2A, table 3-8.
1186
1187
155
inline int CRYPTO_is_BMI1_capable(void) {
1188
#if defined(__BMI__)
1189
  return 1;
1190
#else
1191
155
  return (OPENSSL_get_ia32cap(2) & (1u << 3)) != 0;
1192
155
#endif
1193
155
}
1194
1195
5.18k
inline int CRYPTO_is_AVX2_capable(void) {
1196
#if defined(__AVX2__)
1197
  return 1;
1198
#else
1199
5.18k
  return (OPENSSL_get_ia32cap(2) & (1u << 5)) != 0;
1200
5.18k
#endif
1201
5.18k
}
1202
1203
31.8k
inline int CRYPTO_is_BMI2_capable(void) {
1204
#if defined(__BMI2__)
1205
  return 1;
1206
#else
1207
31.8k
  return (OPENSSL_get_ia32cap(2) & (1u << 8)) != 0;
1208
31.8k
#endif
1209
31.8k
}
1210
1211
31.8k
inline int CRYPTO_is_ADX_capable(void) {
1212
#if defined(__ADX__)
1213
  return 1;
1214
#else
1215
31.8k
  return (OPENSSL_get_ia32cap(2) & (1u << 19)) != 0;
1216
31.8k
#endif
1217
31.8k
}
1218
1219
// SHA-1 and SHA-256 are defined as a single extension.
1220
0
inline int CRYPTO_is_x86_SHA_capable(void) {
1221
#if defined(__SHA__)
1222
  return 1;
1223
#else
1224
0
  return (OPENSSL_get_ia32cap(2) & (1u << 29)) != 0;
1225
0
#endif
1226
0
}
1227
1228
// CRYPTO_cpu_perf_is_like_silvermont returns one if, based on a heuristic, the
1229
// CPU has Silvermont-like performance characteristics. It is often faster to
1230
// run different codepaths on these CPUs than the available instructions would
1231
// otherwise select. See chacha-x86_64.pl.
1232
//
1233
// Bonnell, Silvermont's predecessor in the Atom lineup, will also be matched by
1234
// this. Goldmont (Silvermont's successor in the Atom lineup) added XSAVE so it
1235
// isn't matched by this. Various sources indicate AMD first implemented MOVBE
1236
// and XSAVE at the same time in Jaguar, so it seems like AMD chips will not be
1237
// matched by this. That seems to be the case for other x86(-64) CPUs.
1238
0
inline int CRYPTO_cpu_perf_is_like_silvermont(void) {
1239
  // WARNING: This MUST NOT be used to guard the execution of the XSAVE
1240
  // instruction. This is the "hardware supports XSAVE" bit, not the OSXSAVE bit
1241
  // that indicates whether we can safely execute XSAVE. This bit may be set
1242
  // even when XSAVE is disabled (by the operating system). See how the users of
1243
  // this bit use it.
1244
  //
1245
  // Historically, the XSAVE bit was artificially cleared on Knights Landing
1246
  // and Knights Mill chips, but as Intel has removed all support from GCC,
1247
  // LLVM, and SDE, we assume they are no longer worth special-casing.
1248
0
  int hardware_supports_xsave = (OPENSSL_get_ia32cap(1) & (1u << 26)) != 0;
1249
0
  return !hardware_supports_xsave && CRYPTO_is_MOVBE_capable();
1250
0
}
1251
1252
0
inline int CRYPTO_is_AVX512BW_capable(void) {
1253
#if defined(__AVX512BW__)
1254
  return 1;
1255
#else
1256
0
  return (OPENSSL_get_ia32cap(2) & (1u << 30)) != 0;
1257
0
#endif
1258
0
}
1259
1260
0
inline int CRYPTO_is_AVX512VL_capable(void) {
1261
#if defined(__AVX512VL__)
1262
  return 1;
1263
#else
1264
0
  return (OPENSSL_get_ia32cap(2) & (1u << 31)) != 0;
1265
0
#endif
1266
0
}
1267
1268
// CRYPTO_cpu_avoid_zmm_registers returns 1 if zmm registers (512-bit vectors)
1269
// should not be used even if the CPU supports them.
1270
//
1271
// Note that this reuses the bit for the removed MPX feature.
1272
0
inline int CRYPTO_cpu_avoid_zmm_registers(void) {
1273
0
  return (OPENSSL_get_ia32cap(2) & (1u << 14)) != 0;
1274
0
}
1275
1276
0
inline int CRYPTO_is_VAES_capable(void) {
1277
#if defined(__VAES__)
1278
  return 1;
1279
#else
1280
0
  return (OPENSSL_get_ia32cap(3) & (1u << 9)) != 0;
1281
0
#endif
1282
0
}
1283
1284
0
inline int CRYPTO_is_VPCLMULQDQ_capable(void) {
1285
#if defined(__VPCLMULQDQ__)
1286
  return 1;
1287
#else
1288
0
  return (OPENSSL_get_ia32cap(3) & (1u << 10)) != 0;
1289
0
#endif
1290
0
}
1291
1292
#endif  // OPENSSL_X86 || OPENSSL_X86_64
1293
1294
#if defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)
1295
1296
// ARMV7_NEON indicates support for NEON.
1297
#define ARMV7_NEON (1 << 0)
1298
1299
// ARMV8_AES indicates support for hardware AES instructions.
1300
#define ARMV8_AES (1 << 2)
1301
1302
// ARMV8_SHA1 indicates support for hardware SHA-1 instructions.
1303
#define ARMV8_SHA1 (1 << 3)
1304
1305
// ARMV8_SHA256 indicates support for hardware SHA-256 instructions.
1306
#define ARMV8_SHA256 (1 << 4)
1307
1308
// ARMV8_PMULL indicates support for carryless multiplication.
1309
#define ARMV8_PMULL (1 << 5)
1310
1311
// ARMV8_SHA512 indicates support for hardware SHA-512 instructions.
1312
#define ARMV8_SHA512 (1 << 6)
1313
1314
#if defined(OPENSSL_STATIC_ARMCAP)
1315
// We assume |CRYPTO_is_*_capable| already checked static capabilities.
1316
inline uint32_t OPENSSL_get_armcap(void) { return 0; }
1317
#else
1318
// OPENSSL_armcap_P contains ARM CPU capabilities as a bitmask of the above
1319
// constants. This should only be accessed with |OPENSSL_get_armcap|.
1320
extern uint32_t OPENSSL_armcap_P;
1321
1322
// OPENSSL_get_armcap initializes the library if needed and returns ARM CPU
1323
// capabilities. It is marked as a const function so duplicate calls can be
1324
// merged by the compiler.
1325
OPENSSL_ATTR_CONST uint32_t OPENSSL_get_armcap(void);
1326
#endif  // OPENSSL_STATIC_ARMCAP
1327
1328
// Normalize some older feature flags to their modern ACLE values.
1329
// https://developer.arm.com/architectures/system-architectures/software-standards/acle
1330
#if defined(__ARM_NEON__) && !defined(__ARM_NEON)
1331
#define __ARM_NEON 1
1332
#endif
1333
#if defined(__ARM_FEATURE_CRYPTO)
1334
#if !defined(__ARM_FEATURE_AES)
1335
#define __ARM_FEATURE_AES 1
1336
#endif
1337
#if !defined(__ARM_FEATURE_SHA2)
1338
#define __ARM_FEATURE_SHA2 1
1339
#endif
1340
#endif
1341
1342
// CRYPTO_is_NEON_capable returns true if the current CPU has a NEON unit. If
1343
// this is known statically, it is a constant inline function.
1344
inline int CRYPTO_is_NEON_capable(void) {
1345
#if (defined(OPENSSL_STATIC_ARMCAP_NEON) || defined(__ARM_NEON)) && \
1346
    !defined(OPENSSL_NO_STATIC_NEON_FOR_TESTING)
1347
  return 1;
1348
#else
1349
  return (OPENSSL_get_armcap() & ARMV7_NEON) != 0;
1350
#endif
1351
}
1352
1353
inline int CRYPTO_is_ARMv8_AES_capable(void) {
1354
#if defined(OPENSSL_STATIC_ARMCAP_AES) || defined(__ARM_FEATURE_AES)
1355
  return 1;
1356
#else
1357
  return (OPENSSL_get_armcap() & ARMV8_AES) != 0;
1358
#endif
1359
}
1360
1361
inline int CRYPTO_is_ARMv8_PMULL_capable(void) {
1362
#if defined(OPENSSL_STATIC_ARMCAP_PMULL) || defined(__ARM_FEATURE_AES)
1363
  return 1;
1364
#else
1365
  return (OPENSSL_get_armcap() & ARMV8_PMULL) != 0;
1366
#endif
1367
}
1368
1369
inline int CRYPTO_is_ARMv8_SHA1_capable(void) {
1370
  // SHA-1 and SHA-2 (only) share |__ARM_FEATURE_SHA2| but otherwise
1371
  // are dealt with independently.
1372
#if defined(OPENSSL_STATIC_ARMCAP_SHA1) || defined(__ARM_FEATURE_SHA2)
1373
  return 1;
1374
#else
1375
  return (OPENSSL_get_armcap() & ARMV8_SHA1) != 0;
1376
#endif
1377
}
1378
1379
inline int CRYPTO_is_ARMv8_SHA256_capable(void) {
1380
  // SHA-1 and SHA-2 (only) share |__ARM_FEATURE_SHA2| but otherwise
1381
  // are dealt with independently.
1382
#if defined(OPENSSL_STATIC_ARMCAP_SHA256) || defined(__ARM_FEATURE_SHA2)
1383
  return 1;
1384
#else
1385
  return (OPENSSL_get_armcap() & ARMV8_SHA256) != 0;
1386
#endif
1387
}
1388
1389
inline int CRYPTO_is_ARMv8_SHA512_capable(void) {
1390
  // There is no |OPENSSL_STATIC_ARMCAP_SHA512|.
1391
#if defined(__ARM_FEATURE_SHA512)
1392
  return 1;
1393
#else
1394
  return (OPENSSL_get_armcap() & ARMV8_SHA512) != 0;
1395
#endif
1396
}
1397
1398
#endif  // OPENSSL_ARM || OPENSSL_AARCH64
1399
1400
1401
#if defined(BORINGSSL_DISPATCH_TEST)
1402
// Runtime CPU dispatch testing support
1403
1404
// BORINGSSL_function_hit is an array of flags. The following functions will
1405
// set these flags if BORINGSSL_DISPATCH_TEST is defined.
1406
//   0: aes_hw_ctr32_encrypt_blocks
1407
//   1: aes_hw_encrypt
1408
//   2: aesni_gcm_encrypt
1409
//   3: aes_hw_set_encrypt_key
1410
//   4: vpaes_encrypt
1411
//   5: vpaes_set_encrypt_key
1412
//   6: aes_gcm_enc_update_vaes_avx2
1413
//   7: aes_gcm_enc_update_vaes_avx512
1414
extern uint8_t BORINGSSL_function_hit[8];
1415
#endif  // BORINGSSL_DISPATCH_TEST
1416
1417
1418
// OPENSSL_vasprintf_internal is just like |vasprintf(3)|. If |system_malloc| is
1419
// 0, memory will be allocated with |OPENSSL_malloc| and must be freed with
1420
// |OPENSSL_free|. Otherwise the system |malloc| function is used and the memory
1421
// must be freed with the system |free| function.
1422
OPENSSL_EXPORT int OPENSSL_vasprintf_internal(char **str, const char *format,
1423
                                              va_list args, int system_malloc)
1424
    OPENSSL_PRINTF_FORMAT_FUNC(2, 0);
1425
1426
1427
// Fuzzer mode.
1428
1429
#if defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION)
1430
// CRYPTO_fuzzer_mode_enabled returns whether fuzzer mode is enabled. See
1431
// |CRYPTO_set_fuzzer_mode|. In non-fuzzer builds, this function statically
1432
// returns zero so the codepaths will be deleted by the optimizer.
1433
int CRYPTO_fuzzer_mode_enabled(void);
1434
#else
1435
inline int CRYPTO_fuzzer_mode_enabled(void) { return 0; }
1436
#endif
1437
1438
1439
#if defined(__cplusplus)
1440
}  // extern C
1441
#endif
1442
1443
// Arithmetic functions.
1444
1445
// CRYPTO_addc_* returns |x + y + carry|, and sets |*out_carry| to the carry
1446
// bit. |carry| must be zero or one.
1447
#if OPENSSL_HAS_BUILTIN(__builtin_addc)
1448
1449
inline unsigned int CRYPTO_addc_impl(unsigned int x, unsigned int y,
1450
                                     unsigned int carry,
1451
0
                                     unsigned int *out_carry) {
1452
0
  return __builtin_addc(x, y, carry, out_carry);
1453
0
}
1454
1455
inline unsigned long CRYPTO_addc_impl(unsigned long x, unsigned long y,
1456
                                      unsigned long carry,
1457
0
                                      unsigned long *out_carry) {
1458
0
  return __builtin_addcl(x, y, carry, out_carry);
1459
0
}
1460
1461
inline unsigned long long CRYPTO_addc_impl(unsigned long long x,
1462
                                           unsigned long long y,
1463
                                           unsigned long long carry,
1464
0
                                           unsigned long long *out_carry) {
1465
0
  return __builtin_addcll(x, y, carry, out_carry);
1466
0
}
1467
1468
inline uint32_t CRYPTO_addc_u32(uint32_t x, uint32_t y, uint32_t carry,
1469
0
                                uint32_t *out_carry) {
1470
0
  return CRYPTO_addc_impl(x, y, carry, out_carry);
1471
0
}
1472
1473
inline uint64_t CRYPTO_addc_u64(uint64_t x, uint64_t y, uint64_t carry,
1474
0
                                uint64_t *out_carry) {
1475
0
  return CRYPTO_addc_impl(x, y, carry, out_carry);
1476
0
}
1477
1478
#else
1479
1480
static inline uint32_t CRYPTO_addc_u32(uint32_t x, uint32_t y, uint32_t carry,
1481
                                       uint32_t *out_carry) {
1482
  declassify_assert(carry <= 1);
1483
  uint64_t ret = carry;
1484
  ret += (uint64_t)x + y;
1485
  *out_carry = (uint32_t)(ret >> 32);
1486
  return (uint32_t)ret;
1487
}
1488
1489
static inline uint64_t CRYPTO_addc_u64(uint64_t x, uint64_t y, uint64_t carry,
1490
                                       uint64_t *out_carry) {
1491
  declassify_assert(carry <= 1);
1492
#if defined(BORINGSSL_HAS_UINT128)
1493
  uint128_t ret = carry;
1494
  ret += (uint128_t)x + y;
1495
  *out_carry = (uint64_t)(ret >> 64);
1496
  return (uint64_t)ret;
1497
#else
1498
  x += carry;
1499
  carry = x < carry;
1500
  uint64_t ret = x + y;
1501
  carry += ret < x;
1502
  *out_carry = carry;
1503
  return ret;
1504
#endif
1505
}
1506
#endif
1507
1508
1509
// CRYPTO_subc_* returns |x - y - borrow|, and sets |*out_borrow| to the borrow
1510
// bit. |borrow| must be zero or one.
1511
#if OPENSSL_HAS_BUILTIN(__builtin_subc)
1512
1513
inline unsigned int CRYPTO_subc_impl(unsigned int x, unsigned int y,
1514
                                     unsigned int borrow,
1515
0
                                     unsigned int *out_borrow) {
1516
0
  return __builtin_subc(x, y, borrow, out_borrow);
1517
0
}
1518
1519
inline unsigned long CRYPTO_subc_impl(unsigned long x, unsigned long y,
1520
                                      unsigned long borrow,
1521
6.40k
                                      unsigned long *out_borrow) {
1522
6.40k
  return __builtin_subcl(x, y, borrow, out_borrow);
1523
6.40k
}
1524
1525
inline unsigned long long CRYPTO_subc_impl(unsigned long long x,
1526
                                           unsigned long long y,
1527
                                           unsigned long long borrow,
1528
0
                                           unsigned long long *out_borrow) {
1529
0
  return __builtin_subcll(x, y, borrow, out_borrow);
1530
0
}
1531
1532
inline uint32_t CRYPTO_subc_u32(uint32_t x, uint32_t y, uint32_t borrow,
1533
0
                                uint32_t *out_borrow) {
1534
0
  return CRYPTO_subc_impl(x, y, borrow, out_borrow);
1535
0
}
1536
1537
inline uint64_t CRYPTO_subc_u64(uint64_t x, uint64_t y, uint64_t borrow,
1538
6.40k
                                uint64_t *out_borrow) {
1539
6.40k
  return CRYPTO_subc_impl(x, y, borrow, out_borrow);
1540
6.40k
}
1541
1542
#else
1543
1544
static inline uint32_t CRYPTO_subc_u32(uint32_t x, uint32_t y, uint32_t borrow,
1545
                                       uint32_t *out_borrow) {
1546
  declassify_assert(borrow <= 1);
1547
  uint32_t ret = x - y - borrow;
1548
  *out_borrow = (x < y) | ((x == y) & borrow);
1549
  return ret;
1550
}
1551
1552
static inline uint64_t CRYPTO_subc_u64(uint64_t x, uint64_t y, uint64_t borrow,
1553
                                       uint64_t *out_borrow) {
1554
  declassify_assert(borrow <= 1);
1555
  uint64_t ret = x - y - borrow;
1556
  *out_borrow = (x < y) | ((x == y) & borrow);
1557
  return ret;
1558
}
1559
#endif
1560
1561
#if defined(OPENSSL_64_BIT)
1562
0
#define CRYPTO_addc_w CRYPTO_addc_u64
1563
6.40k
#define CRYPTO_subc_w CRYPTO_subc_u64
1564
#else
1565
#define CRYPTO_addc_w CRYPTO_addc_u32
1566
#define CRYPTO_subc_w CRYPTO_subc_u32
1567
#endif
1568
1569
1570
#endif  // OPENSSL_HEADER_CRYPTO_INTERNAL_H