/src/boringssl/crypto/internal.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
2 | | * All rights reserved. |
3 | | * |
4 | | * This package is an SSL implementation written |
5 | | * by Eric Young (eay@cryptsoft.com). |
6 | | * The implementation was written so as to conform with Netscapes SSL. |
7 | | * |
8 | | * This library is free for commercial and non-commercial use as long as |
9 | | * the following conditions are aheared to. The following conditions |
10 | | * apply to all code found in this distribution, be it the RC4, RSA, |
11 | | * lhash, DES, etc., code; not just the SSL code. The SSL documentation |
12 | | * included with this distribution is covered by the same copyright terms |
13 | | * except that the holder is Tim Hudson (tjh@cryptsoft.com). |
14 | | * |
15 | | * Copyright remains Eric Young's, and as such any Copyright notices in |
16 | | * the code are not to be removed. |
17 | | * If this package is used in a product, Eric Young should be given attribution |
18 | | * as the author of the parts of the library used. |
19 | | * This can be in the form of a textual message at program startup or |
20 | | * in documentation (online or textual) provided with the package. |
21 | | * |
22 | | * Redistribution and use in source and binary forms, with or without |
23 | | * modification, are permitted provided that the following conditions |
24 | | * are met: |
25 | | * 1. Redistributions of source code must retain the copyright |
26 | | * notice, this list of conditions and the following disclaimer. |
27 | | * 2. Redistributions in binary form must reproduce the above copyright |
28 | | * notice, this list of conditions and the following disclaimer in the |
29 | | * documentation and/or other materials provided with the distribution. |
30 | | * 3. All advertising materials mentioning features or use of this software |
31 | | * must display the following acknowledgement: |
32 | | * "This product includes cryptographic software written by |
33 | | * Eric Young (eay@cryptsoft.com)" |
34 | | * The word 'cryptographic' can be left out if the rouines from the library |
35 | | * being used are not cryptographic related :-). |
36 | | * 4. If you include any Windows specific code (or a derivative thereof) from |
37 | | * the apps directory (application code) you must include an acknowledgement: |
38 | | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" |
39 | | * |
40 | | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND |
41 | | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
42 | | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
43 | | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE |
44 | | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
45 | | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
46 | | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
47 | | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
48 | | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
49 | | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
50 | | * SUCH DAMAGE. |
51 | | * |
52 | | * The licence and distribution terms for any publically available version or |
53 | | * derivative of this code cannot be changed. i.e. this code cannot simply be |
54 | | * copied and put under another distribution licence |
55 | | * [including the GNU Public Licence.] |
56 | | */ |
57 | | /* ==================================================================== |
58 | | * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. |
59 | | * |
60 | | * Redistribution and use in source and binary forms, with or without |
61 | | * modification, are permitted provided that the following conditions |
62 | | * are met: |
63 | | * |
64 | | * 1. Redistributions of source code must retain the above copyright |
65 | | * notice, this list of conditions and the following disclaimer. |
66 | | * |
67 | | * 2. Redistributions in binary form must reproduce the above copyright |
68 | | * notice, this list of conditions and the following disclaimer in |
69 | | * the documentation and/or other materials provided with the |
70 | | * distribution. |
71 | | * |
72 | | * 3. All advertising materials mentioning features or use of this |
73 | | * software must display the following acknowledgment: |
74 | | * "This product includes software developed by the OpenSSL Project |
75 | | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" |
76 | | * |
77 | | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to |
78 | | * endorse or promote products derived from this software without |
79 | | * prior written permission. For written permission, please contact |
80 | | * openssl-core@openssl.org. |
81 | | * |
82 | | * 5. Products derived from this software may not be called "OpenSSL" |
83 | | * nor may "OpenSSL" appear in their names without prior written |
84 | | * permission of the OpenSSL Project. |
85 | | * |
86 | | * 6. Redistributions of any form whatsoever must retain the following |
87 | | * acknowledgment: |
88 | | * "This product includes software developed by the OpenSSL Project |
89 | | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" |
90 | | * |
91 | | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY |
92 | | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
93 | | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
94 | | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR |
95 | | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
96 | | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
97 | | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
98 | | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
99 | | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
100 | | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
101 | | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED |
102 | | * OF THE POSSIBILITY OF SUCH DAMAGE. |
103 | | * ==================================================================== |
104 | | * |
105 | | * This product includes cryptographic software written by Eric Young |
106 | | * (eay@cryptsoft.com). This product includes software written by Tim |
107 | | * Hudson (tjh@cryptsoft.com). */ |
108 | | |
109 | | #ifndef OPENSSL_HEADER_CRYPTO_INTERNAL_H |
110 | | #define OPENSSL_HEADER_CRYPTO_INTERNAL_H |
111 | | |
112 | | #include <openssl/arm_arch.h> |
113 | | #include <openssl/crypto.h> |
114 | | #include <openssl/ex_data.h> |
115 | | #include <openssl/stack.h> |
116 | | #include <openssl/thread.h> |
117 | | |
118 | | #include <assert.h> |
119 | | #include <string.h> |
120 | | |
121 | | #if defined(BORINGSSL_CONSTANT_TIME_VALIDATION) |
122 | | #include <valgrind/memcheck.h> |
123 | | #endif |
124 | | |
125 | | #if defined(BORINGSSL_FIPS_BREAK_TESTS) |
126 | | #include <stdlib.h> |
127 | | #endif |
128 | | |
129 | | #if !defined(__cplusplus) |
130 | | #if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 201112L |
131 | | // BoringSSL requires C11 to build the library. The most likely cause of |
132 | | // pre-C11 modes is stale -std=c99 or -std=gnu99 flags in build configuration. |
133 | | // Such flags can be removed. If building with MSVC, build with /std:c11. |
134 | | #error "BoringSSL must be built in C11 mode or higher." |
135 | | #endif |
136 | | #include <stdalign.h> |
137 | | #endif |
138 | | |
139 | | #if defined(OPENSSL_THREADS) && \ |
140 | | (!defined(OPENSSL_WINDOWS) || defined(__MINGW32__)) |
141 | | #include <pthread.h> |
142 | | #define OPENSSL_PTHREADS |
143 | | #endif |
144 | | |
145 | | #if defined(OPENSSL_THREADS) && !defined(OPENSSL_PTHREADS) && \ |
146 | | defined(OPENSSL_WINDOWS) |
147 | | #define OPENSSL_WINDOWS_THREADS |
148 | | #endif |
149 | | |
150 | | // Determine the atomics implementation to use with C. |
151 | | #if !defined(__cplusplus) |
152 | | #if !defined(OPENSSL_C11_ATOMIC) && defined(OPENSSL_THREADS) && \ |
153 | | !defined(__STDC_NO_ATOMICS__) |
154 | | #define OPENSSL_C11_ATOMIC |
155 | | #endif |
156 | | |
157 | | #if defined(OPENSSL_C11_ATOMIC) |
158 | | #include <stdatomic.h> |
159 | | #endif |
160 | | |
161 | | // Older MSVC does not support C11 atomics, so we fallback to the Windows APIs. |
162 | | // When both are available (e.g. clang-cl), we prefer the C11 ones. The Windows |
163 | | // APIs don't allow some operations to be implemented as efficiently. This can |
164 | | // be removed once we can rely on |
165 | | // https://devblogs.microsoft.com/cppblog/c11-atomics-in-visual-studio-2022-version-17-5-preview-2/ |
166 | | #if !defined(OPENSSL_C11_ATOMIC) && defined(OPENSSL_THREADS) && \ |
167 | | defined(OPENSSL_WINDOWS) |
168 | | #define OPENSSL_WINDOWS_ATOMIC |
169 | | #endif |
170 | | #endif // !__cplusplus |
171 | | |
172 | | #if defined(OPENSSL_WINDOWS_THREADS) || defined(OPENSSL_WINDOWS_ATOMIC) |
173 | | OPENSSL_MSVC_PRAGMA(warning(push, 3)) |
174 | | #include <windows.h> |
175 | | OPENSSL_MSVC_PRAGMA(warning(pop)) |
176 | | #endif |
177 | | |
178 | | #if defined(__cplusplus) |
179 | | extern "C" { |
180 | | #endif |
181 | | |
182 | | |
183 | | #if !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_STATIC_ARMCAP) && \ |
184 | | (defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \ |
185 | | defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)) |
186 | | // x86, x86_64, and the ARMs need to record the result of a cpuid/getauxval call |
187 | | // for the asm to work correctly, unless compiled without asm code. |
188 | | #define NEED_CPUID |
189 | | |
190 | | // OPENSSL_cpuid_setup initializes the platform-specific feature cache. This |
191 | | // function should not be called directly. Call |OPENSSL_init_cpuid| instead. |
192 | | void OPENSSL_cpuid_setup(void); |
193 | | |
194 | | // OPENSSL_init_cpuid initializes the platform-specific feature cache, if |
195 | | // needed. This function is idempotent and may be called concurrently. |
196 | | void OPENSSL_init_cpuid(void); |
197 | | #else |
198 | 0 | OPENSSL_INLINE void OPENSSL_init_cpuid(void) {} Unexecuted instantiation: a_int.c:OPENSSL_init_cpuid Unexecuted instantiation: asn1_lib.c:OPENSSL_init_cpuid Unexecuted instantiation: bcm.c:OPENSSL_init_cpuid Unexecuted instantiation: cbb.c:OPENSSL_init_cpuid Unexecuted instantiation: cbs.c:OPENSSL_init_cpuid Unexecuted instantiation: convert.c:OPENSSL_init_cpuid Unexecuted instantiation: crypto.c:OPENSSL_init_cpuid Unexecuted instantiation: curve25519.c:OPENSSL_init_cpuid Unexecuted instantiation: digest_extra.c:OPENSSL_init_cpuid Unexecuted instantiation: dsa.c:OPENSSL_init_cpuid Unexecuted instantiation: dsa_asn1.c:OPENSSL_init_cpuid Unexecuted instantiation: e_aesctrhmac.c:OPENSSL_init_cpuid Unexecuted instantiation: e_aesgcmsiv.c:OPENSSL_init_cpuid Unexecuted instantiation: e_chacha20poly1305.c:OPENSSL_init_cpuid Unexecuted instantiation: e_des.c:OPENSSL_init_cpuid Unexecuted instantiation: e_rc2.c:OPENSSL_init_cpuid Unexecuted instantiation: e_rc4.c:OPENSSL_init_cpuid Unexecuted instantiation: e_tls.c:OPENSSL_init_cpuid Unexecuted instantiation: ecdh_extra.c:OPENSSL_init_cpuid Unexecuted instantiation: ecdsa_asn1.c:OPENSSL_init_cpuid Unexecuted instantiation: engine.c:OPENSSL_init_cpuid Unexecuted instantiation: err.c:OPENSSL_init_cpuid Unexecuted instantiation: evp.c:OPENSSL_init_cpuid Unexecuted instantiation: evp_ctx.c:OPENSSL_init_cpuid Unexecuted instantiation: ex_data.c:OPENSSL_init_cpuid Unexecuted instantiation: file.c:OPENSSL_init_cpuid Unexecuted instantiation: fork_detect.c:OPENSSL_init_cpuid Unexecuted instantiation: forkunsafe.c:OPENSSL_init_cpuid Unexecuted instantiation: md4.c:OPENSSL_init_cpuid Unexecuted instantiation: md5.c:OPENSSL_init_cpuid Unexecuted instantiation: mem.c:OPENSSL_init_cpuid Unexecuted instantiation: obj.c:OPENSSL_init_cpuid Unexecuted instantiation: p_dh_asn1.c:OPENSSL_init_cpuid Unexecuted instantiation: p_dsa_asn1.c:OPENSSL_init_cpuid Unexecuted instantiation: p_ec.c:OPENSSL_init_cpuid Unexecuted instantiation: p_ed25519_asn1.c:OPENSSL_init_cpuid Unexecuted instantiation: p_hkdf.c:OPENSSL_init_cpuid Unexecuted instantiation: p_rsa.c:OPENSSL_init_cpuid Unexecuted instantiation: p_rsa_asn1.c:OPENSSL_init_cpuid Unexecuted instantiation: p_x25519_asn1.c:OPENSSL_init_cpuid Unexecuted instantiation: pbkdf.c:OPENSSL_init_cpuid Unexecuted instantiation: poly1305_vec.c:OPENSSL_init_cpuid Unexecuted instantiation: refcount.c:OPENSSL_init_cpuid Unexecuted instantiation: rsa_asn1.c:OPENSSL_init_cpuid Unexecuted instantiation: rsa_crypt.c:OPENSSL_init_cpuid Unexecuted instantiation: scrypt.c:OPENSSL_init_cpuid Unexecuted instantiation: siphash.c:OPENSSL_init_cpuid Unexecuted instantiation: stack.c:OPENSSL_init_cpuid Unexecuted instantiation: thread_pthread.c:OPENSSL_init_cpuid Unexecuted instantiation: tls_cbc.c:OPENSSL_init_cpuid Unexecuted instantiation: urandom.c:OPENSSL_init_cpuid Unexecuted instantiation: a_bitstr.c:OPENSSL_init_cpuid Unexecuted instantiation: a_object.c:OPENSSL_init_cpuid Unexecuted instantiation: asn1_compat.c:OPENSSL_init_cpuid Unexecuted instantiation: bio.c:OPENSSL_init_cpuid Unexecuted instantiation: blake2.c:OPENSSL_init_cpuid Unexecuted instantiation: chacha.c:OPENSSL_init_cpuid Unexecuted instantiation: des.c:OPENSSL_init_cpuid Unexecuted instantiation: ec_asn1.c:OPENSSL_init_cpuid Unexecuted instantiation: lhash.c:OPENSSL_init_cpuid Unexecuted instantiation: tasn_dec.c:OPENSSL_init_cpuid Unexecuted instantiation: tasn_enc.c:OPENSSL_init_cpuid Unexecuted instantiation: tasn_new.c:OPENSSL_init_cpuid Unexecuted instantiation: tasn_utl.c:OPENSSL_init_cpuid Unexecuted instantiation: pool.c:OPENSSL_init_cpuid |
199 | | #endif |
200 | | |
201 | | #if (defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)) && \ |
202 | | !defined(OPENSSL_STATIC_ARMCAP) |
203 | | // OPENSSL_get_armcap_pointer_for_test returns a pointer to |OPENSSL_armcap_P| |
204 | | // for unit tests. Any modifications to the value must be made before any other |
205 | | // function call in BoringSSL. |
206 | | OPENSSL_EXPORT uint32_t *OPENSSL_get_armcap_pointer_for_test(void); |
207 | | #endif |
208 | | |
209 | | |
210 | | // On non-MSVC 64-bit targets, we expect __uint128_t support. This includes |
211 | | // clang-cl, which defines both __clang__ and _MSC_VER. |
212 | | #if (!defined(_MSC_VER) || defined(__clang__)) && defined(OPENSSL_64_BIT) |
213 | | #define BORINGSSL_HAS_UINT128 |
214 | | typedef __int128_t int128_t; |
215 | | typedef __uint128_t uint128_t; |
216 | | |
217 | | // __uint128_t division depends on intrinsics in the compiler runtime. Those |
218 | | // intrinsics are missing in clang-cl (https://crbug.com/787617) and nanolibc. |
219 | | // These may be bugs in the toolchain definition, but just disable it for now. |
220 | | // EDK2's toolchain is missing __udivti3 (b/339380897) so cannot support |
221 | | // 128-bit division currently. |
222 | | #if !defined(_MSC_VER) && !defined(OPENSSL_NANOLIBC) && !defined(__EDK2_BORINGSSL__) |
223 | | #define BORINGSSL_CAN_DIVIDE_UINT128 |
224 | | #endif |
225 | | #endif |
226 | | |
227 | 493k | #define OPENSSL_ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0])) |
228 | | |
229 | | // Have a generic fall-through for different versions of C/C++. |
230 | | #if defined(__cplusplus) && __cplusplus >= 201703L |
231 | | #define OPENSSL_FALLTHROUGH [[fallthrough]] |
232 | | #elif defined(__cplusplus) && __cplusplus >= 201103L && defined(__clang__) |
233 | | #define OPENSSL_FALLTHROUGH [[clang::fallthrough]] |
234 | | #elif defined(__cplusplus) && __cplusplus >= 201103L && defined(__GNUC__) && \ |
235 | | __GNUC__ >= 7 |
236 | | #define OPENSSL_FALLTHROUGH [[gnu::fallthrough]] |
237 | | #elif defined(__GNUC__) && __GNUC__ >= 7 // gcc 7 |
238 | | #define OPENSSL_FALLTHROUGH __attribute__ ((fallthrough)) |
239 | | #elif defined(__clang__) |
240 | | #if __has_attribute(fallthrough) && __clang_major__ >= 5 |
241 | | // Clang 3.5, at least, complains about "error: declaration does not declare |
242 | | // anything", possibily because we put a semicolon after this macro in |
243 | | // practice. Thus limit it to >= Clang 5, which does work. |
244 | 0 | #define OPENSSL_FALLTHROUGH __attribute__ ((fallthrough)) |
245 | | #else // clang versions that do not support fallthrough. |
246 | | #define OPENSSL_FALLTHROUGH |
247 | | #endif |
248 | | #else // C++11 on gcc 6, and all other cases |
249 | | #define OPENSSL_FALLTHROUGH |
250 | | #endif |
251 | | |
252 | | // GCC-like compilers indicate SSE2 with |__SSE2__|. MSVC leaves the caller to |
253 | | // know that x86_64 has SSE2, and uses _M_IX86_FP to indicate SSE2 on x86. |
254 | | // https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros?view=msvc-170 |
255 | | #if defined(__SSE2__) || defined(_M_AMD64) || defined(_M_X64) || \ |
256 | | (defined(_M_IX86_FP) && _M_IX86_FP >= 2) |
257 | | #define OPENSSL_SSE2 |
258 | | #endif |
259 | | |
260 | | #if defined(OPENSSL_X86) && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_SSE2) |
261 | | #error \ |
262 | | "x86 assembly requires SSE2. Build with -msse2 (recommended), or disable assembly optimizations with -DOPENSSL_NO_ASM." |
263 | | #endif |
264 | | |
265 | | // For convenience in testing the fallback code, we allow disabling SSE2 |
266 | | // intrinsics via |OPENSSL_NO_SSE2_FOR_TESTING|. We require SSE2 on x86 and |
267 | | // x86_64, so we would otherwise need to test such code on a non-x86 platform. |
268 | | // |
269 | | // This does not remove the above requirement for SSE2 support with assembly |
270 | | // optimizations. It only disables some intrinsics-based optimizations so that |
271 | | // we can test the fallback code on CI. |
272 | | #if defined(OPENSSL_SSE2) && defined(OPENSSL_NO_SSE2_FOR_TESTING) |
273 | | #undef OPENSSL_SSE2 |
274 | | #endif |
275 | | |
276 | | #if defined(__GNUC__) || defined(__clang__) |
277 | | #define OPENSSL_ATTR_CONST __attribute__((const)) |
278 | | #else |
279 | | #define OPENSSL_ATTR_CONST |
280 | | #endif |
281 | | |
282 | | #if defined(BORINGSSL_MALLOC_FAILURE_TESTING) |
283 | | // OPENSSL_reset_malloc_counter_for_testing, when malloc testing is enabled, |
284 | | // resets the internal malloc counter, to simulate further malloc failures. This |
285 | | // should be called in between independent tests, at a point where failure from |
286 | | // a previous test will not impact subsequent ones. |
287 | | OPENSSL_EXPORT void OPENSSL_reset_malloc_counter_for_testing(void); |
288 | | |
289 | | // OPENSSL_disable_malloc_failures_for_testing, when malloc testing is enabled, |
290 | | // disables simulated malloc failures. Calls to |OPENSSL_malloc| will not |
291 | | // increment the malloc counter or synthesize failures. This may be used to skip |
292 | | // simulating malloc failures in some region of code. |
293 | | OPENSSL_EXPORT void OPENSSL_disable_malloc_failures_for_testing(void); |
294 | | |
295 | | // OPENSSL_enable_malloc_failures_for_testing, when malloc testing is enabled, |
296 | | // re-enables simulated malloc failures. |
297 | | OPENSSL_EXPORT void OPENSSL_enable_malloc_failures_for_testing(void); |
298 | | #else |
299 | 0 | OPENSSL_INLINE void OPENSSL_reset_malloc_counter_for_testing(void) {} Unexecuted instantiation: a_int.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: asn1_lib.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: bcm.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: cbb.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: cbs.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: convert.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: crypto.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: curve25519.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: digest_extra.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: dsa.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: dsa_asn1.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: e_aesctrhmac.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: e_aesgcmsiv.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: e_chacha20poly1305.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: e_des.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: e_rc2.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: e_rc4.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: e_tls.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: ecdh_extra.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: ecdsa_asn1.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: engine.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: err.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: evp.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: evp_ctx.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: ex_data.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: file.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: fork_detect.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: forkunsafe.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: md4.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: md5.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: mem.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: obj.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: p_dh_asn1.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: p_dsa_asn1.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: p_ec.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: p_ed25519_asn1.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: p_hkdf.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: p_rsa.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: p_rsa_asn1.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: p_x25519_asn1.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: pbkdf.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: poly1305_vec.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: refcount.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: rsa_asn1.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: rsa_crypt.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: scrypt.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: siphash.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: stack.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: thread_pthread.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: tls_cbc.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: urandom.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: a_bitstr.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: a_object.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: asn1_compat.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: bio.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: blake2.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: chacha.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: des.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: ec_asn1.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: lhash.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: tasn_dec.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: tasn_enc.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: tasn_new.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: tasn_utl.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: pool.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: curve25519_64_adx.c:OPENSSL_reset_malloc_counter_for_testing Unexecuted instantiation: cpu_intel.c:OPENSSL_reset_malloc_counter_for_testing |
300 | 0 | OPENSSL_INLINE void OPENSSL_disable_malloc_failures_for_testing(void) {} Unexecuted instantiation: a_int.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: asn1_lib.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: bcm.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: cbb.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: cbs.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: convert.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: crypto.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: curve25519.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: digest_extra.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: dsa.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: dsa_asn1.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: e_aesctrhmac.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: e_aesgcmsiv.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: e_chacha20poly1305.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: e_des.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: e_rc2.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: e_rc4.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: e_tls.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: ecdh_extra.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: ecdsa_asn1.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: engine.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: err.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: evp.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: evp_ctx.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: ex_data.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: file.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: fork_detect.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: forkunsafe.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: md4.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: md5.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: mem.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: obj.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: p_dh_asn1.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: p_dsa_asn1.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: p_ec.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: p_ed25519_asn1.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: p_hkdf.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: p_rsa.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: p_rsa_asn1.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: p_x25519_asn1.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: pbkdf.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: poly1305_vec.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: refcount.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: rsa_asn1.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: rsa_crypt.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: scrypt.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: siphash.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: stack.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: thread_pthread.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: tls_cbc.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: urandom.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: a_bitstr.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: a_object.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: asn1_compat.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: bio.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: blake2.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: chacha.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: des.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: ec_asn1.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: lhash.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: tasn_dec.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: tasn_enc.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: tasn_new.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: tasn_utl.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: pool.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: curve25519_64_adx.c:OPENSSL_disable_malloc_failures_for_testing Unexecuted instantiation: cpu_intel.c:OPENSSL_disable_malloc_failures_for_testing |
301 | 0 | OPENSSL_INLINE void OPENSSL_enable_malloc_failures_for_testing(void) {} Unexecuted instantiation: a_int.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: asn1_lib.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: bcm.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: cbb.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: cbs.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: convert.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: crypto.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: curve25519.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: digest_extra.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: dsa.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: dsa_asn1.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: e_aesctrhmac.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: e_aesgcmsiv.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: e_chacha20poly1305.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: e_des.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: e_rc2.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: e_rc4.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: e_tls.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: ecdh_extra.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: ecdsa_asn1.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: engine.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: err.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: evp.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: evp_ctx.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: ex_data.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: file.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: fork_detect.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: forkunsafe.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: md4.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: md5.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: mem.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: obj.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: p_dh_asn1.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: p_dsa_asn1.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: p_ec.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: p_ed25519_asn1.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: p_hkdf.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: p_rsa.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: p_rsa_asn1.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: p_x25519_asn1.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: pbkdf.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: poly1305_vec.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: refcount.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: rsa_asn1.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: rsa_crypt.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: scrypt.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: siphash.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: stack.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: thread_pthread.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: tls_cbc.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: urandom.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: a_bitstr.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: a_object.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: asn1_compat.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: bio.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: blake2.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: chacha.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: des.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: ec_asn1.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: lhash.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: tasn_dec.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: tasn_enc.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: tasn_new.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: tasn_utl.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: pool.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: curve25519_64_adx.c:OPENSSL_enable_malloc_failures_for_testing Unexecuted instantiation: cpu_intel.c:OPENSSL_enable_malloc_failures_for_testing |
302 | | #endif |
303 | | |
304 | | #if defined(__has_builtin) |
305 | | #define OPENSSL_HAS_BUILTIN(x) __has_builtin(x) |
306 | | #else |
307 | | #define OPENSSL_HAS_BUILTIN(x) 0 |
308 | | #endif |
309 | | |
310 | | |
311 | | // Pointer utility functions. |
312 | | |
313 | | // buffers_alias returns one if |a| and |b| alias and zero otherwise. |
314 | | static inline int buffers_alias(const void *a, size_t a_bytes, |
315 | 2.21k | const void *b, size_t b_bytes) { |
316 | | // Cast |a| and |b| to integers. In C, pointer comparisons between unrelated |
317 | | // objects are undefined whereas pointer to integer conversions are merely |
318 | | // implementation-defined. We assume the implementation defined it in a sane |
319 | | // way. |
320 | 2.21k | uintptr_t a_u = (uintptr_t)a; |
321 | 2.21k | uintptr_t b_u = (uintptr_t)b; |
322 | 2.21k | return a_u + a_bytes > b_u && b_u + b_bytes > a_u; |
323 | 2.21k | } Unexecuted instantiation: a_int.c:buffers_alias Unexecuted instantiation: asn1_lib.c:buffers_alias Line | Count | Source | 315 | 1.39k | const void *b, size_t b_bytes) { | 316 | | // Cast |a| and |b| to integers. In C, pointer comparisons between unrelated | 317 | | // objects are undefined whereas pointer to integer conversions are merely | 318 | | // implementation-defined. We assume the implementation defined it in a sane | 319 | | // way. | 320 | 1.39k | uintptr_t a_u = (uintptr_t)a; | 321 | 1.39k | uintptr_t b_u = (uintptr_t)b; | 322 | 1.39k | return a_u + a_bytes > b_u && b_u + b_bytes > a_u; | 323 | 1.39k | } |
Unexecuted instantiation: cbb.c:buffers_alias Unexecuted instantiation: cbs.c:buffers_alias Unexecuted instantiation: convert.c:buffers_alias Unexecuted instantiation: crypto.c:buffers_alias curve25519.c:buffers_alias Line | Count | Source | 315 | 512 | const void *b, size_t b_bytes) { | 316 | | // Cast |a| and |b| to integers. In C, pointer comparisons between unrelated | 317 | | // objects are undefined whereas pointer to integer conversions are merely | 318 | | // implementation-defined. We assume the implementation defined it in a sane | 319 | | // way. | 320 | 512 | uintptr_t a_u = (uintptr_t)a; | 321 | 512 | uintptr_t b_u = (uintptr_t)b; | 322 | 512 | return a_u + a_bytes > b_u && b_u + b_bytes > a_u; | 323 | 512 | } |
Unexecuted instantiation: digest_extra.c:buffers_alias Unexecuted instantiation: dsa.c:buffers_alias Unexecuted instantiation: dsa_asn1.c:buffers_alias Unexecuted instantiation: e_aesctrhmac.c:buffers_alias Unexecuted instantiation: e_aesgcmsiv.c:buffers_alias Unexecuted instantiation: e_chacha20poly1305.c:buffers_alias Unexecuted instantiation: e_des.c:buffers_alias Unexecuted instantiation: e_rc2.c:buffers_alias Unexecuted instantiation: e_rc4.c:buffers_alias Unexecuted instantiation: e_tls.c:buffers_alias Unexecuted instantiation: ecdh_extra.c:buffers_alias Unexecuted instantiation: ecdsa_asn1.c:buffers_alias Unexecuted instantiation: engine.c:buffers_alias Unexecuted instantiation: err.c:buffers_alias Unexecuted instantiation: evp.c:buffers_alias Unexecuted instantiation: evp_ctx.c:buffers_alias Unexecuted instantiation: ex_data.c:buffers_alias Unexecuted instantiation: file.c:buffers_alias Unexecuted instantiation: fork_detect.c:buffers_alias Unexecuted instantiation: forkunsafe.c:buffers_alias Unexecuted instantiation: md4.c:buffers_alias Unexecuted instantiation: md5.c:buffers_alias Unexecuted instantiation: mem.c:buffers_alias Unexecuted instantiation: obj.c:buffers_alias Unexecuted instantiation: p_dh_asn1.c:buffers_alias Unexecuted instantiation: p_dsa_asn1.c:buffers_alias Unexecuted instantiation: p_ec.c:buffers_alias Unexecuted instantiation: p_ed25519_asn1.c:buffers_alias Unexecuted instantiation: p_hkdf.c:buffers_alias Unexecuted instantiation: p_rsa.c:buffers_alias Unexecuted instantiation: p_rsa_asn1.c:buffers_alias Unexecuted instantiation: p_x25519_asn1.c:buffers_alias Unexecuted instantiation: pbkdf.c:buffers_alias Unexecuted instantiation: poly1305_vec.c:buffers_alias Unexecuted instantiation: refcount.c:buffers_alias Unexecuted instantiation: rsa_asn1.c:buffers_alias Unexecuted instantiation: rsa_crypt.c:buffers_alias Unexecuted instantiation: scrypt.c:buffers_alias Unexecuted instantiation: siphash.c:buffers_alias Unexecuted instantiation: stack.c:buffers_alias Unexecuted instantiation: thread_pthread.c:buffers_alias Unexecuted instantiation: tls_cbc.c:buffers_alias Unexecuted instantiation: urandom.c:buffers_alias Unexecuted instantiation: a_bitstr.c:buffers_alias Unexecuted instantiation: a_object.c:buffers_alias Unexecuted instantiation: asn1_compat.c:buffers_alias Unexecuted instantiation: bio.c:buffers_alias Unexecuted instantiation: blake2.c:buffers_alias Line | Count | Source | 315 | 304 | const void *b, size_t b_bytes) { | 316 | | // Cast |a| and |b| to integers. In C, pointer comparisons between unrelated | 317 | | // objects are undefined whereas pointer to integer conversions are merely | 318 | | // implementation-defined. We assume the implementation defined it in a sane | 319 | | // way. | 320 | 304 | uintptr_t a_u = (uintptr_t)a; | 321 | 304 | uintptr_t b_u = (uintptr_t)b; | 322 | 304 | return a_u + a_bytes > b_u && b_u + b_bytes > a_u; | 323 | 304 | } |
Unexecuted instantiation: des.c:buffers_alias Unexecuted instantiation: ec_asn1.c:buffers_alias Unexecuted instantiation: lhash.c:buffers_alias Unexecuted instantiation: tasn_dec.c:buffers_alias Unexecuted instantiation: tasn_enc.c:buffers_alias Unexecuted instantiation: tasn_new.c:buffers_alias Unexecuted instantiation: tasn_utl.c:buffers_alias Unexecuted instantiation: pool.c:buffers_alias Unexecuted instantiation: curve25519_64_adx.c:buffers_alias Unexecuted instantiation: cpu_intel.c:buffers_alias |
324 | | |
325 | | // align_pointer returns |ptr|, advanced to |alignment|. |alignment| must be a |
326 | | // power of two, and |ptr| must have at least |alignment - 1| bytes of scratch |
327 | | // space. |
328 | 3.17k | static inline void *align_pointer(void *ptr, size_t alignment) { |
329 | | // |alignment| must be a power of two. |
330 | 3.17k | assert(alignment != 0 && (alignment & (alignment - 1)) == 0); |
331 | | // Instead of aligning |ptr| as a |uintptr_t| and casting back, compute the |
332 | | // offset and advance in pointer space. C guarantees that casting from pointer |
333 | | // to |uintptr_t| and back gives the same pointer, but general |
334 | | // integer-to-pointer conversions are implementation-defined. GCC does define |
335 | | // it in the useful way, but this makes fewer assumptions. |
336 | 3.17k | uintptr_t offset = (0u - (uintptr_t)ptr) & (alignment - 1); |
337 | 3.17k | ptr = (char *)ptr + offset; |
338 | 3.17k | assert(((uintptr_t)ptr & (alignment - 1)) == 0); |
339 | 3.17k | return ptr; |
340 | 3.17k | } Unexecuted instantiation: a_int.c:align_pointer Unexecuted instantiation: asn1_lib.c:align_pointer Line | Count | Source | 328 | 3.17k | static inline void *align_pointer(void *ptr, size_t alignment) { | 329 | | // |alignment| must be a power of two. | 330 | 3.17k | assert(alignment != 0 && (alignment & (alignment - 1)) == 0); | 331 | | // Instead of aligning |ptr| as a |uintptr_t| and casting back, compute the | 332 | | // offset and advance in pointer space. C guarantees that casting from pointer | 333 | | // to |uintptr_t| and back gives the same pointer, but general | 334 | | // integer-to-pointer conversions are implementation-defined. GCC does define | 335 | | // it in the useful way, but this makes fewer assumptions. | 336 | 3.17k | uintptr_t offset = (0u - (uintptr_t)ptr) & (alignment - 1); | 337 | 3.17k | ptr = (char *)ptr + offset; | 338 | 3.17k | assert(((uintptr_t)ptr & (alignment - 1)) == 0); | 339 | 3.17k | return ptr; | 340 | 3.17k | } |
Unexecuted instantiation: cbb.c:align_pointer Unexecuted instantiation: cbs.c:align_pointer Unexecuted instantiation: convert.c:align_pointer Unexecuted instantiation: crypto.c:align_pointer Unexecuted instantiation: curve25519.c:align_pointer Unexecuted instantiation: digest_extra.c:align_pointer Unexecuted instantiation: dsa.c:align_pointer Unexecuted instantiation: dsa_asn1.c:align_pointer Unexecuted instantiation: e_aesctrhmac.c:align_pointer Unexecuted instantiation: e_aesgcmsiv.c:align_pointer Unexecuted instantiation: e_chacha20poly1305.c:align_pointer Unexecuted instantiation: e_des.c:align_pointer Unexecuted instantiation: e_rc2.c:align_pointer Unexecuted instantiation: e_rc4.c:align_pointer Unexecuted instantiation: e_tls.c:align_pointer Unexecuted instantiation: ecdh_extra.c:align_pointer Unexecuted instantiation: ecdsa_asn1.c:align_pointer Unexecuted instantiation: engine.c:align_pointer Unexecuted instantiation: err.c:align_pointer Unexecuted instantiation: evp.c:align_pointer Unexecuted instantiation: evp_ctx.c:align_pointer Unexecuted instantiation: ex_data.c:align_pointer Unexecuted instantiation: file.c:align_pointer Unexecuted instantiation: fork_detect.c:align_pointer Unexecuted instantiation: forkunsafe.c:align_pointer Unexecuted instantiation: md4.c:align_pointer Unexecuted instantiation: md5.c:align_pointer Unexecuted instantiation: mem.c:align_pointer Unexecuted instantiation: obj.c:align_pointer Unexecuted instantiation: p_dh_asn1.c:align_pointer Unexecuted instantiation: p_dsa_asn1.c:align_pointer Unexecuted instantiation: p_ec.c:align_pointer Unexecuted instantiation: p_ed25519_asn1.c:align_pointer Unexecuted instantiation: p_hkdf.c:align_pointer Unexecuted instantiation: p_rsa.c:align_pointer Unexecuted instantiation: p_rsa_asn1.c:align_pointer Unexecuted instantiation: p_x25519_asn1.c:align_pointer Unexecuted instantiation: pbkdf.c:align_pointer Unexecuted instantiation: poly1305_vec.c:align_pointer Unexecuted instantiation: refcount.c:align_pointer Unexecuted instantiation: rsa_asn1.c:align_pointer Unexecuted instantiation: rsa_crypt.c:align_pointer Unexecuted instantiation: scrypt.c:align_pointer Unexecuted instantiation: siphash.c:align_pointer Unexecuted instantiation: stack.c:align_pointer Unexecuted instantiation: thread_pthread.c:align_pointer Unexecuted instantiation: tls_cbc.c:align_pointer Unexecuted instantiation: urandom.c:align_pointer Unexecuted instantiation: a_bitstr.c:align_pointer Unexecuted instantiation: a_object.c:align_pointer Unexecuted instantiation: asn1_compat.c:align_pointer Unexecuted instantiation: bio.c:align_pointer Unexecuted instantiation: blake2.c:align_pointer Unexecuted instantiation: chacha.c:align_pointer Unexecuted instantiation: des.c:align_pointer Unexecuted instantiation: ec_asn1.c:align_pointer Unexecuted instantiation: lhash.c:align_pointer Unexecuted instantiation: tasn_dec.c:align_pointer Unexecuted instantiation: tasn_enc.c:align_pointer Unexecuted instantiation: tasn_new.c:align_pointer Unexecuted instantiation: tasn_utl.c:align_pointer Unexecuted instantiation: pool.c:align_pointer Unexecuted instantiation: curve25519_64_adx.c:align_pointer Unexecuted instantiation: cpu_intel.c:align_pointer |
341 | | |
342 | | |
343 | | // Constant-time utility functions. |
344 | | // |
345 | | // The following methods return a bitmask of all ones (0xff...f) for true and 0 |
346 | | // for false. This is useful for choosing a value based on the result of a |
347 | | // conditional in constant time. For example, |
348 | | // |
349 | | // if (a < b) { |
350 | | // c = a; |
351 | | // } else { |
352 | | // c = b; |
353 | | // } |
354 | | // |
355 | | // can be written as |
356 | | // |
357 | | // crypto_word_t lt = constant_time_lt_w(a, b); |
358 | | // c = constant_time_select_w(lt, a, b); |
359 | | |
360 | | // crypto_word_t is the type that most constant-time functions use. Ideally we |
361 | | // would like it to be |size_t|, but NaCl builds in 64-bit mode with 32-bit |
362 | | // pointers, which means that |size_t| can be 32 bits when |BN_ULONG| is 64 |
363 | | // bits. Since we want to be able to do constant-time operations on a |
364 | | // |BN_ULONG|, |crypto_word_t| is defined as an unsigned value with the native |
365 | | // word length. |
366 | | #if defined(OPENSSL_64_BIT) |
367 | | typedef uint64_t crypto_word_t; |
368 | | #elif defined(OPENSSL_32_BIT) |
369 | | typedef uint32_t crypto_word_t; |
370 | | #else |
371 | | #error "Must define either OPENSSL_32_BIT or OPENSSL_64_BIT" |
372 | | #endif |
373 | | |
374 | 0 | #define CONSTTIME_TRUE_W ~((crypto_word_t)0) |
375 | 18 | #define CONSTTIME_FALSE_W ((crypto_word_t)0) |
376 | | #define CONSTTIME_TRUE_8 ((uint8_t)0xff) |
377 | | #define CONSTTIME_FALSE_8 ((uint8_t)0) |
378 | | |
379 | | // value_barrier_w returns |a|, but prevents GCC and Clang from reasoning about |
380 | | // the returned value. This is used to mitigate compilers undoing constant-time |
381 | | // code, until we can express our requirements directly in the language. |
382 | | // |
383 | | // Note the compiler is aware that |value_barrier_w| has no side effects and |
384 | | // always has the same output for a given input. This allows it to eliminate |
385 | | // dead code, move computations across loops, and vectorize. |
386 | 1.05G | static inline crypto_word_t value_barrier_w(crypto_word_t a) { |
387 | 1.05G | #if defined(__GNUC__) || defined(__clang__) |
388 | 1.05G | __asm__("" : "+r"(a) : /* no inputs */); |
389 | 1.05G | #endif |
390 | 1.05G | return a; |
391 | 1.05G | } Unexecuted instantiation: a_int.c:value_barrier_w Unexecuted instantiation: asn1_lib.c:value_barrier_w Line | Count | Source | 386 | 1.05G | static inline crypto_word_t value_barrier_w(crypto_word_t a) { | 387 | 1.05G | #if defined(__GNUC__) || defined(__clang__) | 388 | 1.05G | __asm__("" : "+r"(a) : /* no inputs */); | 389 | 1.05G | #endif | 390 | 1.05G | return a; | 391 | 1.05G | } |
Unexecuted instantiation: cbb.c:value_barrier_w Unexecuted instantiation: cbs.c:value_barrier_w Unexecuted instantiation: convert.c:value_barrier_w Unexecuted instantiation: crypto.c:value_barrier_w curve25519.c:value_barrier_w Line | Count | Source | 386 | 49.1k | static inline crypto_word_t value_barrier_w(crypto_word_t a) { | 387 | 49.1k | #if defined(__GNUC__) || defined(__clang__) | 388 | 49.1k | __asm__("" : "+r"(a) : /* no inputs */); | 389 | 49.1k | #endif | 390 | 49.1k | return a; | 391 | 49.1k | } |
Unexecuted instantiation: digest_extra.c:value_barrier_w Unexecuted instantiation: dsa.c:value_barrier_w Unexecuted instantiation: dsa_asn1.c:value_barrier_w Unexecuted instantiation: e_aesctrhmac.c:value_barrier_w Unexecuted instantiation: e_aesgcmsiv.c:value_barrier_w Unexecuted instantiation: e_chacha20poly1305.c:value_barrier_w Unexecuted instantiation: e_des.c:value_barrier_w Unexecuted instantiation: e_rc2.c:value_barrier_w Unexecuted instantiation: e_rc4.c:value_barrier_w Unexecuted instantiation: e_tls.c:value_barrier_w Unexecuted instantiation: ecdh_extra.c:value_barrier_w Unexecuted instantiation: ecdsa_asn1.c:value_barrier_w Unexecuted instantiation: engine.c:value_barrier_w Unexecuted instantiation: err.c:value_barrier_w Unexecuted instantiation: evp.c:value_barrier_w Unexecuted instantiation: evp_ctx.c:value_barrier_w Unexecuted instantiation: ex_data.c:value_barrier_w Unexecuted instantiation: file.c:value_barrier_w Unexecuted instantiation: fork_detect.c:value_barrier_w Unexecuted instantiation: forkunsafe.c:value_barrier_w Unexecuted instantiation: md4.c:value_barrier_w Unexecuted instantiation: md5.c:value_barrier_w Unexecuted instantiation: mem.c:value_barrier_w Unexecuted instantiation: obj.c:value_barrier_w Unexecuted instantiation: p_dh_asn1.c:value_barrier_w Unexecuted instantiation: p_dsa_asn1.c:value_barrier_w Unexecuted instantiation: p_ec.c:value_barrier_w Unexecuted instantiation: p_ed25519_asn1.c:value_barrier_w Unexecuted instantiation: p_hkdf.c:value_barrier_w Unexecuted instantiation: p_rsa.c:value_barrier_w Unexecuted instantiation: p_rsa_asn1.c:value_barrier_w Unexecuted instantiation: p_x25519_asn1.c:value_barrier_w Unexecuted instantiation: pbkdf.c:value_barrier_w Unexecuted instantiation: poly1305_vec.c:value_barrier_w Unexecuted instantiation: refcount.c:value_barrier_w Unexecuted instantiation: rsa_asn1.c:value_barrier_w Unexecuted instantiation: rsa_crypt.c:value_barrier_w Unexecuted instantiation: scrypt.c:value_barrier_w Unexecuted instantiation: siphash.c:value_barrier_w Unexecuted instantiation: stack.c:value_barrier_w Unexecuted instantiation: thread_pthread.c:value_barrier_w Unexecuted instantiation: tls_cbc.c:value_barrier_w Unexecuted instantiation: urandom.c:value_barrier_w Unexecuted instantiation: a_bitstr.c:value_barrier_w Unexecuted instantiation: a_object.c:value_barrier_w Unexecuted instantiation: asn1_compat.c:value_barrier_w Unexecuted instantiation: bio.c:value_barrier_w Unexecuted instantiation: blake2.c:value_barrier_w Unexecuted instantiation: chacha.c:value_barrier_w Unexecuted instantiation: des.c:value_barrier_w Unexecuted instantiation: ec_asn1.c:value_barrier_w Unexecuted instantiation: lhash.c:value_barrier_w Unexecuted instantiation: tasn_dec.c:value_barrier_w Unexecuted instantiation: tasn_enc.c:value_barrier_w Unexecuted instantiation: tasn_new.c:value_barrier_w Unexecuted instantiation: tasn_utl.c:value_barrier_w Unexecuted instantiation: pool.c:value_barrier_w Unexecuted instantiation: curve25519_64_adx.c:value_barrier_w Unexecuted instantiation: cpu_intel.c:value_barrier_w |
392 | | |
393 | | // value_barrier_u32 behaves like |value_barrier_w| but takes a |uint32_t|. |
394 | 1.30G | static inline uint32_t value_barrier_u32(uint32_t a) { |
395 | 1.30G | #if defined(__GNUC__) || defined(__clang__) |
396 | 1.30G | __asm__("" : "+r"(a) : /* no inputs */); |
397 | 1.30G | #endif |
398 | 1.30G | return a; |
399 | 1.30G | } Unexecuted instantiation: a_int.c:value_barrier_u32 Unexecuted instantiation: asn1_lib.c:value_barrier_u32 Line | Count | Source | 394 | 1.30G | static inline uint32_t value_barrier_u32(uint32_t a) { | 395 | 1.30G | #if defined(__GNUC__) || defined(__clang__) | 396 | 1.30G | __asm__("" : "+r"(a) : /* no inputs */); | 397 | 1.30G | #endif | 398 | 1.30G | return a; | 399 | 1.30G | } |
Unexecuted instantiation: cbb.c:value_barrier_u32 Unexecuted instantiation: cbs.c:value_barrier_u32 Unexecuted instantiation: convert.c:value_barrier_u32 Unexecuted instantiation: crypto.c:value_barrier_u32 curve25519.c:value_barrier_u32 Line | Count | Source | 394 | 19.4k | static inline uint32_t value_barrier_u32(uint32_t a) { | 395 | 19.4k | #if defined(__GNUC__) || defined(__clang__) | 396 | 19.4k | __asm__("" : "+r"(a) : /* no inputs */); | 397 | 19.4k | #endif | 398 | 19.4k | return a; | 399 | 19.4k | } |
Unexecuted instantiation: digest_extra.c:value_barrier_u32 Unexecuted instantiation: dsa.c:value_barrier_u32 Unexecuted instantiation: dsa_asn1.c:value_barrier_u32 Unexecuted instantiation: e_aesctrhmac.c:value_barrier_u32 Unexecuted instantiation: e_aesgcmsiv.c:value_barrier_u32 Unexecuted instantiation: e_chacha20poly1305.c:value_barrier_u32 Unexecuted instantiation: e_des.c:value_barrier_u32 Unexecuted instantiation: e_rc2.c:value_barrier_u32 Unexecuted instantiation: e_rc4.c:value_barrier_u32 Unexecuted instantiation: e_tls.c:value_barrier_u32 Unexecuted instantiation: ecdh_extra.c:value_barrier_u32 Unexecuted instantiation: ecdsa_asn1.c:value_barrier_u32 Unexecuted instantiation: engine.c:value_barrier_u32 Unexecuted instantiation: err.c:value_barrier_u32 Unexecuted instantiation: evp.c:value_barrier_u32 Unexecuted instantiation: evp_ctx.c:value_barrier_u32 Unexecuted instantiation: ex_data.c:value_barrier_u32 Unexecuted instantiation: file.c:value_barrier_u32 Unexecuted instantiation: fork_detect.c:value_barrier_u32 Unexecuted instantiation: forkunsafe.c:value_barrier_u32 Unexecuted instantiation: md4.c:value_barrier_u32 Unexecuted instantiation: md5.c:value_barrier_u32 Unexecuted instantiation: mem.c:value_barrier_u32 Unexecuted instantiation: obj.c:value_barrier_u32 Unexecuted instantiation: p_dh_asn1.c:value_barrier_u32 Unexecuted instantiation: p_dsa_asn1.c:value_barrier_u32 Unexecuted instantiation: p_ec.c:value_barrier_u32 Unexecuted instantiation: p_ed25519_asn1.c:value_barrier_u32 Unexecuted instantiation: p_hkdf.c:value_barrier_u32 Unexecuted instantiation: p_rsa.c:value_barrier_u32 Unexecuted instantiation: p_rsa_asn1.c:value_barrier_u32 Unexecuted instantiation: p_x25519_asn1.c:value_barrier_u32 Unexecuted instantiation: pbkdf.c:value_barrier_u32 Unexecuted instantiation: poly1305_vec.c:value_barrier_u32 Unexecuted instantiation: refcount.c:value_barrier_u32 Unexecuted instantiation: rsa_asn1.c:value_barrier_u32 Unexecuted instantiation: rsa_crypt.c:value_barrier_u32 Unexecuted instantiation: scrypt.c:value_barrier_u32 Unexecuted instantiation: siphash.c:value_barrier_u32 Unexecuted instantiation: stack.c:value_barrier_u32 Unexecuted instantiation: thread_pthread.c:value_barrier_u32 Unexecuted instantiation: tls_cbc.c:value_barrier_u32 Unexecuted instantiation: urandom.c:value_barrier_u32 Unexecuted instantiation: a_bitstr.c:value_barrier_u32 Unexecuted instantiation: a_object.c:value_barrier_u32 Unexecuted instantiation: asn1_compat.c:value_barrier_u32 Unexecuted instantiation: bio.c:value_barrier_u32 Unexecuted instantiation: blake2.c:value_barrier_u32 Unexecuted instantiation: chacha.c:value_barrier_u32 Unexecuted instantiation: des.c:value_barrier_u32 Unexecuted instantiation: ec_asn1.c:value_barrier_u32 Unexecuted instantiation: lhash.c:value_barrier_u32 Unexecuted instantiation: tasn_dec.c:value_barrier_u32 Unexecuted instantiation: tasn_enc.c:value_barrier_u32 Unexecuted instantiation: tasn_new.c:value_barrier_u32 Unexecuted instantiation: tasn_utl.c:value_barrier_u32 Unexecuted instantiation: pool.c:value_barrier_u32 Unexecuted instantiation: curve25519_64_adx.c:value_barrier_u32 Unexecuted instantiation: cpu_intel.c:value_barrier_u32 |
400 | | |
401 | | // value_barrier_u64 behaves like |value_barrier_w| but takes a |uint64_t|. |
402 | 0 | static inline uint64_t value_barrier_u64(uint64_t a) { |
403 | 0 | #if defined(__GNUC__) || defined(__clang__) |
404 | 0 | __asm__("" : "+r"(a) : /* no inputs */); |
405 | 0 | #endif |
406 | 0 | return a; |
407 | 0 | } Unexecuted instantiation: a_int.c:value_barrier_u64 Unexecuted instantiation: asn1_lib.c:value_barrier_u64 Unexecuted instantiation: bcm.c:value_barrier_u64 Unexecuted instantiation: cbb.c:value_barrier_u64 Unexecuted instantiation: cbs.c:value_barrier_u64 Unexecuted instantiation: convert.c:value_barrier_u64 Unexecuted instantiation: crypto.c:value_barrier_u64 Unexecuted instantiation: curve25519.c:value_barrier_u64 Unexecuted instantiation: digest_extra.c:value_barrier_u64 Unexecuted instantiation: dsa.c:value_barrier_u64 Unexecuted instantiation: dsa_asn1.c:value_barrier_u64 Unexecuted instantiation: e_aesctrhmac.c:value_barrier_u64 Unexecuted instantiation: e_aesgcmsiv.c:value_barrier_u64 Unexecuted instantiation: e_chacha20poly1305.c:value_barrier_u64 Unexecuted instantiation: e_des.c:value_barrier_u64 Unexecuted instantiation: e_rc2.c:value_barrier_u64 Unexecuted instantiation: e_rc4.c:value_barrier_u64 Unexecuted instantiation: e_tls.c:value_barrier_u64 Unexecuted instantiation: ecdh_extra.c:value_barrier_u64 Unexecuted instantiation: ecdsa_asn1.c:value_barrier_u64 Unexecuted instantiation: engine.c:value_barrier_u64 Unexecuted instantiation: err.c:value_barrier_u64 Unexecuted instantiation: evp.c:value_barrier_u64 Unexecuted instantiation: evp_ctx.c:value_barrier_u64 Unexecuted instantiation: ex_data.c:value_barrier_u64 Unexecuted instantiation: file.c:value_barrier_u64 Unexecuted instantiation: fork_detect.c:value_barrier_u64 Unexecuted instantiation: forkunsafe.c:value_barrier_u64 Unexecuted instantiation: md4.c:value_barrier_u64 Unexecuted instantiation: md5.c:value_barrier_u64 Unexecuted instantiation: mem.c:value_barrier_u64 Unexecuted instantiation: obj.c:value_barrier_u64 Unexecuted instantiation: p_dh_asn1.c:value_barrier_u64 Unexecuted instantiation: p_dsa_asn1.c:value_barrier_u64 Unexecuted instantiation: p_ec.c:value_barrier_u64 Unexecuted instantiation: p_ed25519_asn1.c:value_barrier_u64 Unexecuted instantiation: p_hkdf.c:value_barrier_u64 Unexecuted instantiation: p_rsa.c:value_barrier_u64 Unexecuted instantiation: p_rsa_asn1.c:value_barrier_u64 Unexecuted instantiation: p_x25519_asn1.c:value_barrier_u64 Unexecuted instantiation: pbkdf.c:value_barrier_u64 Unexecuted instantiation: poly1305_vec.c:value_barrier_u64 Unexecuted instantiation: refcount.c:value_barrier_u64 Unexecuted instantiation: rsa_asn1.c:value_barrier_u64 Unexecuted instantiation: rsa_crypt.c:value_barrier_u64 Unexecuted instantiation: scrypt.c:value_barrier_u64 Unexecuted instantiation: siphash.c:value_barrier_u64 Unexecuted instantiation: stack.c:value_barrier_u64 Unexecuted instantiation: thread_pthread.c:value_barrier_u64 Unexecuted instantiation: tls_cbc.c:value_barrier_u64 Unexecuted instantiation: urandom.c:value_barrier_u64 Unexecuted instantiation: a_bitstr.c:value_barrier_u64 Unexecuted instantiation: a_object.c:value_barrier_u64 Unexecuted instantiation: asn1_compat.c:value_barrier_u64 Unexecuted instantiation: bio.c:value_barrier_u64 Unexecuted instantiation: blake2.c:value_barrier_u64 Unexecuted instantiation: chacha.c:value_barrier_u64 Unexecuted instantiation: des.c:value_barrier_u64 Unexecuted instantiation: ec_asn1.c:value_barrier_u64 Unexecuted instantiation: lhash.c:value_barrier_u64 Unexecuted instantiation: tasn_dec.c:value_barrier_u64 Unexecuted instantiation: tasn_enc.c:value_barrier_u64 Unexecuted instantiation: tasn_new.c:value_barrier_u64 Unexecuted instantiation: tasn_utl.c:value_barrier_u64 Unexecuted instantiation: pool.c:value_barrier_u64 Unexecuted instantiation: curve25519_64_adx.c:value_barrier_u64 Unexecuted instantiation: cpu_intel.c:value_barrier_u64 |
408 | | |
409 | | // |value_barrier_u8| could be defined as above, but compilers other than |
410 | | // clang seem to still materialize 0x00..00MM instead of reusing 0x??..??MM. |
411 | | |
412 | | // constant_time_msb_w returns the given value with the MSB copied to all the |
413 | | // other bits. |
414 | 109M | static inline crypto_word_t constant_time_msb_w(crypto_word_t a) { |
415 | 109M | return 0u - (a >> (sizeof(a) * 8 - 1)); |
416 | 109M | } Unexecuted instantiation: a_int.c:constant_time_msb_w Unexecuted instantiation: asn1_lib.c:constant_time_msb_w bcm.c:constant_time_msb_w Line | Count | Source | 414 | 109M | static inline crypto_word_t constant_time_msb_w(crypto_word_t a) { | 415 | 109M | return 0u - (a >> (sizeof(a) * 8 - 1)); | 416 | 109M | } |
Unexecuted instantiation: cbb.c:constant_time_msb_w Unexecuted instantiation: cbs.c:constant_time_msb_w Unexecuted instantiation: convert.c:constant_time_msb_w Unexecuted instantiation: crypto.c:constant_time_msb_w curve25519.c:constant_time_msb_w Line | Count | Source | 414 | 704 | static inline crypto_word_t constant_time_msb_w(crypto_word_t a) { | 415 | 704 | return 0u - (a >> (sizeof(a) * 8 - 1)); | 416 | 704 | } |
Unexecuted instantiation: digest_extra.c:constant_time_msb_w Unexecuted instantiation: dsa.c:constant_time_msb_w Unexecuted instantiation: dsa_asn1.c:constant_time_msb_w Unexecuted instantiation: e_aesctrhmac.c:constant_time_msb_w Unexecuted instantiation: e_aesgcmsiv.c:constant_time_msb_w Unexecuted instantiation: e_chacha20poly1305.c:constant_time_msb_w Unexecuted instantiation: e_des.c:constant_time_msb_w Unexecuted instantiation: e_rc2.c:constant_time_msb_w Unexecuted instantiation: e_rc4.c:constant_time_msb_w Unexecuted instantiation: e_tls.c:constant_time_msb_w Unexecuted instantiation: ecdh_extra.c:constant_time_msb_w Unexecuted instantiation: ecdsa_asn1.c:constant_time_msb_w Unexecuted instantiation: engine.c:constant_time_msb_w Unexecuted instantiation: err.c:constant_time_msb_w Unexecuted instantiation: evp.c:constant_time_msb_w Unexecuted instantiation: evp_ctx.c:constant_time_msb_w Unexecuted instantiation: ex_data.c:constant_time_msb_w Unexecuted instantiation: file.c:constant_time_msb_w Unexecuted instantiation: fork_detect.c:constant_time_msb_w Unexecuted instantiation: forkunsafe.c:constant_time_msb_w Unexecuted instantiation: md4.c:constant_time_msb_w Unexecuted instantiation: md5.c:constant_time_msb_w Unexecuted instantiation: mem.c:constant_time_msb_w Unexecuted instantiation: obj.c:constant_time_msb_w Unexecuted instantiation: p_dh_asn1.c:constant_time_msb_w Unexecuted instantiation: p_dsa_asn1.c:constant_time_msb_w Unexecuted instantiation: p_ec.c:constant_time_msb_w Unexecuted instantiation: p_ed25519_asn1.c:constant_time_msb_w Unexecuted instantiation: p_hkdf.c:constant_time_msb_w Unexecuted instantiation: p_rsa.c:constant_time_msb_w Unexecuted instantiation: p_rsa_asn1.c:constant_time_msb_w Unexecuted instantiation: p_x25519_asn1.c:constant_time_msb_w Unexecuted instantiation: pbkdf.c:constant_time_msb_w Unexecuted instantiation: poly1305_vec.c:constant_time_msb_w Unexecuted instantiation: refcount.c:constant_time_msb_w Unexecuted instantiation: rsa_asn1.c:constant_time_msb_w Unexecuted instantiation: rsa_crypt.c:constant_time_msb_w Unexecuted instantiation: scrypt.c:constant_time_msb_w Unexecuted instantiation: siphash.c:constant_time_msb_w Unexecuted instantiation: stack.c:constant_time_msb_w Unexecuted instantiation: thread_pthread.c:constant_time_msb_w Unexecuted instantiation: tls_cbc.c:constant_time_msb_w Unexecuted instantiation: urandom.c:constant_time_msb_w Unexecuted instantiation: a_bitstr.c:constant_time_msb_w Unexecuted instantiation: a_object.c:constant_time_msb_w Unexecuted instantiation: asn1_compat.c:constant_time_msb_w Unexecuted instantiation: bio.c:constant_time_msb_w Unexecuted instantiation: blake2.c:constant_time_msb_w Unexecuted instantiation: chacha.c:constant_time_msb_w Unexecuted instantiation: des.c:constant_time_msb_w Unexecuted instantiation: ec_asn1.c:constant_time_msb_w Unexecuted instantiation: lhash.c:constant_time_msb_w Unexecuted instantiation: tasn_dec.c:constant_time_msb_w Unexecuted instantiation: tasn_enc.c:constant_time_msb_w Unexecuted instantiation: tasn_new.c:constant_time_msb_w Unexecuted instantiation: tasn_utl.c:constant_time_msb_w Unexecuted instantiation: pool.c:constant_time_msb_w Unexecuted instantiation: curve25519_64_adx.c:constant_time_msb_w Unexecuted instantiation: cpu_intel.c:constant_time_msb_w |
417 | | |
418 | | // constant_time_lt_w returns 0xff..f if a < b and 0 otherwise. |
419 | | static inline crypto_word_t constant_time_lt_w(crypto_word_t a, |
420 | 48.2M | crypto_word_t b) { |
421 | | // Consider the two cases of the problem: |
422 | | // msb(a) == msb(b): a < b iff the MSB of a - b is set. |
423 | | // msb(a) != msb(b): a < b iff the MSB of b is set. |
424 | | // |
425 | | // If msb(a) == msb(b) then the following evaluates as: |
426 | | // msb(a^((a^b)|((a-b)^a))) == |
427 | | // msb(a^((a-b) ^ a)) == (because msb(a^b) == 0) |
428 | | // msb(a^a^(a-b)) == (rearranging) |
429 | | // msb(a-b) (because ∀x. x^x == 0) |
430 | | // |
431 | | // Else, if msb(a) != msb(b) then the following evaluates as: |
432 | | // msb(a^((a^b)|((a-b)^a))) == |
433 | | // msb(a^(𝟙 | ((a-b)^a))) == (because msb(a^b) == 1 and 𝟙 |
434 | | // represents a value s.t. msb(𝟙) = 1) |
435 | | // msb(a^𝟙) == (because ORing with 1 results in 1) |
436 | | // msb(b) |
437 | | // |
438 | | // |
439 | | // Here is an SMT-LIB verification of this formula: |
440 | | // |
441 | | // (define-fun lt ((a (_ BitVec 32)) (b (_ BitVec 32))) (_ BitVec 32) |
442 | | // (bvxor a (bvor (bvxor a b) (bvxor (bvsub a b) a))) |
443 | | // ) |
444 | | // |
445 | | // (declare-fun a () (_ BitVec 32)) |
446 | | // (declare-fun b () (_ BitVec 32)) |
447 | | // |
448 | | // (assert (not (= (= #x00000001 (bvlshr (lt a b) #x0000001f)) (bvult a b)))) |
449 | | // (check-sat) |
450 | | // (get-model) |
451 | 48.2M | return constant_time_msb_w(a^((a^b)|((a-b)^a))); |
452 | 48.2M | } Unexecuted instantiation: a_int.c:constant_time_lt_w Unexecuted instantiation: asn1_lib.c:constant_time_lt_w Line | Count | Source | 420 | 48.2M | crypto_word_t b) { | 421 | | // Consider the two cases of the problem: | 422 | | // msb(a) == msb(b): a < b iff the MSB of a - b is set. | 423 | | // msb(a) != msb(b): a < b iff the MSB of b is set. | 424 | | // | 425 | | // If msb(a) == msb(b) then the following evaluates as: | 426 | | // msb(a^((a^b)|((a-b)^a))) == | 427 | | // msb(a^((a-b) ^ a)) == (because msb(a^b) == 0) | 428 | | // msb(a^a^(a-b)) == (rearranging) | 429 | | // msb(a-b) (because ∀x. x^x == 0) | 430 | | // | 431 | | // Else, if msb(a) != msb(b) then the following evaluates as: | 432 | | // msb(a^((a^b)|((a-b)^a))) == | 433 | | // msb(a^(𝟙 | ((a-b)^a))) == (because msb(a^b) == 1 and 𝟙 | 434 | | // represents a value s.t. msb(𝟙) = 1) | 435 | | // msb(a^𝟙) == (because ORing with 1 results in 1) | 436 | | // msb(b) | 437 | | // | 438 | | // | 439 | | // Here is an SMT-LIB verification of this formula: | 440 | | // | 441 | | // (define-fun lt ((a (_ BitVec 32)) (b (_ BitVec 32))) (_ BitVec 32) | 442 | | // (bvxor a (bvor (bvxor a b) (bvxor (bvsub a b) a))) | 443 | | // ) | 444 | | // | 445 | | // (declare-fun a () (_ BitVec 32)) | 446 | | // (declare-fun b () (_ BitVec 32)) | 447 | | // | 448 | | // (assert (not (= (= #x00000001 (bvlshr (lt a b) #x0000001f)) (bvult a b)))) | 449 | | // (check-sat) | 450 | | // (get-model) | 451 | 48.2M | return constant_time_msb_w(a^((a^b)|((a-b)^a))); | 452 | 48.2M | } |
Unexecuted instantiation: cbb.c:constant_time_lt_w Unexecuted instantiation: cbs.c:constant_time_lt_w Unexecuted instantiation: convert.c:constant_time_lt_w Unexecuted instantiation: crypto.c:constant_time_lt_w Unexecuted instantiation: curve25519.c:constant_time_lt_w Unexecuted instantiation: digest_extra.c:constant_time_lt_w Unexecuted instantiation: dsa.c:constant_time_lt_w Unexecuted instantiation: dsa_asn1.c:constant_time_lt_w Unexecuted instantiation: e_aesctrhmac.c:constant_time_lt_w Unexecuted instantiation: e_aesgcmsiv.c:constant_time_lt_w Unexecuted instantiation: e_chacha20poly1305.c:constant_time_lt_w Unexecuted instantiation: e_des.c:constant_time_lt_w Unexecuted instantiation: e_rc2.c:constant_time_lt_w Unexecuted instantiation: e_rc4.c:constant_time_lt_w Unexecuted instantiation: e_tls.c:constant_time_lt_w Unexecuted instantiation: ecdh_extra.c:constant_time_lt_w Unexecuted instantiation: ecdsa_asn1.c:constant_time_lt_w Unexecuted instantiation: engine.c:constant_time_lt_w Unexecuted instantiation: err.c:constant_time_lt_w Unexecuted instantiation: evp.c:constant_time_lt_w Unexecuted instantiation: evp_ctx.c:constant_time_lt_w Unexecuted instantiation: ex_data.c:constant_time_lt_w Unexecuted instantiation: file.c:constant_time_lt_w Unexecuted instantiation: fork_detect.c:constant_time_lt_w Unexecuted instantiation: forkunsafe.c:constant_time_lt_w Unexecuted instantiation: md4.c:constant_time_lt_w Unexecuted instantiation: md5.c:constant_time_lt_w Unexecuted instantiation: mem.c:constant_time_lt_w Unexecuted instantiation: obj.c:constant_time_lt_w Unexecuted instantiation: p_dh_asn1.c:constant_time_lt_w Unexecuted instantiation: p_dsa_asn1.c:constant_time_lt_w Unexecuted instantiation: p_ec.c:constant_time_lt_w Unexecuted instantiation: p_ed25519_asn1.c:constant_time_lt_w Unexecuted instantiation: p_hkdf.c:constant_time_lt_w Unexecuted instantiation: p_rsa.c:constant_time_lt_w Unexecuted instantiation: p_rsa_asn1.c:constant_time_lt_w Unexecuted instantiation: p_x25519_asn1.c:constant_time_lt_w Unexecuted instantiation: pbkdf.c:constant_time_lt_w Unexecuted instantiation: poly1305_vec.c:constant_time_lt_w Unexecuted instantiation: refcount.c:constant_time_lt_w Unexecuted instantiation: rsa_asn1.c:constant_time_lt_w Unexecuted instantiation: rsa_crypt.c:constant_time_lt_w Unexecuted instantiation: scrypt.c:constant_time_lt_w Unexecuted instantiation: siphash.c:constant_time_lt_w Unexecuted instantiation: stack.c:constant_time_lt_w Unexecuted instantiation: thread_pthread.c:constant_time_lt_w Unexecuted instantiation: tls_cbc.c:constant_time_lt_w Unexecuted instantiation: urandom.c:constant_time_lt_w Unexecuted instantiation: a_bitstr.c:constant_time_lt_w Unexecuted instantiation: a_object.c:constant_time_lt_w Unexecuted instantiation: asn1_compat.c:constant_time_lt_w Unexecuted instantiation: bio.c:constant_time_lt_w Unexecuted instantiation: blake2.c:constant_time_lt_w Unexecuted instantiation: chacha.c:constant_time_lt_w Unexecuted instantiation: des.c:constant_time_lt_w Unexecuted instantiation: ec_asn1.c:constant_time_lt_w Unexecuted instantiation: lhash.c:constant_time_lt_w Unexecuted instantiation: tasn_dec.c:constant_time_lt_w Unexecuted instantiation: tasn_enc.c:constant_time_lt_w Unexecuted instantiation: tasn_new.c:constant_time_lt_w Unexecuted instantiation: tasn_utl.c:constant_time_lt_w Unexecuted instantiation: pool.c:constant_time_lt_w Unexecuted instantiation: curve25519_64_adx.c:constant_time_lt_w Unexecuted instantiation: cpu_intel.c:constant_time_lt_w |
453 | | |
454 | | // constant_time_lt_8 acts like |constant_time_lt_w| but returns an 8-bit |
455 | | // mask. |
456 | 0 | static inline uint8_t constant_time_lt_8(crypto_word_t a, crypto_word_t b) { |
457 | 0 | return (uint8_t)(constant_time_lt_w(a, b)); |
458 | 0 | } Unexecuted instantiation: a_int.c:constant_time_lt_8 Unexecuted instantiation: asn1_lib.c:constant_time_lt_8 Unexecuted instantiation: bcm.c:constant_time_lt_8 Unexecuted instantiation: cbb.c:constant_time_lt_8 Unexecuted instantiation: cbs.c:constant_time_lt_8 Unexecuted instantiation: convert.c:constant_time_lt_8 Unexecuted instantiation: crypto.c:constant_time_lt_8 Unexecuted instantiation: curve25519.c:constant_time_lt_8 Unexecuted instantiation: digest_extra.c:constant_time_lt_8 Unexecuted instantiation: dsa.c:constant_time_lt_8 Unexecuted instantiation: dsa_asn1.c:constant_time_lt_8 Unexecuted instantiation: e_aesctrhmac.c:constant_time_lt_8 Unexecuted instantiation: e_aesgcmsiv.c:constant_time_lt_8 Unexecuted instantiation: e_chacha20poly1305.c:constant_time_lt_8 Unexecuted instantiation: e_des.c:constant_time_lt_8 Unexecuted instantiation: e_rc2.c:constant_time_lt_8 Unexecuted instantiation: e_rc4.c:constant_time_lt_8 Unexecuted instantiation: e_tls.c:constant_time_lt_8 Unexecuted instantiation: ecdh_extra.c:constant_time_lt_8 Unexecuted instantiation: ecdsa_asn1.c:constant_time_lt_8 Unexecuted instantiation: engine.c:constant_time_lt_8 Unexecuted instantiation: err.c:constant_time_lt_8 Unexecuted instantiation: evp.c:constant_time_lt_8 Unexecuted instantiation: evp_ctx.c:constant_time_lt_8 Unexecuted instantiation: ex_data.c:constant_time_lt_8 Unexecuted instantiation: file.c:constant_time_lt_8 Unexecuted instantiation: fork_detect.c:constant_time_lt_8 Unexecuted instantiation: forkunsafe.c:constant_time_lt_8 Unexecuted instantiation: md4.c:constant_time_lt_8 Unexecuted instantiation: md5.c:constant_time_lt_8 Unexecuted instantiation: mem.c:constant_time_lt_8 Unexecuted instantiation: obj.c:constant_time_lt_8 Unexecuted instantiation: p_dh_asn1.c:constant_time_lt_8 Unexecuted instantiation: p_dsa_asn1.c:constant_time_lt_8 Unexecuted instantiation: p_ec.c:constant_time_lt_8 Unexecuted instantiation: p_ed25519_asn1.c:constant_time_lt_8 Unexecuted instantiation: p_hkdf.c:constant_time_lt_8 Unexecuted instantiation: p_rsa.c:constant_time_lt_8 Unexecuted instantiation: p_rsa_asn1.c:constant_time_lt_8 Unexecuted instantiation: p_x25519_asn1.c:constant_time_lt_8 Unexecuted instantiation: pbkdf.c:constant_time_lt_8 Unexecuted instantiation: poly1305_vec.c:constant_time_lt_8 Unexecuted instantiation: refcount.c:constant_time_lt_8 Unexecuted instantiation: rsa_asn1.c:constant_time_lt_8 Unexecuted instantiation: rsa_crypt.c:constant_time_lt_8 Unexecuted instantiation: scrypt.c:constant_time_lt_8 Unexecuted instantiation: siphash.c:constant_time_lt_8 Unexecuted instantiation: stack.c:constant_time_lt_8 Unexecuted instantiation: thread_pthread.c:constant_time_lt_8 Unexecuted instantiation: tls_cbc.c:constant_time_lt_8 Unexecuted instantiation: urandom.c:constant_time_lt_8 Unexecuted instantiation: a_bitstr.c:constant_time_lt_8 Unexecuted instantiation: a_object.c:constant_time_lt_8 Unexecuted instantiation: asn1_compat.c:constant_time_lt_8 Unexecuted instantiation: bio.c:constant_time_lt_8 Unexecuted instantiation: blake2.c:constant_time_lt_8 Unexecuted instantiation: chacha.c:constant_time_lt_8 Unexecuted instantiation: des.c:constant_time_lt_8 Unexecuted instantiation: ec_asn1.c:constant_time_lt_8 Unexecuted instantiation: lhash.c:constant_time_lt_8 Unexecuted instantiation: tasn_dec.c:constant_time_lt_8 Unexecuted instantiation: tasn_enc.c:constant_time_lt_8 Unexecuted instantiation: tasn_new.c:constant_time_lt_8 Unexecuted instantiation: tasn_utl.c:constant_time_lt_8 Unexecuted instantiation: pool.c:constant_time_lt_8 Unexecuted instantiation: curve25519_64_adx.c:constant_time_lt_8 Unexecuted instantiation: cpu_intel.c:constant_time_lt_8 |
459 | | |
460 | | // constant_time_ge_w returns 0xff..f if a >= b and 0 otherwise. |
461 | | static inline crypto_word_t constant_time_ge_w(crypto_word_t a, |
462 | 0 | crypto_word_t b) { |
463 | 0 | return ~constant_time_lt_w(a, b); |
464 | 0 | } Unexecuted instantiation: a_int.c:constant_time_ge_w Unexecuted instantiation: asn1_lib.c:constant_time_ge_w Unexecuted instantiation: bcm.c:constant_time_ge_w Unexecuted instantiation: cbb.c:constant_time_ge_w Unexecuted instantiation: cbs.c:constant_time_ge_w Unexecuted instantiation: convert.c:constant_time_ge_w Unexecuted instantiation: crypto.c:constant_time_ge_w Unexecuted instantiation: curve25519.c:constant_time_ge_w Unexecuted instantiation: digest_extra.c:constant_time_ge_w Unexecuted instantiation: dsa.c:constant_time_ge_w Unexecuted instantiation: dsa_asn1.c:constant_time_ge_w Unexecuted instantiation: e_aesctrhmac.c:constant_time_ge_w Unexecuted instantiation: e_aesgcmsiv.c:constant_time_ge_w Unexecuted instantiation: e_chacha20poly1305.c:constant_time_ge_w Unexecuted instantiation: e_des.c:constant_time_ge_w Unexecuted instantiation: e_rc2.c:constant_time_ge_w Unexecuted instantiation: e_rc4.c:constant_time_ge_w Unexecuted instantiation: e_tls.c:constant_time_ge_w Unexecuted instantiation: ecdh_extra.c:constant_time_ge_w Unexecuted instantiation: ecdsa_asn1.c:constant_time_ge_w Unexecuted instantiation: engine.c:constant_time_ge_w Unexecuted instantiation: err.c:constant_time_ge_w Unexecuted instantiation: evp.c:constant_time_ge_w Unexecuted instantiation: evp_ctx.c:constant_time_ge_w Unexecuted instantiation: ex_data.c:constant_time_ge_w Unexecuted instantiation: file.c:constant_time_ge_w Unexecuted instantiation: fork_detect.c:constant_time_ge_w Unexecuted instantiation: forkunsafe.c:constant_time_ge_w Unexecuted instantiation: md4.c:constant_time_ge_w Unexecuted instantiation: md5.c:constant_time_ge_w Unexecuted instantiation: mem.c:constant_time_ge_w Unexecuted instantiation: obj.c:constant_time_ge_w Unexecuted instantiation: p_dh_asn1.c:constant_time_ge_w Unexecuted instantiation: p_dsa_asn1.c:constant_time_ge_w Unexecuted instantiation: p_ec.c:constant_time_ge_w Unexecuted instantiation: p_ed25519_asn1.c:constant_time_ge_w Unexecuted instantiation: p_hkdf.c:constant_time_ge_w Unexecuted instantiation: p_rsa.c:constant_time_ge_w Unexecuted instantiation: p_rsa_asn1.c:constant_time_ge_w Unexecuted instantiation: p_x25519_asn1.c:constant_time_ge_w Unexecuted instantiation: pbkdf.c:constant_time_ge_w Unexecuted instantiation: poly1305_vec.c:constant_time_ge_w Unexecuted instantiation: refcount.c:constant_time_ge_w Unexecuted instantiation: rsa_asn1.c:constant_time_ge_w Unexecuted instantiation: rsa_crypt.c:constant_time_ge_w Unexecuted instantiation: scrypt.c:constant_time_ge_w Unexecuted instantiation: siphash.c:constant_time_ge_w Unexecuted instantiation: stack.c:constant_time_ge_w Unexecuted instantiation: thread_pthread.c:constant_time_ge_w Unexecuted instantiation: tls_cbc.c:constant_time_ge_w Unexecuted instantiation: urandom.c:constant_time_ge_w Unexecuted instantiation: a_bitstr.c:constant_time_ge_w Unexecuted instantiation: a_object.c:constant_time_ge_w Unexecuted instantiation: asn1_compat.c:constant_time_ge_w Unexecuted instantiation: bio.c:constant_time_ge_w Unexecuted instantiation: blake2.c:constant_time_ge_w Unexecuted instantiation: chacha.c:constant_time_ge_w Unexecuted instantiation: des.c:constant_time_ge_w Unexecuted instantiation: ec_asn1.c:constant_time_ge_w Unexecuted instantiation: lhash.c:constant_time_ge_w Unexecuted instantiation: tasn_dec.c:constant_time_ge_w Unexecuted instantiation: tasn_enc.c:constant_time_ge_w Unexecuted instantiation: tasn_new.c:constant_time_ge_w Unexecuted instantiation: tasn_utl.c:constant_time_ge_w Unexecuted instantiation: pool.c:constant_time_ge_w Unexecuted instantiation: curve25519_64_adx.c:constant_time_ge_w Unexecuted instantiation: cpu_intel.c:constant_time_ge_w |
465 | | |
466 | | // constant_time_ge_8 acts like |constant_time_ge_w| but returns an 8-bit |
467 | | // mask. |
468 | 0 | static inline uint8_t constant_time_ge_8(crypto_word_t a, crypto_word_t b) { |
469 | 0 | return (uint8_t)(constant_time_ge_w(a, b)); |
470 | 0 | } Unexecuted instantiation: a_int.c:constant_time_ge_8 Unexecuted instantiation: asn1_lib.c:constant_time_ge_8 Unexecuted instantiation: bcm.c:constant_time_ge_8 Unexecuted instantiation: cbb.c:constant_time_ge_8 Unexecuted instantiation: cbs.c:constant_time_ge_8 Unexecuted instantiation: convert.c:constant_time_ge_8 Unexecuted instantiation: crypto.c:constant_time_ge_8 Unexecuted instantiation: curve25519.c:constant_time_ge_8 Unexecuted instantiation: digest_extra.c:constant_time_ge_8 Unexecuted instantiation: dsa.c:constant_time_ge_8 Unexecuted instantiation: dsa_asn1.c:constant_time_ge_8 Unexecuted instantiation: e_aesctrhmac.c:constant_time_ge_8 Unexecuted instantiation: e_aesgcmsiv.c:constant_time_ge_8 Unexecuted instantiation: e_chacha20poly1305.c:constant_time_ge_8 Unexecuted instantiation: e_des.c:constant_time_ge_8 Unexecuted instantiation: e_rc2.c:constant_time_ge_8 Unexecuted instantiation: e_rc4.c:constant_time_ge_8 Unexecuted instantiation: e_tls.c:constant_time_ge_8 Unexecuted instantiation: ecdh_extra.c:constant_time_ge_8 Unexecuted instantiation: ecdsa_asn1.c:constant_time_ge_8 Unexecuted instantiation: engine.c:constant_time_ge_8 Unexecuted instantiation: err.c:constant_time_ge_8 Unexecuted instantiation: evp.c:constant_time_ge_8 Unexecuted instantiation: evp_ctx.c:constant_time_ge_8 Unexecuted instantiation: ex_data.c:constant_time_ge_8 Unexecuted instantiation: file.c:constant_time_ge_8 Unexecuted instantiation: fork_detect.c:constant_time_ge_8 Unexecuted instantiation: forkunsafe.c:constant_time_ge_8 Unexecuted instantiation: md4.c:constant_time_ge_8 Unexecuted instantiation: md5.c:constant_time_ge_8 Unexecuted instantiation: mem.c:constant_time_ge_8 Unexecuted instantiation: obj.c:constant_time_ge_8 Unexecuted instantiation: p_dh_asn1.c:constant_time_ge_8 Unexecuted instantiation: p_dsa_asn1.c:constant_time_ge_8 Unexecuted instantiation: p_ec.c:constant_time_ge_8 Unexecuted instantiation: p_ed25519_asn1.c:constant_time_ge_8 Unexecuted instantiation: p_hkdf.c:constant_time_ge_8 Unexecuted instantiation: p_rsa.c:constant_time_ge_8 Unexecuted instantiation: p_rsa_asn1.c:constant_time_ge_8 Unexecuted instantiation: p_x25519_asn1.c:constant_time_ge_8 Unexecuted instantiation: pbkdf.c:constant_time_ge_8 Unexecuted instantiation: poly1305_vec.c:constant_time_ge_8 Unexecuted instantiation: refcount.c:constant_time_ge_8 Unexecuted instantiation: rsa_asn1.c:constant_time_ge_8 Unexecuted instantiation: rsa_crypt.c:constant_time_ge_8 Unexecuted instantiation: scrypt.c:constant_time_ge_8 Unexecuted instantiation: siphash.c:constant_time_ge_8 Unexecuted instantiation: stack.c:constant_time_ge_8 Unexecuted instantiation: thread_pthread.c:constant_time_ge_8 Unexecuted instantiation: tls_cbc.c:constant_time_ge_8 Unexecuted instantiation: urandom.c:constant_time_ge_8 Unexecuted instantiation: a_bitstr.c:constant_time_ge_8 Unexecuted instantiation: a_object.c:constant_time_ge_8 Unexecuted instantiation: asn1_compat.c:constant_time_ge_8 Unexecuted instantiation: bio.c:constant_time_ge_8 Unexecuted instantiation: blake2.c:constant_time_ge_8 Unexecuted instantiation: chacha.c:constant_time_ge_8 Unexecuted instantiation: des.c:constant_time_ge_8 Unexecuted instantiation: ec_asn1.c:constant_time_ge_8 Unexecuted instantiation: lhash.c:constant_time_ge_8 Unexecuted instantiation: tasn_dec.c:constant_time_ge_8 Unexecuted instantiation: tasn_enc.c:constant_time_ge_8 Unexecuted instantiation: tasn_new.c:constant_time_ge_8 Unexecuted instantiation: tasn_utl.c:constant_time_ge_8 Unexecuted instantiation: pool.c:constant_time_ge_8 Unexecuted instantiation: curve25519_64_adx.c:constant_time_ge_8 Unexecuted instantiation: cpu_intel.c:constant_time_ge_8 |
471 | | |
472 | | // constant_time_is_zero returns 0xff..f if a == 0 and 0 otherwise. |
473 | 60.7M | static inline crypto_word_t constant_time_is_zero_w(crypto_word_t a) { |
474 | | // Here is an SMT-LIB verification of this formula: |
475 | | // |
476 | | // (define-fun is_zero ((a (_ BitVec 32))) (_ BitVec 32) |
477 | | // (bvand (bvnot a) (bvsub a #x00000001)) |
478 | | // ) |
479 | | // |
480 | | // (declare-fun a () (_ BitVec 32)) |
481 | | // |
482 | | // (assert (not (= (= #x00000001 (bvlshr (is_zero a) #x0000001f)) (= a #x00000000)))) |
483 | | // (check-sat) |
484 | | // (get-model) |
485 | 60.7M | return constant_time_msb_w(~a & (a - 1)); |
486 | 60.7M | } Unexecuted instantiation: a_int.c:constant_time_is_zero_w Unexecuted instantiation: asn1_lib.c:constant_time_is_zero_w bcm.c:constant_time_is_zero_w Line | Count | Source | 473 | 60.7M | static inline crypto_word_t constant_time_is_zero_w(crypto_word_t a) { | 474 | | // Here is an SMT-LIB verification of this formula: | 475 | | // | 476 | | // (define-fun is_zero ((a (_ BitVec 32))) (_ BitVec 32) | 477 | | // (bvand (bvnot a) (bvsub a #x00000001)) | 478 | | // ) | 479 | | // | 480 | | // (declare-fun a () (_ BitVec 32)) | 481 | | // | 482 | | // (assert (not (= (= #x00000001 (bvlshr (is_zero a) #x0000001f)) (= a #x00000000)))) | 483 | | // (check-sat) | 484 | | // (get-model) | 485 | 60.7M | return constant_time_msb_w(~a & (a - 1)); | 486 | 60.7M | } |
Unexecuted instantiation: cbb.c:constant_time_is_zero_w Unexecuted instantiation: cbs.c:constant_time_is_zero_w Unexecuted instantiation: convert.c:constant_time_is_zero_w Unexecuted instantiation: crypto.c:constant_time_is_zero_w curve25519.c:constant_time_is_zero_w Line | Count | Source | 473 | 640 | static inline crypto_word_t constant_time_is_zero_w(crypto_word_t a) { | 474 | | // Here is an SMT-LIB verification of this formula: | 475 | | // | 476 | | // (define-fun is_zero ((a (_ BitVec 32))) (_ BitVec 32) | 477 | | // (bvand (bvnot a) (bvsub a #x00000001)) | 478 | | // ) | 479 | | // | 480 | | // (declare-fun a () (_ BitVec 32)) | 481 | | // | 482 | | // (assert (not (= (= #x00000001 (bvlshr (is_zero a) #x0000001f)) (= a #x00000000)))) | 483 | | // (check-sat) | 484 | | // (get-model) | 485 | 640 | return constant_time_msb_w(~a & (a - 1)); | 486 | 640 | } |
Unexecuted instantiation: digest_extra.c:constant_time_is_zero_w Unexecuted instantiation: dsa.c:constant_time_is_zero_w Unexecuted instantiation: dsa_asn1.c:constant_time_is_zero_w Unexecuted instantiation: e_aesctrhmac.c:constant_time_is_zero_w Unexecuted instantiation: e_aesgcmsiv.c:constant_time_is_zero_w Unexecuted instantiation: e_chacha20poly1305.c:constant_time_is_zero_w Unexecuted instantiation: e_des.c:constant_time_is_zero_w Unexecuted instantiation: e_rc2.c:constant_time_is_zero_w Unexecuted instantiation: e_rc4.c:constant_time_is_zero_w Unexecuted instantiation: e_tls.c:constant_time_is_zero_w Unexecuted instantiation: ecdh_extra.c:constant_time_is_zero_w Unexecuted instantiation: ecdsa_asn1.c:constant_time_is_zero_w Unexecuted instantiation: engine.c:constant_time_is_zero_w Unexecuted instantiation: err.c:constant_time_is_zero_w Unexecuted instantiation: evp.c:constant_time_is_zero_w Unexecuted instantiation: evp_ctx.c:constant_time_is_zero_w Unexecuted instantiation: ex_data.c:constant_time_is_zero_w Unexecuted instantiation: file.c:constant_time_is_zero_w Unexecuted instantiation: fork_detect.c:constant_time_is_zero_w Unexecuted instantiation: forkunsafe.c:constant_time_is_zero_w Unexecuted instantiation: md4.c:constant_time_is_zero_w Unexecuted instantiation: md5.c:constant_time_is_zero_w Unexecuted instantiation: mem.c:constant_time_is_zero_w Unexecuted instantiation: obj.c:constant_time_is_zero_w Unexecuted instantiation: p_dh_asn1.c:constant_time_is_zero_w Unexecuted instantiation: p_dsa_asn1.c:constant_time_is_zero_w Unexecuted instantiation: p_ec.c:constant_time_is_zero_w Unexecuted instantiation: p_ed25519_asn1.c:constant_time_is_zero_w Unexecuted instantiation: p_hkdf.c:constant_time_is_zero_w Unexecuted instantiation: p_rsa.c:constant_time_is_zero_w Unexecuted instantiation: p_rsa_asn1.c:constant_time_is_zero_w Unexecuted instantiation: p_x25519_asn1.c:constant_time_is_zero_w Unexecuted instantiation: pbkdf.c:constant_time_is_zero_w Unexecuted instantiation: poly1305_vec.c:constant_time_is_zero_w Unexecuted instantiation: refcount.c:constant_time_is_zero_w Unexecuted instantiation: rsa_asn1.c:constant_time_is_zero_w Unexecuted instantiation: rsa_crypt.c:constant_time_is_zero_w Unexecuted instantiation: scrypt.c:constant_time_is_zero_w Unexecuted instantiation: siphash.c:constant_time_is_zero_w Unexecuted instantiation: stack.c:constant_time_is_zero_w Unexecuted instantiation: thread_pthread.c:constant_time_is_zero_w Unexecuted instantiation: tls_cbc.c:constant_time_is_zero_w Unexecuted instantiation: urandom.c:constant_time_is_zero_w Unexecuted instantiation: a_bitstr.c:constant_time_is_zero_w Unexecuted instantiation: a_object.c:constant_time_is_zero_w Unexecuted instantiation: asn1_compat.c:constant_time_is_zero_w Unexecuted instantiation: bio.c:constant_time_is_zero_w Unexecuted instantiation: blake2.c:constant_time_is_zero_w Unexecuted instantiation: chacha.c:constant_time_is_zero_w Unexecuted instantiation: des.c:constant_time_is_zero_w Unexecuted instantiation: ec_asn1.c:constant_time_is_zero_w Unexecuted instantiation: lhash.c:constant_time_is_zero_w Unexecuted instantiation: tasn_dec.c:constant_time_is_zero_w Unexecuted instantiation: tasn_enc.c:constant_time_is_zero_w Unexecuted instantiation: tasn_new.c:constant_time_is_zero_w Unexecuted instantiation: tasn_utl.c:constant_time_is_zero_w Unexecuted instantiation: pool.c:constant_time_is_zero_w Unexecuted instantiation: curve25519_64_adx.c:constant_time_is_zero_w Unexecuted instantiation: cpu_intel.c:constant_time_is_zero_w |
487 | | |
488 | | // constant_time_is_zero_8 acts like |constant_time_is_zero_w| but returns an |
489 | | // 8-bit mask. |
490 | 0 | static inline uint8_t constant_time_is_zero_8(crypto_word_t a) { |
491 | 0 | return (uint8_t)(constant_time_is_zero_w(a)); |
492 | 0 | } Unexecuted instantiation: a_int.c:constant_time_is_zero_8 Unexecuted instantiation: asn1_lib.c:constant_time_is_zero_8 Unexecuted instantiation: bcm.c:constant_time_is_zero_8 Unexecuted instantiation: cbb.c:constant_time_is_zero_8 Unexecuted instantiation: cbs.c:constant_time_is_zero_8 Unexecuted instantiation: convert.c:constant_time_is_zero_8 Unexecuted instantiation: crypto.c:constant_time_is_zero_8 Unexecuted instantiation: curve25519.c:constant_time_is_zero_8 Unexecuted instantiation: digest_extra.c:constant_time_is_zero_8 Unexecuted instantiation: dsa.c:constant_time_is_zero_8 Unexecuted instantiation: dsa_asn1.c:constant_time_is_zero_8 Unexecuted instantiation: e_aesctrhmac.c:constant_time_is_zero_8 Unexecuted instantiation: e_aesgcmsiv.c:constant_time_is_zero_8 Unexecuted instantiation: e_chacha20poly1305.c:constant_time_is_zero_8 Unexecuted instantiation: e_des.c:constant_time_is_zero_8 Unexecuted instantiation: e_rc2.c:constant_time_is_zero_8 Unexecuted instantiation: e_rc4.c:constant_time_is_zero_8 Unexecuted instantiation: e_tls.c:constant_time_is_zero_8 Unexecuted instantiation: ecdh_extra.c:constant_time_is_zero_8 Unexecuted instantiation: ecdsa_asn1.c:constant_time_is_zero_8 Unexecuted instantiation: engine.c:constant_time_is_zero_8 Unexecuted instantiation: err.c:constant_time_is_zero_8 Unexecuted instantiation: evp.c:constant_time_is_zero_8 Unexecuted instantiation: evp_ctx.c:constant_time_is_zero_8 Unexecuted instantiation: ex_data.c:constant_time_is_zero_8 Unexecuted instantiation: file.c:constant_time_is_zero_8 Unexecuted instantiation: fork_detect.c:constant_time_is_zero_8 Unexecuted instantiation: forkunsafe.c:constant_time_is_zero_8 Unexecuted instantiation: md4.c:constant_time_is_zero_8 Unexecuted instantiation: md5.c:constant_time_is_zero_8 Unexecuted instantiation: mem.c:constant_time_is_zero_8 Unexecuted instantiation: obj.c:constant_time_is_zero_8 Unexecuted instantiation: p_dh_asn1.c:constant_time_is_zero_8 Unexecuted instantiation: p_dsa_asn1.c:constant_time_is_zero_8 Unexecuted instantiation: p_ec.c:constant_time_is_zero_8 Unexecuted instantiation: p_ed25519_asn1.c:constant_time_is_zero_8 Unexecuted instantiation: p_hkdf.c:constant_time_is_zero_8 Unexecuted instantiation: p_rsa.c:constant_time_is_zero_8 Unexecuted instantiation: p_rsa_asn1.c:constant_time_is_zero_8 Unexecuted instantiation: p_x25519_asn1.c:constant_time_is_zero_8 Unexecuted instantiation: pbkdf.c:constant_time_is_zero_8 Unexecuted instantiation: poly1305_vec.c:constant_time_is_zero_8 Unexecuted instantiation: refcount.c:constant_time_is_zero_8 Unexecuted instantiation: rsa_asn1.c:constant_time_is_zero_8 Unexecuted instantiation: rsa_crypt.c:constant_time_is_zero_8 Unexecuted instantiation: scrypt.c:constant_time_is_zero_8 Unexecuted instantiation: siphash.c:constant_time_is_zero_8 Unexecuted instantiation: stack.c:constant_time_is_zero_8 Unexecuted instantiation: thread_pthread.c:constant_time_is_zero_8 Unexecuted instantiation: tls_cbc.c:constant_time_is_zero_8 Unexecuted instantiation: urandom.c:constant_time_is_zero_8 Unexecuted instantiation: a_bitstr.c:constant_time_is_zero_8 Unexecuted instantiation: a_object.c:constant_time_is_zero_8 Unexecuted instantiation: asn1_compat.c:constant_time_is_zero_8 Unexecuted instantiation: bio.c:constant_time_is_zero_8 Unexecuted instantiation: blake2.c:constant_time_is_zero_8 Unexecuted instantiation: chacha.c:constant_time_is_zero_8 Unexecuted instantiation: des.c:constant_time_is_zero_8 Unexecuted instantiation: ec_asn1.c:constant_time_is_zero_8 Unexecuted instantiation: lhash.c:constant_time_is_zero_8 Unexecuted instantiation: tasn_dec.c:constant_time_is_zero_8 Unexecuted instantiation: tasn_enc.c:constant_time_is_zero_8 Unexecuted instantiation: tasn_new.c:constant_time_is_zero_8 Unexecuted instantiation: tasn_utl.c:constant_time_is_zero_8 Unexecuted instantiation: pool.c:constant_time_is_zero_8 Unexecuted instantiation: curve25519_64_adx.c:constant_time_is_zero_8 Unexecuted instantiation: cpu_intel.c:constant_time_is_zero_8 |
493 | | |
494 | | // constant_time_eq_w returns 0xff..f if a == b and 0 otherwise. |
495 | | static inline crypto_word_t constant_time_eq_w(crypto_word_t a, |
496 | 60.2M | crypto_word_t b) { |
497 | 60.2M | return constant_time_is_zero_w(a ^ b); |
498 | 60.2M | } Unexecuted instantiation: a_int.c:constant_time_eq_w Unexecuted instantiation: asn1_lib.c:constant_time_eq_w Line | Count | Source | 496 | 60.2M | crypto_word_t b) { | 497 | 60.2M | return constant_time_is_zero_w(a ^ b); | 498 | 60.2M | } |
Unexecuted instantiation: cbb.c:constant_time_eq_w Unexecuted instantiation: cbs.c:constant_time_eq_w Unexecuted instantiation: convert.c:constant_time_eq_w Unexecuted instantiation: crypto.c:constant_time_eq_w curve25519.c:constant_time_eq_w Line | Count | Source | 496 | 512 | crypto_word_t b) { | 497 | 512 | return constant_time_is_zero_w(a ^ b); | 498 | 512 | } |
Unexecuted instantiation: digest_extra.c:constant_time_eq_w Unexecuted instantiation: dsa.c:constant_time_eq_w Unexecuted instantiation: dsa_asn1.c:constant_time_eq_w Unexecuted instantiation: e_aesctrhmac.c:constant_time_eq_w Unexecuted instantiation: e_aesgcmsiv.c:constant_time_eq_w Unexecuted instantiation: e_chacha20poly1305.c:constant_time_eq_w Unexecuted instantiation: e_des.c:constant_time_eq_w Unexecuted instantiation: e_rc2.c:constant_time_eq_w Unexecuted instantiation: e_rc4.c:constant_time_eq_w Unexecuted instantiation: e_tls.c:constant_time_eq_w Unexecuted instantiation: ecdh_extra.c:constant_time_eq_w Unexecuted instantiation: ecdsa_asn1.c:constant_time_eq_w Unexecuted instantiation: engine.c:constant_time_eq_w Unexecuted instantiation: err.c:constant_time_eq_w Unexecuted instantiation: evp.c:constant_time_eq_w Unexecuted instantiation: evp_ctx.c:constant_time_eq_w Unexecuted instantiation: ex_data.c:constant_time_eq_w Unexecuted instantiation: file.c:constant_time_eq_w Unexecuted instantiation: fork_detect.c:constant_time_eq_w Unexecuted instantiation: forkunsafe.c:constant_time_eq_w Unexecuted instantiation: md4.c:constant_time_eq_w Unexecuted instantiation: md5.c:constant_time_eq_w Unexecuted instantiation: mem.c:constant_time_eq_w Unexecuted instantiation: obj.c:constant_time_eq_w Unexecuted instantiation: p_dh_asn1.c:constant_time_eq_w Unexecuted instantiation: p_dsa_asn1.c:constant_time_eq_w Unexecuted instantiation: p_ec.c:constant_time_eq_w Unexecuted instantiation: p_ed25519_asn1.c:constant_time_eq_w Unexecuted instantiation: p_hkdf.c:constant_time_eq_w Unexecuted instantiation: p_rsa.c:constant_time_eq_w Unexecuted instantiation: p_rsa_asn1.c:constant_time_eq_w Unexecuted instantiation: p_x25519_asn1.c:constant_time_eq_w Unexecuted instantiation: pbkdf.c:constant_time_eq_w Unexecuted instantiation: poly1305_vec.c:constant_time_eq_w Unexecuted instantiation: refcount.c:constant_time_eq_w Unexecuted instantiation: rsa_asn1.c:constant_time_eq_w Unexecuted instantiation: rsa_crypt.c:constant_time_eq_w Unexecuted instantiation: scrypt.c:constant_time_eq_w Unexecuted instantiation: siphash.c:constant_time_eq_w Unexecuted instantiation: stack.c:constant_time_eq_w Unexecuted instantiation: thread_pthread.c:constant_time_eq_w Unexecuted instantiation: tls_cbc.c:constant_time_eq_w Unexecuted instantiation: urandom.c:constant_time_eq_w Unexecuted instantiation: a_bitstr.c:constant_time_eq_w Unexecuted instantiation: a_object.c:constant_time_eq_w Unexecuted instantiation: asn1_compat.c:constant_time_eq_w Unexecuted instantiation: bio.c:constant_time_eq_w Unexecuted instantiation: blake2.c:constant_time_eq_w Unexecuted instantiation: chacha.c:constant_time_eq_w Unexecuted instantiation: des.c:constant_time_eq_w Unexecuted instantiation: ec_asn1.c:constant_time_eq_w Unexecuted instantiation: lhash.c:constant_time_eq_w Unexecuted instantiation: tasn_dec.c:constant_time_eq_w Unexecuted instantiation: tasn_enc.c:constant_time_eq_w Unexecuted instantiation: tasn_new.c:constant_time_eq_w Unexecuted instantiation: tasn_utl.c:constant_time_eq_w Unexecuted instantiation: pool.c:constant_time_eq_w Unexecuted instantiation: curve25519_64_adx.c:constant_time_eq_w Unexecuted instantiation: cpu_intel.c:constant_time_eq_w |
499 | | |
500 | | // constant_time_eq_8 acts like |constant_time_eq_w| but returns an 8-bit |
501 | | // mask. |
502 | 0 | static inline uint8_t constant_time_eq_8(crypto_word_t a, crypto_word_t b) { |
503 | 0 | return (uint8_t)(constant_time_eq_w(a, b)); |
504 | 0 | } Unexecuted instantiation: a_int.c:constant_time_eq_8 Unexecuted instantiation: asn1_lib.c:constant_time_eq_8 Unexecuted instantiation: bcm.c:constant_time_eq_8 Unexecuted instantiation: cbb.c:constant_time_eq_8 Unexecuted instantiation: cbs.c:constant_time_eq_8 Unexecuted instantiation: convert.c:constant_time_eq_8 Unexecuted instantiation: crypto.c:constant_time_eq_8 Unexecuted instantiation: curve25519.c:constant_time_eq_8 Unexecuted instantiation: digest_extra.c:constant_time_eq_8 Unexecuted instantiation: dsa.c:constant_time_eq_8 Unexecuted instantiation: dsa_asn1.c:constant_time_eq_8 Unexecuted instantiation: e_aesctrhmac.c:constant_time_eq_8 Unexecuted instantiation: e_aesgcmsiv.c:constant_time_eq_8 Unexecuted instantiation: e_chacha20poly1305.c:constant_time_eq_8 Unexecuted instantiation: e_des.c:constant_time_eq_8 Unexecuted instantiation: e_rc2.c:constant_time_eq_8 Unexecuted instantiation: e_rc4.c:constant_time_eq_8 Unexecuted instantiation: e_tls.c:constant_time_eq_8 Unexecuted instantiation: ecdh_extra.c:constant_time_eq_8 Unexecuted instantiation: ecdsa_asn1.c:constant_time_eq_8 Unexecuted instantiation: engine.c:constant_time_eq_8 Unexecuted instantiation: err.c:constant_time_eq_8 Unexecuted instantiation: evp.c:constant_time_eq_8 Unexecuted instantiation: evp_ctx.c:constant_time_eq_8 Unexecuted instantiation: ex_data.c:constant_time_eq_8 Unexecuted instantiation: file.c:constant_time_eq_8 Unexecuted instantiation: fork_detect.c:constant_time_eq_8 Unexecuted instantiation: forkunsafe.c:constant_time_eq_8 Unexecuted instantiation: md4.c:constant_time_eq_8 Unexecuted instantiation: md5.c:constant_time_eq_8 Unexecuted instantiation: mem.c:constant_time_eq_8 Unexecuted instantiation: obj.c:constant_time_eq_8 Unexecuted instantiation: p_dh_asn1.c:constant_time_eq_8 Unexecuted instantiation: p_dsa_asn1.c:constant_time_eq_8 Unexecuted instantiation: p_ec.c:constant_time_eq_8 Unexecuted instantiation: p_ed25519_asn1.c:constant_time_eq_8 Unexecuted instantiation: p_hkdf.c:constant_time_eq_8 Unexecuted instantiation: p_rsa.c:constant_time_eq_8 Unexecuted instantiation: p_rsa_asn1.c:constant_time_eq_8 Unexecuted instantiation: p_x25519_asn1.c:constant_time_eq_8 Unexecuted instantiation: pbkdf.c:constant_time_eq_8 Unexecuted instantiation: poly1305_vec.c:constant_time_eq_8 Unexecuted instantiation: refcount.c:constant_time_eq_8 Unexecuted instantiation: rsa_asn1.c:constant_time_eq_8 Unexecuted instantiation: rsa_crypt.c:constant_time_eq_8 Unexecuted instantiation: scrypt.c:constant_time_eq_8 Unexecuted instantiation: siphash.c:constant_time_eq_8 Unexecuted instantiation: stack.c:constant_time_eq_8 Unexecuted instantiation: thread_pthread.c:constant_time_eq_8 Unexecuted instantiation: tls_cbc.c:constant_time_eq_8 Unexecuted instantiation: urandom.c:constant_time_eq_8 Unexecuted instantiation: a_bitstr.c:constant_time_eq_8 Unexecuted instantiation: a_object.c:constant_time_eq_8 Unexecuted instantiation: asn1_compat.c:constant_time_eq_8 Unexecuted instantiation: bio.c:constant_time_eq_8 Unexecuted instantiation: blake2.c:constant_time_eq_8 Unexecuted instantiation: chacha.c:constant_time_eq_8 Unexecuted instantiation: des.c:constant_time_eq_8 Unexecuted instantiation: ec_asn1.c:constant_time_eq_8 Unexecuted instantiation: lhash.c:constant_time_eq_8 Unexecuted instantiation: tasn_dec.c:constant_time_eq_8 Unexecuted instantiation: tasn_enc.c:constant_time_eq_8 Unexecuted instantiation: tasn_new.c:constant_time_eq_8 Unexecuted instantiation: tasn_utl.c:constant_time_eq_8 Unexecuted instantiation: pool.c:constant_time_eq_8 Unexecuted instantiation: curve25519_64_adx.c:constant_time_eq_8 Unexecuted instantiation: cpu_intel.c:constant_time_eq_8 |
505 | | |
506 | | // constant_time_eq_int acts like |constant_time_eq_w| but works on int |
507 | | // values. |
508 | 11.7M | static inline crypto_word_t constant_time_eq_int(int a, int b) { |
509 | 11.7M | return constant_time_eq_w((crypto_word_t)(a), (crypto_word_t)(b)); |
510 | 11.7M | } Unexecuted instantiation: a_int.c:constant_time_eq_int Unexecuted instantiation: asn1_lib.c:constant_time_eq_int bcm.c:constant_time_eq_int Line | Count | Source | 508 | 11.7M | static inline crypto_word_t constant_time_eq_int(int a, int b) { | 509 | 11.7M | return constant_time_eq_w((crypto_word_t)(a), (crypto_word_t)(b)); | 510 | 11.7M | } |
Unexecuted instantiation: cbb.c:constant_time_eq_int Unexecuted instantiation: cbs.c:constant_time_eq_int Unexecuted instantiation: convert.c:constant_time_eq_int Unexecuted instantiation: crypto.c:constant_time_eq_int Unexecuted instantiation: curve25519.c:constant_time_eq_int Unexecuted instantiation: digest_extra.c:constant_time_eq_int Unexecuted instantiation: dsa.c:constant_time_eq_int Unexecuted instantiation: dsa_asn1.c:constant_time_eq_int Unexecuted instantiation: e_aesctrhmac.c:constant_time_eq_int Unexecuted instantiation: e_aesgcmsiv.c:constant_time_eq_int Unexecuted instantiation: e_chacha20poly1305.c:constant_time_eq_int Unexecuted instantiation: e_des.c:constant_time_eq_int Unexecuted instantiation: e_rc2.c:constant_time_eq_int Unexecuted instantiation: e_rc4.c:constant_time_eq_int Unexecuted instantiation: e_tls.c:constant_time_eq_int Unexecuted instantiation: ecdh_extra.c:constant_time_eq_int Unexecuted instantiation: ecdsa_asn1.c:constant_time_eq_int Unexecuted instantiation: engine.c:constant_time_eq_int Unexecuted instantiation: err.c:constant_time_eq_int Unexecuted instantiation: evp.c:constant_time_eq_int Unexecuted instantiation: evp_ctx.c:constant_time_eq_int Unexecuted instantiation: ex_data.c:constant_time_eq_int Unexecuted instantiation: file.c:constant_time_eq_int Unexecuted instantiation: fork_detect.c:constant_time_eq_int Unexecuted instantiation: forkunsafe.c:constant_time_eq_int Unexecuted instantiation: md4.c:constant_time_eq_int Unexecuted instantiation: md5.c:constant_time_eq_int Unexecuted instantiation: mem.c:constant_time_eq_int Unexecuted instantiation: obj.c:constant_time_eq_int Unexecuted instantiation: p_dh_asn1.c:constant_time_eq_int Unexecuted instantiation: p_dsa_asn1.c:constant_time_eq_int Unexecuted instantiation: p_ec.c:constant_time_eq_int Unexecuted instantiation: p_ed25519_asn1.c:constant_time_eq_int Unexecuted instantiation: p_hkdf.c:constant_time_eq_int Unexecuted instantiation: p_rsa.c:constant_time_eq_int Unexecuted instantiation: p_rsa_asn1.c:constant_time_eq_int Unexecuted instantiation: p_x25519_asn1.c:constant_time_eq_int Unexecuted instantiation: pbkdf.c:constant_time_eq_int Unexecuted instantiation: poly1305_vec.c:constant_time_eq_int Unexecuted instantiation: refcount.c:constant_time_eq_int Unexecuted instantiation: rsa_asn1.c:constant_time_eq_int Unexecuted instantiation: rsa_crypt.c:constant_time_eq_int Unexecuted instantiation: scrypt.c:constant_time_eq_int Unexecuted instantiation: siphash.c:constant_time_eq_int Unexecuted instantiation: stack.c:constant_time_eq_int Unexecuted instantiation: thread_pthread.c:constant_time_eq_int Unexecuted instantiation: tls_cbc.c:constant_time_eq_int Unexecuted instantiation: urandom.c:constant_time_eq_int Unexecuted instantiation: a_bitstr.c:constant_time_eq_int Unexecuted instantiation: a_object.c:constant_time_eq_int Unexecuted instantiation: asn1_compat.c:constant_time_eq_int Unexecuted instantiation: bio.c:constant_time_eq_int Unexecuted instantiation: blake2.c:constant_time_eq_int Unexecuted instantiation: chacha.c:constant_time_eq_int Unexecuted instantiation: des.c:constant_time_eq_int Unexecuted instantiation: ec_asn1.c:constant_time_eq_int Unexecuted instantiation: lhash.c:constant_time_eq_int Unexecuted instantiation: tasn_dec.c:constant_time_eq_int Unexecuted instantiation: tasn_enc.c:constant_time_eq_int Unexecuted instantiation: tasn_new.c:constant_time_eq_int Unexecuted instantiation: tasn_utl.c:constant_time_eq_int Unexecuted instantiation: pool.c:constant_time_eq_int Unexecuted instantiation: curve25519_64_adx.c:constant_time_eq_int Unexecuted instantiation: cpu_intel.c:constant_time_eq_int |
511 | | |
512 | | // constant_time_eq_int_8 acts like |constant_time_eq_int| but returns an 8-bit |
513 | | // mask. |
514 | 0 | static inline uint8_t constant_time_eq_int_8(int a, int b) { |
515 | 0 | return constant_time_eq_8((crypto_word_t)(a), (crypto_word_t)(b)); |
516 | 0 | } Unexecuted instantiation: a_int.c:constant_time_eq_int_8 Unexecuted instantiation: asn1_lib.c:constant_time_eq_int_8 Unexecuted instantiation: bcm.c:constant_time_eq_int_8 Unexecuted instantiation: cbb.c:constant_time_eq_int_8 Unexecuted instantiation: cbs.c:constant_time_eq_int_8 Unexecuted instantiation: convert.c:constant_time_eq_int_8 Unexecuted instantiation: crypto.c:constant_time_eq_int_8 Unexecuted instantiation: curve25519.c:constant_time_eq_int_8 Unexecuted instantiation: digest_extra.c:constant_time_eq_int_8 Unexecuted instantiation: dsa.c:constant_time_eq_int_8 Unexecuted instantiation: dsa_asn1.c:constant_time_eq_int_8 Unexecuted instantiation: e_aesctrhmac.c:constant_time_eq_int_8 Unexecuted instantiation: e_aesgcmsiv.c:constant_time_eq_int_8 Unexecuted instantiation: e_chacha20poly1305.c:constant_time_eq_int_8 Unexecuted instantiation: e_des.c:constant_time_eq_int_8 Unexecuted instantiation: e_rc2.c:constant_time_eq_int_8 Unexecuted instantiation: e_rc4.c:constant_time_eq_int_8 Unexecuted instantiation: e_tls.c:constant_time_eq_int_8 Unexecuted instantiation: ecdh_extra.c:constant_time_eq_int_8 Unexecuted instantiation: ecdsa_asn1.c:constant_time_eq_int_8 Unexecuted instantiation: engine.c:constant_time_eq_int_8 Unexecuted instantiation: err.c:constant_time_eq_int_8 Unexecuted instantiation: evp.c:constant_time_eq_int_8 Unexecuted instantiation: evp_ctx.c:constant_time_eq_int_8 Unexecuted instantiation: ex_data.c:constant_time_eq_int_8 Unexecuted instantiation: file.c:constant_time_eq_int_8 Unexecuted instantiation: fork_detect.c:constant_time_eq_int_8 Unexecuted instantiation: forkunsafe.c:constant_time_eq_int_8 Unexecuted instantiation: md4.c:constant_time_eq_int_8 Unexecuted instantiation: md5.c:constant_time_eq_int_8 Unexecuted instantiation: mem.c:constant_time_eq_int_8 Unexecuted instantiation: obj.c:constant_time_eq_int_8 Unexecuted instantiation: p_dh_asn1.c:constant_time_eq_int_8 Unexecuted instantiation: p_dsa_asn1.c:constant_time_eq_int_8 Unexecuted instantiation: p_ec.c:constant_time_eq_int_8 Unexecuted instantiation: p_ed25519_asn1.c:constant_time_eq_int_8 Unexecuted instantiation: p_hkdf.c:constant_time_eq_int_8 Unexecuted instantiation: p_rsa.c:constant_time_eq_int_8 Unexecuted instantiation: p_rsa_asn1.c:constant_time_eq_int_8 Unexecuted instantiation: p_x25519_asn1.c:constant_time_eq_int_8 Unexecuted instantiation: pbkdf.c:constant_time_eq_int_8 Unexecuted instantiation: poly1305_vec.c:constant_time_eq_int_8 Unexecuted instantiation: refcount.c:constant_time_eq_int_8 Unexecuted instantiation: rsa_asn1.c:constant_time_eq_int_8 Unexecuted instantiation: rsa_crypt.c:constant_time_eq_int_8 Unexecuted instantiation: scrypt.c:constant_time_eq_int_8 Unexecuted instantiation: siphash.c:constant_time_eq_int_8 Unexecuted instantiation: stack.c:constant_time_eq_int_8 Unexecuted instantiation: thread_pthread.c:constant_time_eq_int_8 Unexecuted instantiation: tls_cbc.c:constant_time_eq_int_8 Unexecuted instantiation: urandom.c:constant_time_eq_int_8 Unexecuted instantiation: a_bitstr.c:constant_time_eq_int_8 Unexecuted instantiation: a_object.c:constant_time_eq_int_8 Unexecuted instantiation: asn1_compat.c:constant_time_eq_int_8 Unexecuted instantiation: bio.c:constant_time_eq_int_8 Unexecuted instantiation: blake2.c:constant_time_eq_int_8 Unexecuted instantiation: chacha.c:constant_time_eq_int_8 Unexecuted instantiation: des.c:constant_time_eq_int_8 Unexecuted instantiation: ec_asn1.c:constant_time_eq_int_8 Unexecuted instantiation: lhash.c:constant_time_eq_int_8 Unexecuted instantiation: tasn_dec.c:constant_time_eq_int_8 Unexecuted instantiation: tasn_enc.c:constant_time_eq_int_8 Unexecuted instantiation: tasn_new.c:constant_time_eq_int_8 Unexecuted instantiation: tasn_utl.c:constant_time_eq_int_8 Unexecuted instantiation: pool.c:constant_time_eq_int_8 Unexecuted instantiation: curve25519_64_adx.c:constant_time_eq_int_8 Unexecuted instantiation: cpu_intel.c:constant_time_eq_int_8 |
517 | | |
518 | | // constant_time_select_w returns (mask & a) | (~mask & b). When |mask| is all |
519 | | // 1s or all 0s (as returned by the methods above), the select methods return |
520 | | // either |a| (if |mask| is nonzero) or |b| (if |mask| is zero). |
521 | | static inline crypto_word_t constant_time_select_w(crypto_word_t mask, |
522 | | crypto_word_t a, |
523 | 1.04G | crypto_word_t b) { |
524 | | // Clang recognizes this pattern as a select. While it usually transforms it |
525 | | // to a cmov, it sometimes further transforms it into a branch, which we do |
526 | | // not want. |
527 | | // |
528 | | // Hiding the value of the mask from the compiler evades this transformation. |
529 | 1.04G | mask = value_barrier_w(mask); |
530 | 1.04G | return (mask & a) | (~mask & b); |
531 | 1.04G | } Unexecuted instantiation: a_int.c:constant_time_select_w Unexecuted instantiation: asn1_lib.c:constant_time_select_w bcm.c:constant_time_select_w Line | Count | Source | 523 | 1.04G | crypto_word_t b) { | 524 | | // Clang recognizes this pattern as a select. While it usually transforms it | 525 | | // to a cmov, it sometimes further transforms it into a branch, which we do | 526 | | // not want. | 527 | | // | 528 | | // Hiding the value of the mask from the compiler evades this transformation. | 529 | 1.04G | mask = value_barrier_w(mask); | 530 | 1.04G | return (mask & a) | (~mask & b); | 531 | 1.04G | } |
Unexecuted instantiation: cbb.c:constant_time_select_w Unexecuted instantiation: cbs.c:constant_time_select_w Unexecuted instantiation: convert.c:constant_time_select_w Unexecuted instantiation: crypto.c:constant_time_select_w Unexecuted instantiation: curve25519.c:constant_time_select_w Unexecuted instantiation: digest_extra.c:constant_time_select_w Unexecuted instantiation: dsa.c:constant_time_select_w Unexecuted instantiation: dsa_asn1.c:constant_time_select_w Unexecuted instantiation: e_aesctrhmac.c:constant_time_select_w Unexecuted instantiation: e_aesgcmsiv.c:constant_time_select_w Unexecuted instantiation: e_chacha20poly1305.c:constant_time_select_w Unexecuted instantiation: e_des.c:constant_time_select_w Unexecuted instantiation: e_rc2.c:constant_time_select_w Unexecuted instantiation: e_rc4.c:constant_time_select_w Unexecuted instantiation: e_tls.c:constant_time_select_w Unexecuted instantiation: ecdh_extra.c:constant_time_select_w Unexecuted instantiation: ecdsa_asn1.c:constant_time_select_w Unexecuted instantiation: engine.c:constant_time_select_w Unexecuted instantiation: err.c:constant_time_select_w Unexecuted instantiation: evp.c:constant_time_select_w Unexecuted instantiation: evp_ctx.c:constant_time_select_w Unexecuted instantiation: ex_data.c:constant_time_select_w Unexecuted instantiation: file.c:constant_time_select_w Unexecuted instantiation: fork_detect.c:constant_time_select_w Unexecuted instantiation: forkunsafe.c:constant_time_select_w Unexecuted instantiation: md4.c:constant_time_select_w Unexecuted instantiation: md5.c:constant_time_select_w Unexecuted instantiation: mem.c:constant_time_select_w Unexecuted instantiation: obj.c:constant_time_select_w Unexecuted instantiation: p_dh_asn1.c:constant_time_select_w Unexecuted instantiation: p_dsa_asn1.c:constant_time_select_w Unexecuted instantiation: p_ec.c:constant_time_select_w Unexecuted instantiation: p_ed25519_asn1.c:constant_time_select_w Unexecuted instantiation: p_hkdf.c:constant_time_select_w Unexecuted instantiation: p_rsa.c:constant_time_select_w Unexecuted instantiation: p_rsa_asn1.c:constant_time_select_w Unexecuted instantiation: p_x25519_asn1.c:constant_time_select_w Unexecuted instantiation: pbkdf.c:constant_time_select_w Unexecuted instantiation: poly1305_vec.c:constant_time_select_w Unexecuted instantiation: refcount.c:constant_time_select_w Unexecuted instantiation: rsa_asn1.c:constant_time_select_w Unexecuted instantiation: rsa_crypt.c:constant_time_select_w Unexecuted instantiation: scrypt.c:constant_time_select_w Unexecuted instantiation: siphash.c:constant_time_select_w Unexecuted instantiation: stack.c:constant_time_select_w Unexecuted instantiation: thread_pthread.c:constant_time_select_w Unexecuted instantiation: tls_cbc.c:constant_time_select_w Unexecuted instantiation: urandom.c:constant_time_select_w Unexecuted instantiation: a_bitstr.c:constant_time_select_w Unexecuted instantiation: a_object.c:constant_time_select_w Unexecuted instantiation: asn1_compat.c:constant_time_select_w Unexecuted instantiation: bio.c:constant_time_select_w Unexecuted instantiation: blake2.c:constant_time_select_w Unexecuted instantiation: chacha.c:constant_time_select_w Unexecuted instantiation: des.c:constant_time_select_w Unexecuted instantiation: ec_asn1.c:constant_time_select_w Unexecuted instantiation: lhash.c:constant_time_select_w Unexecuted instantiation: tasn_dec.c:constant_time_select_w Unexecuted instantiation: tasn_enc.c:constant_time_select_w Unexecuted instantiation: tasn_new.c:constant_time_select_w Unexecuted instantiation: tasn_utl.c:constant_time_select_w Unexecuted instantiation: pool.c:constant_time_select_w Unexecuted instantiation: curve25519_64_adx.c:constant_time_select_w Unexecuted instantiation: cpu_intel.c:constant_time_select_w |
532 | | |
533 | | // constant_time_select_8 acts like |constant_time_select| but operates on |
534 | | // 8-bit values. |
535 | | static inline uint8_t constant_time_select_8(crypto_word_t mask, uint8_t a, |
536 | 0 | uint8_t b) { |
537 | | // |mask| is a word instead of |uint8_t| to avoid materializing 0x000..0MM |
538 | | // Making both |mask| and its value barrier |uint8_t| would allow the compiler |
539 | | // to materialize 0x????..?MM instead, but only clang is that clever. |
540 | | // However, vectorization of bitwise operations seems to work better on |
541 | | // |uint8_t| than a mix of |uint64_t| and |uint8_t|, so |m| is cast to |
542 | | // |uint8_t| after the value barrier but before the bitwise operations. |
543 | 0 | uint8_t m = value_barrier_w(mask); |
544 | 0 | return (m & a) | (~m & b); |
545 | 0 | } Unexecuted instantiation: a_int.c:constant_time_select_8 Unexecuted instantiation: asn1_lib.c:constant_time_select_8 Unexecuted instantiation: bcm.c:constant_time_select_8 Unexecuted instantiation: cbb.c:constant_time_select_8 Unexecuted instantiation: cbs.c:constant_time_select_8 Unexecuted instantiation: convert.c:constant_time_select_8 Unexecuted instantiation: crypto.c:constant_time_select_8 Unexecuted instantiation: curve25519.c:constant_time_select_8 Unexecuted instantiation: digest_extra.c:constant_time_select_8 Unexecuted instantiation: dsa.c:constant_time_select_8 Unexecuted instantiation: dsa_asn1.c:constant_time_select_8 Unexecuted instantiation: e_aesctrhmac.c:constant_time_select_8 Unexecuted instantiation: e_aesgcmsiv.c:constant_time_select_8 Unexecuted instantiation: e_chacha20poly1305.c:constant_time_select_8 Unexecuted instantiation: e_des.c:constant_time_select_8 Unexecuted instantiation: e_rc2.c:constant_time_select_8 Unexecuted instantiation: e_rc4.c:constant_time_select_8 Unexecuted instantiation: e_tls.c:constant_time_select_8 Unexecuted instantiation: ecdh_extra.c:constant_time_select_8 Unexecuted instantiation: ecdsa_asn1.c:constant_time_select_8 Unexecuted instantiation: engine.c:constant_time_select_8 Unexecuted instantiation: err.c:constant_time_select_8 Unexecuted instantiation: evp.c:constant_time_select_8 Unexecuted instantiation: evp_ctx.c:constant_time_select_8 Unexecuted instantiation: ex_data.c:constant_time_select_8 Unexecuted instantiation: file.c:constant_time_select_8 Unexecuted instantiation: fork_detect.c:constant_time_select_8 Unexecuted instantiation: forkunsafe.c:constant_time_select_8 Unexecuted instantiation: md4.c:constant_time_select_8 Unexecuted instantiation: md5.c:constant_time_select_8 Unexecuted instantiation: mem.c:constant_time_select_8 Unexecuted instantiation: obj.c:constant_time_select_8 Unexecuted instantiation: p_dh_asn1.c:constant_time_select_8 Unexecuted instantiation: p_dsa_asn1.c:constant_time_select_8 Unexecuted instantiation: p_ec.c:constant_time_select_8 Unexecuted instantiation: p_ed25519_asn1.c:constant_time_select_8 Unexecuted instantiation: p_hkdf.c:constant_time_select_8 Unexecuted instantiation: p_rsa.c:constant_time_select_8 Unexecuted instantiation: p_rsa_asn1.c:constant_time_select_8 Unexecuted instantiation: p_x25519_asn1.c:constant_time_select_8 Unexecuted instantiation: pbkdf.c:constant_time_select_8 Unexecuted instantiation: poly1305_vec.c:constant_time_select_8 Unexecuted instantiation: refcount.c:constant_time_select_8 Unexecuted instantiation: rsa_asn1.c:constant_time_select_8 Unexecuted instantiation: rsa_crypt.c:constant_time_select_8 Unexecuted instantiation: scrypt.c:constant_time_select_8 Unexecuted instantiation: siphash.c:constant_time_select_8 Unexecuted instantiation: stack.c:constant_time_select_8 Unexecuted instantiation: thread_pthread.c:constant_time_select_8 Unexecuted instantiation: tls_cbc.c:constant_time_select_8 Unexecuted instantiation: urandom.c:constant_time_select_8 Unexecuted instantiation: a_bitstr.c:constant_time_select_8 Unexecuted instantiation: a_object.c:constant_time_select_8 Unexecuted instantiation: asn1_compat.c:constant_time_select_8 Unexecuted instantiation: bio.c:constant_time_select_8 Unexecuted instantiation: blake2.c:constant_time_select_8 Unexecuted instantiation: chacha.c:constant_time_select_8 Unexecuted instantiation: des.c:constant_time_select_8 Unexecuted instantiation: ec_asn1.c:constant_time_select_8 Unexecuted instantiation: lhash.c:constant_time_select_8 Unexecuted instantiation: tasn_dec.c:constant_time_select_8 Unexecuted instantiation: tasn_enc.c:constant_time_select_8 Unexecuted instantiation: tasn_new.c:constant_time_select_8 Unexecuted instantiation: tasn_utl.c:constant_time_select_8 Unexecuted instantiation: pool.c:constant_time_select_8 Unexecuted instantiation: curve25519_64_adx.c:constant_time_select_8 Unexecuted instantiation: cpu_intel.c:constant_time_select_8 |
546 | | |
547 | | // constant_time_select_int acts like |constant_time_select| but operates on |
548 | | // ints. |
549 | 97.0M | static inline int constant_time_select_int(crypto_word_t mask, int a, int b) { |
550 | 97.0M | return (int)(constant_time_select_w(mask, (crypto_word_t)(a), |
551 | 97.0M | (crypto_word_t)(b))); |
552 | 97.0M | } Unexecuted instantiation: a_int.c:constant_time_select_int Unexecuted instantiation: asn1_lib.c:constant_time_select_int bcm.c:constant_time_select_int Line | Count | Source | 549 | 97.0M | static inline int constant_time_select_int(crypto_word_t mask, int a, int b) { | 550 | 97.0M | return (int)(constant_time_select_w(mask, (crypto_word_t)(a), | 551 | 97.0M | (crypto_word_t)(b))); | 552 | 97.0M | } |
Unexecuted instantiation: cbb.c:constant_time_select_int Unexecuted instantiation: cbs.c:constant_time_select_int Unexecuted instantiation: convert.c:constant_time_select_int Unexecuted instantiation: crypto.c:constant_time_select_int Unexecuted instantiation: curve25519.c:constant_time_select_int Unexecuted instantiation: digest_extra.c:constant_time_select_int Unexecuted instantiation: dsa.c:constant_time_select_int Unexecuted instantiation: dsa_asn1.c:constant_time_select_int Unexecuted instantiation: e_aesctrhmac.c:constant_time_select_int Unexecuted instantiation: e_aesgcmsiv.c:constant_time_select_int Unexecuted instantiation: e_chacha20poly1305.c:constant_time_select_int Unexecuted instantiation: e_des.c:constant_time_select_int Unexecuted instantiation: e_rc2.c:constant_time_select_int Unexecuted instantiation: e_rc4.c:constant_time_select_int Unexecuted instantiation: e_tls.c:constant_time_select_int Unexecuted instantiation: ecdh_extra.c:constant_time_select_int Unexecuted instantiation: ecdsa_asn1.c:constant_time_select_int Unexecuted instantiation: engine.c:constant_time_select_int Unexecuted instantiation: err.c:constant_time_select_int Unexecuted instantiation: evp.c:constant_time_select_int Unexecuted instantiation: evp_ctx.c:constant_time_select_int Unexecuted instantiation: ex_data.c:constant_time_select_int Unexecuted instantiation: file.c:constant_time_select_int Unexecuted instantiation: fork_detect.c:constant_time_select_int Unexecuted instantiation: forkunsafe.c:constant_time_select_int Unexecuted instantiation: md4.c:constant_time_select_int Unexecuted instantiation: md5.c:constant_time_select_int Unexecuted instantiation: mem.c:constant_time_select_int Unexecuted instantiation: obj.c:constant_time_select_int Unexecuted instantiation: p_dh_asn1.c:constant_time_select_int Unexecuted instantiation: p_dsa_asn1.c:constant_time_select_int Unexecuted instantiation: p_ec.c:constant_time_select_int Unexecuted instantiation: p_ed25519_asn1.c:constant_time_select_int Unexecuted instantiation: p_hkdf.c:constant_time_select_int Unexecuted instantiation: p_rsa.c:constant_time_select_int Unexecuted instantiation: p_rsa_asn1.c:constant_time_select_int Unexecuted instantiation: p_x25519_asn1.c:constant_time_select_int Unexecuted instantiation: pbkdf.c:constant_time_select_int Unexecuted instantiation: poly1305_vec.c:constant_time_select_int Unexecuted instantiation: refcount.c:constant_time_select_int Unexecuted instantiation: rsa_asn1.c:constant_time_select_int Unexecuted instantiation: rsa_crypt.c:constant_time_select_int Unexecuted instantiation: scrypt.c:constant_time_select_int Unexecuted instantiation: siphash.c:constant_time_select_int Unexecuted instantiation: stack.c:constant_time_select_int Unexecuted instantiation: thread_pthread.c:constant_time_select_int Unexecuted instantiation: tls_cbc.c:constant_time_select_int Unexecuted instantiation: urandom.c:constant_time_select_int Unexecuted instantiation: a_bitstr.c:constant_time_select_int Unexecuted instantiation: a_object.c:constant_time_select_int Unexecuted instantiation: asn1_compat.c:constant_time_select_int Unexecuted instantiation: bio.c:constant_time_select_int Unexecuted instantiation: blake2.c:constant_time_select_int Unexecuted instantiation: chacha.c:constant_time_select_int Unexecuted instantiation: des.c:constant_time_select_int Unexecuted instantiation: ec_asn1.c:constant_time_select_int Unexecuted instantiation: lhash.c:constant_time_select_int Unexecuted instantiation: tasn_dec.c:constant_time_select_int Unexecuted instantiation: tasn_enc.c:constant_time_select_int Unexecuted instantiation: tasn_new.c:constant_time_select_int Unexecuted instantiation: tasn_utl.c:constant_time_select_int Unexecuted instantiation: pool.c:constant_time_select_int Unexecuted instantiation: curve25519_64_adx.c:constant_time_select_int Unexecuted instantiation: cpu_intel.c:constant_time_select_int |
553 | | |
554 | | // constant_time_conditional_memcpy copies |n| bytes from |src| to |dst| if |
555 | | // |mask| is 0xff..ff and does nothing if |mask| is 0. The |n|-byte memory |
556 | | // ranges at |dst| and |src| must not overlap, as when calling |memcpy|. |
557 | | static inline void constant_time_conditional_memcpy(void *dst, const void *src, |
558 | | const size_t n, |
559 | 0 | const crypto_word_t mask) { |
560 | 0 | assert(!buffers_alias(dst, n, src, n)); |
561 | 0 | uint8_t *out = (uint8_t *)dst; |
562 | 0 | const uint8_t *in = (const uint8_t *)src; |
563 | 0 | for (size_t i = 0; i < n; i++) { |
564 | 0 | out[i] = constant_time_select_8(mask, in[i], out[i]); |
565 | 0 | } |
566 | 0 | } Unexecuted instantiation: a_int.c:constant_time_conditional_memcpy Unexecuted instantiation: asn1_lib.c:constant_time_conditional_memcpy Unexecuted instantiation: bcm.c:constant_time_conditional_memcpy Unexecuted instantiation: cbb.c:constant_time_conditional_memcpy Unexecuted instantiation: cbs.c:constant_time_conditional_memcpy Unexecuted instantiation: convert.c:constant_time_conditional_memcpy Unexecuted instantiation: crypto.c:constant_time_conditional_memcpy Unexecuted instantiation: curve25519.c:constant_time_conditional_memcpy Unexecuted instantiation: digest_extra.c:constant_time_conditional_memcpy Unexecuted instantiation: dsa.c:constant_time_conditional_memcpy Unexecuted instantiation: dsa_asn1.c:constant_time_conditional_memcpy Unexecuted instantiation: e_aesctrhmac.c:constant_time_conditional_memcpy Unexecuted instantiation: e_aesgcmsiv.c:constant_time_conditional_memcpy Unexecuted instantiation: e_chacha20poly1305.c:constant_time_conditional_memcpy Unexecuted instantiation: e_des.c:constant_time_conditional_memcpy Unexecuted instantiation: e_rc2.c:constant_time_conditional_memcpy Unexecuted instantiation: e_rc4.c:constant_time_conditional_memcpy Unexecuted instantiation: e_tls.c:constant_time_conditional_memcpy Unexecuted instantiation: ecdh_extra.c:constant_time_conditional_memcpy Unexecuted instantiation: ecdsa_asn1.c:constant_time_conditional_memcpy Unexecuted instantiation: engine.c:constant_time_conditional_memcpy Unexecuted instantiation: err.c:constant_time_conditional_memcpy Unexecuted instantiation: evp.c:constant_time_conditional_memcpy Unexecuted instantiation: evp_ctx.c:constant_time_conditional_memcpy Unexecuted instantiation: ex_data.c:constant_time_conditional_memcpy Unexecuted instantiation: file.c:constant_time_conditional_memcpy Unexecuted instantiation: fork_detect.c:constant_time_conditional_memcpy Unexecuted instantiation: forkunsafe.c:constant_time_conditional_memcpy Unexecuted instantiation: md4.c:constant_time_conditional_memcpy Unexecuted instantiation: md5.c:constant_time_conditional_memcpy Unexecuted instantiation: mem.c:constant_time_conditional_memcpy Unexecuted instantiation: obj.c:constant_time_conditional_memcpy Unexecuted instantiation: p_dh_asn1.c:constant_time_conditional_memcpy Unexecuted instantiation: p_dsa_asn1.c:constant_time_conditional_memcpy Unexecuted instantiation: p_ec.c:constant_time_conditional_memcpy Unexecuted instantiation: p_ed25519_asn1.c:constant_time_conditional_memcpy Unexecuted instantiation: p_hkdf.c:constant_time_conditional_memcpy Unexecuted instantiation: p_rsa.c:constant_time_conditional_memcpy Unexecuted instantiation: p_rsa_asn1.c:constant_time_conditional_memcpy Unexecuted instantiation: p_x25519_asn1.c:constant_time_conditional_memcpy Unexecuted instantiation: pbkdf.c:constant_time_conditional_memcpy Unexecuted instantiation: poly1305_vec.c:constant_time_conditional_memcpy Unexecuted instantiation: refcount.c:constant_time_conditional_memcpy Unexecuted instantiation: rsa_asn1.c:constant_time_conditional_memcpy Unexecuted instantiation: rsa_crypt.c:constant_time_conditional_memcpy Unexecuted instantiation: scrypt.c:constant_time_conditional_memcpy Unexecuted instantiation: siphash.c:constant_time_conditional_memcpy Unexecuted instantiation: stack.c:constant_time_conditional_memcpy Unexecuted instantiation: thread_pthread.c:constant_time_conditional_memcpy Unexecuted instantiation: tls_cbc.c:constant_time_conditional_memcpy Unexecuted instantiation: urandom.c:constant_time_conditional_memcpy Unexecuted instantiation: a_bitstr.c:constant_time_conditional_memcpy Unexecuted instantiation: a_object.c:constant_time_conditional_memcpy Unexecuted instantiation: asn1_compat.c:constant_time_conditional_memcpy Unexecuted instantiation: bio.c:constant_time_conditional_memcpy Unexecuted instantiation: blake2.c:constant_time_conditional_memcpy Unexecuted instantiation: chacha.c:constant_time_conditional_memcpy Unexecuted instantiation: des.c:constant_time_conditional_memcpy Unexecuted instantiation: ec_asn1.c:constant_time_conditional_memcpy Unexecuted instantiation: lhash.c:constant_time_conditional_memcpy Unexecuted instantiation: tasn_dec.c:constant_time_conditional_memcpy Unexecuted instantiation: tasn_enc.c:constant_time_conditional_memcpy Unexecuted instantiation: tasn_new.c:constant_time_conditional_memcpy Unexecuted instantiation: tasn_utl.c:constant_time_conditional_memcpy Unexecuted instantiation: pool.c:constant_time_conditional_memcpy Unexecuted instantiation: curve25519_64_adx.c:constant_time_conditional_memcpy Unexecuted instantiation: cpu_intel.c:constant_time_conditional_memcpy |
567 | | |
568 | | // constant_time_conditional_memxor xors |n| bytes from |src| to |dst| if |
569 | | // |mask| is 0xff..ff and does nothing if |mask| is 0. The |n|-byte memory |
570 | | // ranges at |dst| and |src| must not overlap, as when calling |memcpy|. |
571 | | static inline void constant_time_conditional_memxor(void *dst, const void *src, |
572 | | size_t n, |
573 | 512 | const crypto_word_t mask) { |
574 | 512 | assert(!buffers_alias(dst, n, src, n)); |
575 | 512 | uint8_t *out = (uint8_t *)dst; |
576 | 512 | const uint8_t *in = (const uint8_t *)src; |
577 | | #if defined(__GNUC__) && !defined(__clang__) |
578 | | // gcc 13.2.0 doesn't automatically vectorize this loop regardless of barrier |
579 | | typedef uint8_t v32u8 __attribute__((vector_size(32), aligned(1), may_alias)); |
580 | | size_t n_vec = n&~(size_t)31; |
581 | | v32u8 masks = ((uint8_t)mask-(v32u8){}); // broadcast |
582 | | for (size_t i = 0; i < n_vec; i += 32) { |
583 | | *(v32u8*)&out[i] ^= masks & *(v32u8*)&in[i]; |
584 | | } |
585 | | out += n_vec; |
586 | | n -= n_vec; |
587 | | #endif |
588 | 49.6k | for (size_t i = 0; i < n; i++) { |
589 | 49.1k | out[i] ^= value_barrier_w(mask) & in[i]; |
590 | 49.1k | } |
591 | 512 | } Unexecuted instantiation: a_int.c:constant_time_conditional_memxor Unexecuted instantiation: asn1_lib.c:constant_time_conditional_memxor Unexecuted instantiation: bcm.c:constant_time_conditional_memxor Unexecuted instantiation: cbb.c:constant_time_conditional_memxor Unexecuted instantiation: cbs.c:constant_time_conditional_memxor Unexecuted instantiation: convert.c:constant_time_conditional_memxor Unexecuted instantiation: crypto.c:constant_time_conditional_memxor curve25519.c:constant_time_conditional_memxor Line | Count | Source | 573 | 512 | const crypto_word_t mask) { | 574 | 512 | assert(!buffers_alias(dst, n, src, n)); | 575 | 512 | uint8_t *out = (uint8_t *)dst; | 576 | 512 | const uint8_t *in = (const uint8_t *)src; | 577 | | #if defined(__GNUC__) && !defined(__clang__) | 578 | | // gcc 13.2.0 doesn't automatically vectorize this loop regardless of barrier | 579 | | typedef uint8_t v32u8 __attribute__((vector_size(32), aligned(1), may_alias)); | 580 | | size_t n_vec = n&~(size_t)31; | 581 | | v32u8 masks = ((uint8_t)mask-(v32u8){}); // broadcast | 582 | | for (size_t i = 0; i < n_vec; i += 32) { | 583 | | *(v32u8*)&out[i] ^= masks & *(v32u8*)&in[i]; | 584 | | } | 585 | | out += n_vec; | 586 | | n -= n_vec; | 587 | | #endif | 588 | 49.6k | for (size_t i = 0; i < n; i++) { | 589 | 49.1k | out[i] ^= value_barrier_w(mask) & in[i]; | 590 | 49.1k | } | 591 | 512 | } |
Unexecuted instantiation: digest_extra.c:constant_time_conditional_memxor Unexecuted instantiation: dsa.c:constant_time_conditional_memxor Unexecuted instantiation: dsa_asn1.c:constant_time_conditional_memxor Unexecuted instantiation: e_aesctrhmac.c:constant_time_conditional_memxor Unexecuted instantiation: e_aesgcmsiv.c:constant_time_conditional_memxor Unexecuted instantiation: e_chacha20poly1305.c:constant_time_conditional_memxor Unexecuted instantiation: e_des.c:constant_time_conditional_memxor Unexecuted instantiation: e_rc2.c:constant_time_conditional_memxor Unexecuted instantiation: e_rc4.c:constant_time_conditional_memxor Unexecuted instantiation: e_tls.c:constant_time_conditional_memxor Unexecuted instantiation: ecdh_extra.c:constant_time_conditional_memxor Unexecuted instantiation: ecdsa_asn1.c:constant_time_conditional_memxor Unexecuted instantiation: engine.c:constant_time_conditional_memxor Unexecuted instantiation: err.c:constant_time_conditional_memxor Unexecuted instantiation: evp.c:constant_time_conditional_memxor Unexecuted instantiation: evp_ctx.c:constant_time_conditional_memxor Unexecuted instantiation: ex_data.c:constant_time_conditional_memxor Unexecuted instantiation: file.c:constant_time_conditional_memxor Unexecuted instantiation: fork_detect.c:constant_time_conditional_memxor Unexecuted instantiation: forkunsafe.c:constant_time_conditional_memxor Unexecuted instantiation: md4.c:constant_time_conditional_memxor Unexecuted instantiation: md5.c:constant_time_conditional_memxor Unexecuted instantiation: mem.c:constant_time_conditional_memxor Unexecuted instantiation: obj.c:constant_time_conditional_memxor Unexecuted instantiation: p_dh_asn1.c:constant_time_conditional_memxor Unexecuted instantiation: p_dsa_asn1.c:constant_time_conditional_memxor Unexecuted instantiation: p_ec.c:constant_time_conditional_memxor Unexecuted instantiation: p_ed25519_asn1.c:constant_time_conditional_memxor Unexecuted instantiation: p_hkdf.c:constant_time_conditional_memxor Unexecuted instantiation: p_rsa.c:constant_time_conditional_memxor Unexecuted instantiation: p_rsa_asn1.c:constant_time_conditional_memxor Unexecuted instantiation: p_x25519_asn1.c:constant_time_conditional_memxor Unexecuted instantiation: pbkdf.c:constant_time_conditional_memxor Unexecuted instantiation: poly1305_vec.c:constant_time_conditional_memxor Unexecuted instantiation: refcount.c:constant_time_conditional_memxor Unexecuted instantiation: rsa_asn1.c:constant_time_conditional_memxor Unexecuted instantiation: rsa_crypt.c:constant_time_conditional_memxor Unexecuted instantiation: scrypt.c:constant_time_conditional_memxor Unexecuted instantiation: siphash.c:constant_time_conditional_memxor Unexecuted instantiation: stack.c:constant_time_conditional_memxor Unexecuted instantiation: thread_pthread.c:constant_time_conditional_memxor Unexecuted instantiation: tls_cbc.c:constant_time_conditional_memxor Unexecuted instantiation: urandom.c:constant_time_conditional_memxor Unexecuted instantiation: a_bitstr.c:constant_time_conditional_memxor Unexecuted instantiation: a_object.c:constant_time_conditional_memxor Unexecuted instantiation: asn1_compat.c:constant_time_conditional_memxor Unexecuted instantiation: bio.c:constant_time_conditional_memxor Unexecuted instantiation: blake2.c:constant_time_conditional_memxor Unexecuted instantiation: chacha.c:constant_time_conditional_memxor Unexecuted instantiation: des.c:constant_time_conditional_memxor Unexecuted instantiation: ec_asn1.c:constant_time_conditional_memxor Unexecuted instantiation: lhash.c:constant_time_conditional_memxor Unexecuted instantiation: tasn_dec.c:constant_time_conditional_memxor Unexecuted instantiation: tasn_enc.c:constant_time_conditional_memxor Unexecuted instantiation: tasn_new.c:constant_time_conditional_memxor Unexecuted instantiation: tasn_utl.c:constant_time_conditional_memxor Unexecuted instantiation: pool.c:constant_time_conditional_memxor Unexecuted instantiation: curve25519_64_adx.c:constant_time_conditional_memxor Unexecuted instantiation: cpu_intel.c:constant_time_conditional_memxor |
592 | | |
593 | | #if defined(BORINGSSL_CONSTANT_TIME_VALIDATION) |
594 | | |
595 | | // CONSTTIME_SECRET takes a pointer and a number of bytes and marks that region |
596 | | // of memory as secret. Secret data is tracked as it flows to registers and |
597 | | // other parts of a memory. If secret data is used as a condition for a branch, |
598 | | // or as a memory index, it will trigger warnings in valgrind. |
599 | | #define CONSTTIME_SECRET(ptr, len) VALGRIND_MAKE_MEM_UNDEFINED(ptr, len) |
600 | | |
601 | | // CONSTTIME_DECLASSIFY takes a pointer and a number of bytes and marks that |
602 | | // region of memory as public. Public data is not subject to constant-time |
603 | | // rules. |
604 | | #define CONSTTIME_DECLASSIFY(ptr, len) VALGRIND_MAKE_MEM_DEFINED(ptr, len) |
605 | | |
606 | | #else |
607 | | |
608 | | #define CONSTTIME_SECRET(ptr, len) |
609 | | #define CONSTTIME_DECLASSIFY(ptr, len) |
610 | | |
611 | | #endif // BORINGSSL_CONSTANT_TIME_VALIDATION |
612 | | |
613 | 1.64M | static inline crypto_word_t constant_time_declassify_w(crypto_word_t v) { |
614 | | // Return |v| through a value barrier to be safe. Valgrind-based constant-time |
615 | | // validation is partly to check the compiler has not undone any constant-time |
616 | | // work. Any place |BORINGSSL_CONSTANT_TIME_VALIDATION| influences |
617 | | // optimizations, this validation is inaccurate. |
618 | | // |
619 | | // However, by sending pointers through valgrind, we likely inhibit escape |
620 | | // analysis. On local variables, particularly booleans, we likely |
621 | | // significantly impact optimizations. |
622 | | // |
623 | | // Thus, to be safe, stick a value barrier, in hopes of comparably inhibiting |
624 | | // compiler analysis. |
625 | 1.64M | CONSTTIME_DECLASSIFY(&v, sizeof(v)); |
626 | 1.64M | return value_barrier_w(v); |
627 | 1.64M | } Unexecuted instantiation: a_int.c:constant_time_declassify_w Unexecuted instantiation: asn1_lib.c:constant_time_declassify_w bcm.c:constant_time_declassify_w Line | Count | Source | 613 | 1.64M | static inline crypto_word_t constant_time_declassify_w(crypto_word_t v) { | 614 | | // Return |v| through a value barrier to be safe. Valgrind-based constant-time | 615 | | // validation is partly to check the compiler has not undone any constant-time | 616 | | // work. Any place |BORINGSSL_CONSTANT_TIME_VALIDATION| influences | 617 | | // optimizations, this validation is inaccurate. | 618 | | // | 619 | | // However, by sending pointers through valgrind, we likely inhibit escape | 620 | | // analysis. On local variables, particularly booleans, we likely | 621 | | // significantly impact optimizations. | 622 | | // | 623 | | // Thus, to be safe, stick a value barrier, in hopes of comparably inhibiting | 624 | | // compiler analysis. | 625 | 1.64M | CONSTTIME_DECLASSIFY(&v, sizeof(v)); | 626 | 1.64M | return value_barrier_w(v); | 627 | 1.64M | } |
Unexecuted instantiation: cbb.c:constant_time_declassify_w Unexecuted instantiation: cbs.c:constant_time_declassify_w Unexecuted instantiation: convert.c:constant_time_declassify_w Unexecuted instantiation: crypto.c:constant_time_declassify_w Unexecuted instantiation: curve25519.c:constant_time_declassify_w Unexecuted instantiation: digest_extra.c:constant_time_declassify_w Unexecuted instantiation: dsa.c:constant_time_declassify_w Unexecuted instantiation: dsa_asn1.c:constant_time_declassify_w Unexecuted instantiation: e_aesctrhmac.c:constant_time_declassify_w Unexecuted instantiation: e_aesgcmsiv.c:constant_time_declassify_w Unexecuted instantiation: e_chacha20poly1305.c:constant_time_declassify_w Unexecuted instantiation: e_des.c:constant_time_declassify_w Unexecuted instantiation: e_rc2.c:constant_time_declassify_w Unexecuted instantiation: e_rc4.c:constant_time_declassify_w Unexecuted instantiation: e_tls.c:constant_time_declassify_w Unexecuted instantiation: ecdh_extra.c:constant_time_declassify_w Unexecuted instantiation: ecdsa_asn1.c:constant_time_declassify_w Unexecuted instantiation: engine.c:constant_time_declassify_w Unexecuted instantiation: err.c:constant_time_declassify_w Unexecuted instantiation: evp.c:constant_time_declassify_w Unexecuted instantiation: evp_ctx.c:constant_time_declassify_w Unexecuted instantiation: ex_data.c:constant_time_declassify_w Unexecuted instantiation: file.c:constant_time_declassify_w Unexecuted instantiation: fork_detect.c:constant_time_declassify_w Unexecuted instantiation: forkunsafe.c:constant_time_declassify_w Unexecuted instantiation: md4.c:constant_time_declassify_w Unexecuted instantiation: md5.c:constant_time_declassify_w Unexecuted instantiation: mem.c:constant_time_declassify_w Unexecuted instantiation: obj.c:constant_time_declassify_w Unexecuted instantiation: p_dh_asn1.c:constant_time_declassify_w Unexecuted instantiation: p_dsa_asn1.c:constant_time_declassify_w Unexecuted instantiation: p_ec.c:constant_time_declassify_w Unexecuted instantiation: p_ed25519_asn1.c:constant_time_declassify_w Unexecuted instantiation: p_hkdf.c:constant_time_declassify_w Unexecuted instantiation: p_rsa.c:constant_time_declassify_w Unexecuted instantiation: p_rsa_asn1.c:constant_time_declassify_w Unexecuted instantiation: p_x25519_asn1.c:constant_time_declassify_w Unexecuted instantiation: pbkdf.c:constant_time_declassify_w Unexecuted instantiation: poly1305_vec.c:constant_time_declassify_w Unexecuted instantiation: refcount.c:constant_time_declassify_w Unexecuted instantiation: rsa_asn1.c:constant_time_declassify_w Unexecuted instantiation: rsa_crypt.c:constant_time_declassify_w Unexecuted instantiation: scrypt.c:constant_time_declassify_w Unexecuted instantiation: siphash.c:constant_time_declassify_w Unexecuted instantiation: stack.c:constant_time_declassify_w Unexecuted instantiation: thread_pthread.c:constant_time_declassify_w Unexecuted instantiation: tls_cbc.c:constant_time_declassify_w Unexecuted instantiation: urandom.c:constant_time_declassify_w Unexecuted instantiation: a_bitstr.c:constant_time_declassify_w Unexecuted instantiation: a_object.c:constant_time_declassify_w Unexecuted instantiation: asn1_compat.c:constant_time_declassify_w Unexecuted instantiation: bio.c:constant_time_declassify_w Unexecuted instantiation: blake2.c:constant_time_declassify_w Unexecuted instantiation: chacha.c:constant_time_declassify_w Unexecuted instantiation: des.c:constant_time_declassify_w Unexecuted instantiation: ec_asn1.c:constant_time_declassify_w Unexecuted instantiation: lhash.c:constant_time_declassify_w Unexecuted instantiation: tasn_dec.c:constant_time_declassify_w Unexecuted instantiation: tasn_enc.c:constant_time_declassify_w Unexecuted instantiation: tasn_new.c:constant_time_declassify_w Unexecuted instantiation: tasn_utl.c:constant_time_declassify_w Unexecuted instantiation: pool.c:constant_time_declassify_w Unexecuted instantiation: curve25519_64_adx.c:constant_time_declassify_w Unexecuted instantiation: cpu_intel.c:constant_time_declassify_w |
628 | | |
629 | 1.30G | static inline int constant_time_declassify_int(int v) { |
630 | 1.30G | static_assert(sizeof(uint32_t) == sizeof(int), |
631 | 1.30G | "int is not the same size as uint32_t"); |
632 | | // See comment above. |
633 | 1.30G | CONSTTIME_DECLASSIFY(&v, sizeof(v)); |
634 | 1.30G | return value_barrier_u32(v); |
635 | 1.30G | } Unexecuted instantiation: a_int.c:constant_time_declassify_int Unexecuted instantiation: asn1_lib.c:constant_time_declassify_int bcm.c:constant_time_declassify_int Line | Count | Source | 629 | 1.30G | static inline int constant_time_declassify_int(int v) { | 630 | 1.30G | static_assert(sizeof(uint32_t) == sizeof(int), | 631 | 1.30G | "int is not the same size as uint32_t"); | 632 | | // See comment above. | 633 | 1.30G | CONSTTIME_DECLASSIFY(&v, sizeof(v)); | 634 | 1.30G | return value_barrier_u32(v); | 635 | 1.30G | } |
Unexecuted instantiation: cbb.c:constant_time_declassify_int Unexecuted instantiation: cbs.c:constant_time_declassify_int Unexecuted instantiation: convert.c:constant_time_declassify_int Unexecuted instantiation: crypto.c:constant_time_declassify_int curve25519.c:constant_time_declassify_int Line | Count | Source | 629 | 19.4k | static inline int constant_time_declassify_int(int v) { | 630 | 19.4k | static_assert(sizeof(uint32_t) == sizeof(int), | 631 | 19.4k | "int is not the same size as uint32_t"); | 632 | | // See comment above. | 633 | 19.4k | CONSTTIME_DECLASSIFY(&v, sizeof(v)); | 634 | 19.4k | return value_barrier_u32(v); | 635 | 19.4k | } |
Unexecuted instantiation: digest_extra.c:constant_time_declassify_int Unexecuted instantiation: dsa.c:constant_time_declassify_int Unexecuted instantiation: dsa_asn1.c:constant_time_declassify_int Unexecuted instantiation: e_aesctrhmac.c:constant_time_declassify_int Unexecuted instantiation: e_aesgcmsiv.c:constant_time_declassify_int Unexecuted instantiation: e_chacha20poly1305.c:constant_time_declassify_int Unexecuted instantiation: e_des.c:constant_time_declassify_int Unexecuted instantiation: e_rc2.c:constant_time_declassify_int Unexecuted instantiation: e_rc4.c:constant_time_declassify_int Unexecuted instantiation: e_tls.c:constant_time_declassify_int Unexecuted instantiation: ecdh_extra.c:constant_time_declassify_int Unexecuted instantiation: ecdsa_asn1.c:constant_time_declassify_int Unexecuted instantiation: engine.c:constant_time_declassify_int Unexecuted instantiation: err.c:constant_time_declassify_int Unexecuted instantiation: evp.c:constant_time_declassify_int Unexecuted instantiation: evp_ctx.c:constant_time_declassify_int Unexecuted instantiation: ex_data.c:constant_time_declassify_int Unexecuted instantiation: file.c:constant_time_declassify_int Unexecuted instantiation: fork_detect.c:constant_time_declassify_int Unexecuted instantiation: forkunsafe.c:constant_time_declassify_int Unexecuted instantiation: md4.c:constant_time_declassify_int Unexecuted instantiation: md5.c:constant_time_declassify_int Unexecuted instantiation: mem.c:constant_time_declassify_int Unexecuted instantiation: obj.c:constant_time_declassify_int Unexecuted instantiation: p_dh_asn1.c:constant_time_declassify_int Unexecuted instantiation: p_dsa_asn1.c:constant_time_declassify_int Unexecuted instantiation: p_ec.c:constant_time_declassify_int Unexecuted instantiation: p_ed25519_asn1.c:constant_time_declassify_int Unexecuted instantiation: p_hkdf.c:constant_time_declassify_int Unexecuted instantiation: p_rsa.c:constant_time_declassify_int Unexecuted instantiation: p_rsa_asn1.c:constant_time_declassify_int Unexecuted instantiation: p_x25519_asn1.c:constant_time_declassify_int Unexecuted instantiation: pbkdf.c:constant_time_declassify_int Unexecuted instantiation: poly1305_vec.c:constant_time_declassify_int Unexecuted instantiation: refcount.c:constant_time_declassify_int Unexecuted instantiation: rsa_asn1.c:constant_time_declassify_int Unexecuted instantiation: rsa_crypt.c:constant_time_declassify_int Unexecuted instantiation: scrypt.c:constant_time_declassify_int Unexecuted instantiation: siphash.c:constant_time_declassify_int Unexecuted instantiation: stack.c:constant_time_declassify_int Unexecuted instantiation: thread_pthread.c:constant_time_declassify_int Unexecuted instantiation: tls_cbc.c:constant_time_declassify_int Unexecuted instantiation: urandom.c:constant_time_declassify_int Unexecuted instantiation: a_bitstr.c:constant_time_declassify_int Unexecuted instantiation: a_object.c:constant_time_declassify_int Unexecuted instantiation: asn1_compat.c:constant_time_declassify_int Unexecuted instantiation: bio.c:constant_time_declassify_int Unexecuted instantiation: blake2.c:constant_time_declassify_int Unexecuted instantiation: chacha.c:constant_time_declassify_int Unexecuted instantiation: des.c:constant_time_declassify_int Unexecuted instantiation: ec_asn1.c:constant_time_declassify_int Unexecuted instantiation: lhash.c:constant_time_declassify_int Unexecuted instantiation: tasn_dec.c:constant_time_declassify_int Unexecuted instantiation: tasn_enc.c:constant_time_declassify_int Unexecuted instantiation: tasn_new.c:constant_time_declassify_int Unexecuted instantiation: tasn_utl.c:constant_time_declassify_int Unexecuted instantiation: pool.c:constant_time_declassify_int Unexecuted instantiation: curve25519_64_adx.c:constant_time_declassify_int Unexecuted instantiation: cpu_intel.c:constant_time_declassify_int |
636 | | |
637 | | // declassify_assert behaves like |assert| but declassifies the result of |
638 | | // evaluating |expr|. This allows the assertion to branch on the (presumably |
639 | | // public) result, but still ensures that values leading up to the computation |
640 | | // were secret. |
641 | 1.30G | #define declassify_assert(expr) assert(constant_time_declassify_int(expr)) |
642 | | |
643 | | |
644 | | // Thread-safe initialisation. |
645 | | |
646 | | #if !defined(OPENSSL_THREADS) |
647 | | typedef uint32_t CRYPTO_once_t; |
648 | | #define CRYPTO_ONCE_INIT 0 |
649 | | #elif defined(OPENSSL_WINDOWS_THREADS) |
650 | | typedef INIT_ONCE CRYPTO_once_t; |
651 | | #define CRYPTO_ONCE_INIT INIT_ONCE_STATIC_INIT |
652 | | #elif defined(OPENSSL_PTHREADS) |
653 | | typedef pthread_once_t CRYPTO_once_t; |
654 | | #define CRYPTO_ONCE_INIT PTHREAD_ONCE_INIT |
655 | | #else |
656 | | #error "Unknown threading library" |
657 | | #endif |
658 | | |
659 | | // CRYPTO_once calls |init| exactly once per process. This is thread-safe: if |
660 | | // concurrent threads call |CRYPTO_once| with the same |CRYPTO_once_t| argument |
661 | | // then they will block until |init| completes, but |init| will have only been |
662 | | // called once. |
663 | | // |
664 | | // The |once| argument must be a |CRYPTO_once_t| that has been initialised with |
665 | | // the value |CRYPTO_ONCE_INIT|. |
666 | | OPENSSL_EXPORT void CRYPTO_once(CRYPTO_once_t *once, void (*init)(void)); |
667 | | |
668 | | |
669 | | // Atomics. |
670 | | // |
671 | | // The following functions provide an API analogous to <stdatomic.h> from C11 |
672 | | // and abstract between a few variations on atomics we need to support. |
673 | | |
674 | | #if defined(__cplusplus) |
675 | | |
676 | | // In C++, we can't easily detect whether C will use |OPENSSL_C11_ATOMIC| or |
677 | | // |OPENSSL_WINDOWS_ATOMIC|. Instead, we define a layout-compatible type without |
678 | | // the corresponding functions. When we can rely on C11 atomics in MSVC, that |
679 | | // will no longer be a concern. |
680 | | typedef uint32_t CRYPTO_atomic_u32; |
681 | | |
682 | | #elif defined(OPENSSL_C11_ATOMIC) |
683 | | |
684 | | typedef _Atomic uint32_t CRYPTO_atomic_u32; |
685 | | |
686 | | // This should be const, but the |OPENSSL_WINDOWS_ATOMIC| implementation is not |
687 | | // const due to Windows limitations. When we can rely on C11 atomics, make this |
688 | | // const-correct. |
689 | 9.31k | OPENSSL_INLINE uint32_t CRYPTO_atomic_load_u32(CRYPTO_atomic_u32 *val) { |
690 | 9.31k | return atomic_load(val); |
691 | 9.31k | } Unexecuted instantiation: a_int.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: asn1_lib.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: bcm.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: cbb.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: cbs.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: convert.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: crypto.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: curve25519.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: digest_extra.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: dsa.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: dsa_asn1.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: e_des.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: e_rc2.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: e_rc4.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: e_tls.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: ecdh_extra.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: engine.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: err.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: evp.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: evp_ctx.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: ex_data.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: file.c:CRYPTO_atomic_load_u32 fork_detect.c:CRYPTO_atomic_load_u32 Line | Count | Source | 689 | 4.28k | OPENSSL_INLINE uint32_t CRYPTO_atomic_load_u32(CRYPTO_atomic_u32 *val) { | 690 | 4.28k | return atomic_load(val); | 691 | 4.28k | } |
forkunsafe.c:CRYPTO_atomic_load_u32 Line | Count | Source | 689 | 4.28k | OPENSSL_INLINE uint32_t CRYPTO_atomic_load_u32(CRYPTO_atomic_u32 *val) { | 690 | 4.28k | return atomic_load(val); | 691 | 4.28k | } |
Unexecuted instantiation: md4.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: md5.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: mem.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: obj.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: p_ec.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: p_hkdf.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: p_rsa.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: pbkdf.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: poly1305_vec.c:CRYPTO_atomic_load_u32 refcount.c:CRYPTO_atomic_load_u32 Line | Count | Source | 689 | 736 | OPENSSL_INLINE uint32_t CRYPTO_atomic_load_u32(CRYPTO_atomic_u32 *val) { | 690 | 736 | return atomic_load(val); | 691 | 736 | } |
Unexecuted instantiation: rsa_asn1.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: rsa_crypt.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: scrypt.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: siphash.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: stack.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: thread_pthread.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: tls_cbc.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: urandom.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: a_bitstr.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: a_object.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: asn1_compat.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: bio.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: blake2.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: chacha.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: des.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: ec_asn1.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: lhash.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: tasn_dec.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: tasn_enc.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: tasn_new.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: tasn_utl.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: pool.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_atomic_load_u32 Unexecuted instantiation: cpu_intel.c:CRYPTO_atomic_load_u32 |
692 | | |
693 | | OPENSSL_INLINE int CRYPTO_atomic_compare_exchange_weak_u32( |
694 | 736 | CRYPTO_atomic_u32 *val, uint32_t *expected, uint32_t desired) { |
695 | 736 | return atomic_compare_exchange_weak(val, expected, desired); |
696 | 736 | } Unexecuted instantiation: a_int.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: asn1_lib.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: bcm.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: cbb.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: cbs.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: convert.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: crypto.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: curve25519.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: digest_extra.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: dsa.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: dsa_asn1.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: e_des.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: e_rc2.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: e_rc4.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: e_tls.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: ecdh_extra.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: engine.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: err.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: evp.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: evp_ctx.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: ex_data.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: file.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: fork_detect.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: forkunsafe.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: md4.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: md5.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: mem.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: obj.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: p_ec.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: p_hkdf.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: p_rsa.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: pbkdf.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: poly1305_vec.c:CRYPTO_atomic_compare_exchange_weak_u32 refcount.c:CRYPTO_atomic_compare_exchange_weak_u32 Line | Count | Source | 694 | 736 | CRYPTO_atomic_u32 *val, uint32_t *expected, uint32_t desired) { | 695 | 736 | return atomic_compare_exchange_weak(val, expected, desired); | 696 | 736 | } |
Unexecuted instantiation: rsa_asn1.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: rsa_crypt.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: scrypt.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: siphash.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: stack.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: thread_pthread.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: tls_cbc.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: urandom.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: a_bitstr.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: a_object.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: asn1_compat.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: bio.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: blake2.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: chacha.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: des.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: ec_asn1.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: lhash.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: tasn_dec.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: tasn_enc.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: tasn_new.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: tasn_utl.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: pool.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_atomic_compare_exchange_weak_u32 Unexecuted instantiation: cpu_intel.c:CRYPTO_atomic_compare_exchange_weak_u32 |
697 | | |
698 | | OPENSSL_INLINE void CRYPTO_atomic_store_u32(CRYPTO_atomic_u32 *val, |
699 | 2 | uint32_t desired) { |
700 | 2 | atomic_store(val, desired); |
701 | 2 | } Unexecuted instantiation: a_int.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: asn1_lib.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: bcm.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: cbb.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: cbs.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: convert.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: crypto.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: curve25519.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: digest_extra.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: dsa.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: dsa_asn1.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: e_des.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: e_rc2.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: e_rc4.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: e_tls.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: ecdh_extra.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: engine.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: err.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: evp.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: evp_ctx.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: ex_data.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: file.c:CRYPTO_atomic_store_u32 fork_detect.c:CRYPTO_atomic_store_u32 Line | Count | Source | 699 | 2 | uint32_t desired) { | 700 | 2 | atomic_store(val, desired); | 701 | 2 | } |
Unexecuted instantiation: forkunsafe.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: md4.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: md5.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: mem.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: obj.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: p_ec.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: p_hkdf.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: p_rsa.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: pbkdf.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: poly1305_vec.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: refcount.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: rsa_asn1.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: rsa_crypt.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: scrypt.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: siphash.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: stack.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: thread_pthread.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: tls_cbc.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: urandom.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: a_bitstr.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: a_object.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: asn1_compat.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: bio.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: blake2.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: chacha.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: des.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: ec_asn1.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: lhash.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: tasn_dec.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: tasn_enc.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: tasn_new.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: tasn_utl.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: pool.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_atomic_store_u32 Unexecuted instantiation: cpu_intel.c:CRYPTO_atomic_store_u32 |
702 | | |
703 | | #elif defined(OPENSSL_WINDOWS_ATOMIC) |
704 | | |
705 | | typedef LONG CRYPTO_atomic_u32; |
706 | | |
707 | | OPENSSL_INLINE uint32_t CRYPTO_atomic_load_u32(volatile CRYPTO_atomic_u32 *val) { |
708 | | // This is not ideal because it still writes to a cacheline. MSVC is not able |
709 | | // to optimize this to a true atomic read, and Windows does not provide an |
710 | | // InterlockedLoad function. |
711 | | // |
712 | | // The Windows documentation [1] does say "Simple reads and writes to |
713 | | // properly-aligned 32-bit variables are atomic operations", but this is not |
714 | | // phrased in terms of the C11 and C++11 memory models, and indeed a read or |
715 | | // write seems to produce slightly different code on MSVC than a sequentially |
716 | | // consistent std::atomic::load in C++. Moreover, it is unclear if non-MSVC |
717 | | // compilers on Windows provide the same guarantees. Thus we avoid relying on |
718 | | // this and instead still use an interlocked function. This is still |
719 | | // preferable a global mutex, and eventually this code will be replaced by |
720 | | // [2]. Additionally, on clang-cl, we'll use the |OPENSSL_C11_ATOMIC| path. |
721 | | // |
722 | | // [1] https://learn.microsoft.com/en-us/windows/win32/sync/interlocked-variable-access |
723 | | // [2] https://devblogs.microsoft.com/cppblog/c11-atomics-in-visual-studio-2022-version-17-5-preview-2/ |
724 | | return (uint32_t)InterlockedCompareExchange(val, 0, 0); |
725 | | } |
726 | | |
727 | | OPENSSL_INLINE int CRYPTO_atomic_compare_exchange_weak_u32( |
728 | | volatile CRYPTO_atomic_u32 *val, uint32_t *expected32, uint32_t desired) { |
729 | | LONG expected = (LONG)*expected32; |
730 | | LONG actual = InterlockedCompareExchange(val, (LONG)desired, expected); |
731 | | *expected32 = (uint32_t)actual; |
732 | | return actual == expected; |
733 | | } |
734 | | |
735 | | OPENSSL_INLINE void CRYPTO_atomic_store_u32(volatile CRYPTO_atomic_u32 *val, |
736 | | uint32_t desired) { |
737 | | InterlockedExchange(val, (LONG)desired); |
738 | | } |
739 | | |
740 | | #elif !defined(OPENSSL_THREADS) |
741 | | |
742 | | typedef uint32_t CRYPTO_atomic_u32; |
743 | | |
744 | | OPENSSL_INLINE uint32_t CRYPTO_atomic_load_u32(CRYPTO_atomic_u32 *val) { |
745 | | return *val; |
746 | | } |
747 | | |
748 | | OPENSSL_INLINE int CRYPTO_atomic_compare_exchange_weak_u32( |
749 | | CRYPTO_atomic_u32 *val, uint32_t *expected, uint32_t desired) { |
750 | | if (*val != *expected) { |
751 | | *expected = *val; |
752 | | return 0; |
753 | | } |
754 | | *val = desired; |
755 | | return 1; |
756 | | } |
757 | | |
758 | | OPENSSL_INLINE void CRYPTO_atomic_store_u32(CRYPTO_atomic_u32 *val, |
759 | | uint32_t desired) { |
760 | | *val = desired; |
761 | | } |
762 | | |
763 | | #else |
764 | | |
765 | | // Require some atomics implementation. Contact BoringSSL maintainers if you |
766 | | // have a platform with fails this check. |
767 | | #error "Thread-compatible configurations require atomics" |
768 | | |
769 | | #endif |
770 | | |
771 | | // See the comment in the |__cplusplus| section above. |
772 | | static_assert(sizeof(CRYPTO_atomic_u32) == sizeof(uint32_t), |
773 | | "CRYPTO_atomic_u32 does not match uint32_t size"); |
774 | | static_assert(alignof(CRYPTO_atomic_u32) == alignof(uint32_t), |
775 | | "CRYPTO_atomic_u32 does not match uint32_t alignment"); |
776 | | |
777 | | |
778 | | // Reference counting. |
779 | | |
780 | | // CRYPTO_REFCOUNT_MAX is the value at which the reference count saturates. |
781 | 736 | #define CRYPTO_REFCOUNT_MAX 0xffffffff |
782 | | |
783 | | // CRYPTO_refcount_inc atomically increments the value at |*count| unless the |
784 | | // value would overflow. It's safe for multiple threads to concurrently call |
785 | | // this or |CRYPTO_refcount_dec_and_test_zero| on the same |
786 | | // |CRYPTO_refcount_t|. |
787 | | OPENSSL_EXPORT void CRYPTO_refcount_inc(CRYPTO_refcount_t *count); |
788 | | |
789 | | // CRYPTO_refcount_dec_and_test_zero tests the value at |*count|: |
790 | | // if it's zero, it crashes the address space. |
791 | | // if it's the maximum value, it returns zero. |
792 | | // otherwise, it atomically decrements it and returns one iff the resulting |
793 | | // value is zero. |
794 | | // |
795 | | // It's safe for multiple threads to concurrently call this or |
796 | | // |CRYPTO_refcount_inc| on the same |CRYPTO_refcount_t|. |
797 | | OPENSSL_EXPORT int CRYPTO_refcount_dec_and_test_zero(CRYPTO_refcount_t *count); |
798 | | |
799 | | |
800 | | // Locks. |
801 | | |
802 | | #if !defined(OPENSSL_THREADS) |
803 | | typedef struct crypto_mutex_st { |
804 | | char padding; // Empty structs have different sizes in C and C++. |
805 | | } CRYPTO_MUTEX; |
806 | | #define CRYPTO_MUTEX_INIT { 0 } |
807 | | #elif defined(OPENSSL_WINDOWS_THREADS) |
808 | | typedef SRWLOCK CRYPTO_MUTEX; |
809 | | #define CRYPTO_MUTEX_INIT SRWLOCK_INIT |
810 | | #elif defined(OPENSSL_PTHREADS) |
811 | | typedef pthread_rwlock_t CRYPTO_MUTEX; |
812 | | #define CRYPTO_MUTEX_INIT PTHREAD_RWLOCK_INITIALIZER |
813 | | #else |
814 | | #error "Unknown threading library" |
815 | | #endif |
816 | | |
817 | | // CRYPTO_MUTEX_init initialises |lock|. If |lock| is a static variable, use a |
818 | | // |CRYPTO_MUTEX_INIT|. |
819 | | OPENSSL_EXPORT void CRYPTO_MUTEX_init(CRYPTO_MUTEX *lock); |
820 | | |
821 | | // CRYPTO_MUTEX_lock_read locks |lock| such that other threads may also have a |
822 | | // read lock, but none may have a write lock. |
823 | | OPENSSL_EXPORT void CRYPTO_MUTEX_lock_read(CRYPTO_MUTEX *lock); |
824 | | |
825 | | // CRYPTO_MUTEX_lock_write locks |lock| such that no other thread has any type |
826 | | // of lock on it. |
827 | | OPENSSL_EXPORT void CRYPTO_MUTEX_lock_write(CRYPTO_MUTEX *lock); |
828 | | |
829 | | // CRYPTO_MUTEX_unlock_read unlocks |lock| for reading. |
830 | | OPENSSL_EXPORT void CRYPTO_MUTEX_unlock_read(CRYPTO_MUTEX *lock); |
831 | | |
832 | | // CRYPTO_MUTEX_unlock_write unlocks |lock| for writing. |
833 | | OPENSSL_EXPORT void CRYPTO_MUTEX_unlock_write(CRYPTO_MUTEX *lock); |
834 | | |
835 | | // CRYPTO_MUTEX_cleanup releases all resources held by |lock|. |
836 | | OPENSSL_EXPORT void CRYPTO_MUTEX_cleanup(CRYPTO_MUTEX *lock); |
837 | | |
838 | | #if defined(__cplusplus) |
839 | | extern "C++" { |
840 | | |
841 | | BSSL_NAMESPACE_BEGIN |
842 | | |
843 | | namespace internal { |
844 | | |
845 | | // MutexLockBase is a RAII helper for CRYPTO_MUTEX locking. |
846 | | template <void (*LockFunc)(CRYPTO_MUTEX *), void (*ReleaseFunc)(CRYPTO_MUTEX *)> |
847 | | class MutexLockBase { |
848 | | public: |
849 | | explicit MutexLockBase(CRYPTO_MUTEX *mu) : mu_(mu) { |
850 | | assert(mu_ != nullptr); |
851 | | LockFunc(mu_); |
852 | | } |
853 | | ~MutexLockBase() { ReleaseFunc(mu_); } |
854 | | MutexLockBase(const MutexLockBase<LockFunc, ReleaseFunc> &) = delete; |
855 | | MutexLockBase &operator=(const MutexLockBase<LockFunc, ReleaseFunc> &) = |
856 | | delete; |
857 | | |
858 | | private: |
859 | | CRYPTO_MUTEX *const mu_; |
860 | | }; |
861 | | |
862 | | } // namespace internal |
863 | | |
864 | | using MutexWriteLock = |
865 | | internal::MutexLockBase<CRYPTO_MUTEX_lock_write, CRYPTO_MUTEX_unlock_write>; |
866 | | using MutexReadLock = |
867 | | internal::MutexLockBase<CRYPTO_MUTEX_lock_read, CRYPTO_MUTEX_unlock_read>; |
868 | | |
869 | | BSSL_NAMESPACE_END |
870 | | |
871 | | } // extern "C++" |
872 | | #endif // defined(__cplusplus) |
873 | | |
874 | | |
875 | | // Thread local storage. |
876 | | |
877 | | // thread_local_data_t enumerates the types of thread-local data that can be |
878 | | // stored. |
879 | | typedef enum { |
880 | | OPENSSL_THREAD_LOCAL_ERR = 0, |
881 | | OPENSSL_THREAD_LOCAL_RAND, |
882 | | OPENSSL_THREAD_LOCAL_FIPS_COUNTERS, |
883 | | OPENSSL_THREAD_LOCAL_FIPS_SERVICE_INDICATOR_STATE, |
884 | | OPENSSL_THREAD_LOCAL_TEST, |
885 | | NUM_OPENSSL_THREAD_LOCALS, |
886 | | } thread_local_data_t; |
887 | | |
888 | | // thread_local_destructor_t is the type of a destructor function that will be |
889 | | // called when a thread exits and its thread-local storage needs to be freed. |
890 | | typedef void (*thread_local_destructor_t)(void *); |
891 | | |
892 | | // CRYPTO_get_thread_local gets the pointer value that is stored for the |
893 | | // current thread for the given index, or NULL if none has been set. |
894 | | OPENSSL_EXPORT void *CRYPTO_get_thread_local(thread_local_data_t value); |
895 | | |
896 | | // CRYPTO_set_thread_local sets a pointer value for the current thread at the |
897 | | // given index. This function should only be called once per thread for a given |
898 | | // |index|: rather than update the pointer value itself, update the data that |
899 | | // is pointed to. |
900 | | // |
901 | | // The destructor function will be called when a thread exits to free this |
902 | | // thread-local data. All calls to |CRYPTO_set_thread_local| with the same |
903 | | // |index| should have the same |destructor| argument. The destructor may be |
904 | | // called with a NULL argument if a thread that never set a thread-local |
905 | | // pointer for |index|, exits. The destructor may be called concurrently with |
906 | | // different arguments. |
907 | | // |
908 | | // This function returns one on success or zero on error. If it returns zero |
909 | | // then |destructor| has been called with |value| already. |
910 | | OPENSSL_EXPORT int CRYPTO_set_thread_local( |
911 | | thread_local_data_t index, void *value, |
912 | | thread_local_destructor_t destructor); |
913 | | |
914 | | |
915 | | // ex_data |
916 | | |
917 | | typedef struct crypto_ex_data_func_st CRYPTO_EX_DATA_FUNCS; |
918 | | |
919 | | // CRYPTO_EX_DATA_CLASS tracks the ex_indices registered for a type which |
920 | | // supports ex_data. It should defined as a static global within the module |
921 | | // which defines that type. |
922 | | typedef struct { |
923 | | CRYPTO_MUTEX lock; |
924 | | // funcs is a linked list of |CRYPTO_EX_DATA_FUNCS| structures. It may be |
925 | | // traversed without serialization only up to |num_funcs|. last points to the |
926 | | // final entry of |funcs|, or NULL if empty. |
927 | | CRYPTO_EX_DATA_FUNCS *funcs, *last; |
928 | | // num_funcs is the number of entries in |funcs|. |
929 | | CRYPTO_atomic_u32 num_funcs; |
930 | | // num_reserved is one if the ex_data index zero is reserved for legacy |
931 | | // |TYPE_get_app_data| functions. |
932 | | uint8_t num_reserved; |
933 | | } CRYPTO_EX_DATA_CLASS; |
934 | | |
935 | | #define CRYPTO_EX_DATA_CLASS_INIT {CRYPTO_MUTEX_INIT, NULL, NULL, 0, 0} |
936 | | #define CRYPTO_EX_DATA_CLASS_INIT_WITH_APP_DATA \ |
937 | | {CRYPTO_MUTEX_INIT, NULL, NULL, 0, 1} |
938 | | |
939 | | // CRYPTO_get_ex_new_index_ex allocates a new index for |ex_data_class|. Each |
940 | | // class of object should provide a wrapper function that uses the correct |
941 | | // |CRYPTO_EX_DATA_CLASS|. It returns the new index on success and -1 on error. |
942 | | OPENSSL_EXPORT int CRYPTO_get_ex_new_index_ex( |
943 | | CRYPTO_EX_DATA_CLASS *ex_data_class, long argl, void *argp, |
944 | | CRYPTO_EX_free *free_func); |
945 | | |
946 | | // CRYPTO_set_ex_data sets an extra data pointer on a given object. Each class |
947 | | // of object should provide a wrapper function. |
948 | | OPENSSL_EXPORT int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int index, void *val); |
949 | | |
950 | | // CRYPTO_get_ex_data returns an extra data pointer for a given object, or NULL |
951 | | // if no such index exists. Each class of object should provide a wrapper |
952 | | // function. |
953 | | OPENSSL_EXPORT void *CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int index); |
954 | | |
955 | | // CRYPTO_new_ex_data initialises a newly allocated |CRYPTO_EX_DATA|. |
956 | | OPENSSL_EXPORT void CRYPTO_new_ex_data(CRYPTO_EX_DATA *ad); |
957 | | |
958 | | // CRYPTO_free_ex_data frees |ad|, which is embedded inside |obj|, which is an |
959 | | // object of the given class. |
960 | | OPENSSL_EXPORT void CRYPTO_free_ex_data(CRYPTO_EX_DATA_CLASS *ex_data_class, |
961 | | void *obj, CRYPTO_EX_DATA *ad); |
962 | | |
963 | | |
964 | | // Endianness conversions. |
965 | | |
966 | | #if defined(__GNUC__) && __GNUC__ >= 2 |
967 | 0 | static inline uint16_t CRYPTO_bswap2(uint16_t x) { |
968 | 0 | return __builtin_bswap16(x); |
969 | 0 | } Unexecuted instantiation: a_int.c:CRYPTO_bswap2 Unexecuted instantiation: asn1_lib.c:CRYPTO_bswap2 Unexecuted instantiation: bcm.c:CRYPTO_bswap2 Unexecuted instantiation: cbb.c:CRYPTO_bswap2 Unexecuted instantiation: cbs.c:CRYPTO_bswap2 Unexecuted instantiation: convert.c:CRYPTO_bswap2 Unexecuted instantiation: crypto.c:CRYPTO_bswap2 Unexecuted instantiation: curve25519.c:CRYPTO_bswap2 Unexecuted instantiation: digest_extra.c:CRYPTO_bswap2 Unexecuted instantiation: dsa.c:CRYPTO_bswap2 Unexecuted instantiation: dsa_asn1.c:CRYPTO_bswap2 Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_bswap2 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_bswap2 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_bswap2 Unexecuted instantiation: e_des.c:CRYPTO_bswap2 Unexecuted instantiation: e_rc2.c:CRYPTO_bswap2 Unexecuted instantiation: e_rc4.c:CRYPTO_bswap2 Unexecuted instantiation: e_tls.c:CRYPTO_bswap2 Unexecuted instantiation: ecdh_extra.c:CRYPTO_bswap2 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_bswap2 Unexecuted instantiation: engine.c:CRYPTO_bswap2 Unexecuted instantiation: err.c:CRYPTO_bswap2 Unexecuted instantiation: evp.c:CRYPTO_bswap2 Unexecuted instantiation: evp_ctx.c:CRYPTO_bswap2 Unexecuted instantiation: ex_data.c:CRYPTO_bswap2 Unexecuted instantiation: file.c:CRYPTO_bswap2 Unexecuted instantiation: fork_detect.c:CRYPTO_bswap2 Unexecuted instantiation: forkunsafe.c:CRYPTO_bswap2 Unexecuted instantiation: md4.c:CRYPTO_bswap2 Unexecuted instantiation: md5.c:CRYPTO_bswap2 Unexecuted instantiation: mem.c:CRYPTO_bswap2 Unexecuted instantiation: obj.c:CRYPTO_bswap2 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_bswap2 Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_bswap2 Unexecuted instantiation: p_ec.c:CRYPTO_bswap2 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_bswap2 Unexecuted instantiation: p_hkdf.c:CRYPTO_bswap2 Unexecuted instantiation: p_rsa.c:CRYPTO_bswap2 Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_bswap2 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_bswap2 Unexecuted instantiation: pbkdf.c:CRYPTO_bswap2 Unexecuted instantiation: poly1305_vec.c:CRYPTO_bswap2 Unexecuted instantiation: refcount.c:CRYPTO_bswap2 Unexecuted instantiation: rsa_asn1.c:CRYPTO_bswap2 Unexecuted instantiation: rsa_crypt.c:CRYPTO_bswap2 Unexecuted instantiation: scrypt.c:CRYPTO_bswap2 Unexecuted instantiation: siphash.c:CRYPTO_bswap2 Unexecuted instantiation: stack.c:CRYPTO_bswap2 Unexecuted instantiation: thread_pthread.c:CRYPTO_bswap2 Unexecuted instantiation: tls_cbc.c:CRYPTO_bswap2 Unexecuted instantiation: urandom.c:CRYPTO_bswap2 Unexecuted instantiation: a_bitstr.c:CRYPTO_bswap2 Unexecuted instantiation: a_object.c:CRYPTO_bswap2 Unexecuted instantiation: asn1_compat.c:CRYPTO_bswap2 Unexecuted instantiation: bio.c:CRYPTO_bswap2 Unexecuted instantiation: blake2.c:CRYPTO_bswap2 Unexecuted instantiation: chacha.c:CRYPTO_bswap2 Unexecuted instantiation: des.c:CRYPTO_bswap2 Unexecuted instantiation: ec_asn1.c:CRYPTO_bswap2 Unexecuted instantiation: lhash.c:CRYPTO_bswap2 Unexecuted instantiation: tasn_dec.c:CRYPTO_bswap2 Unexecuted instantiation: tasn_enc.c:CRYPTO_bswap2 Unexecuted instantiation: tasn_new.c:CRYPTO_bswap2 Unexecuted instantiation: tasn_utl.c:CRYPTO_bswap2 Unexecuted instantiation: pool.c:CRYPTO_bswap2 Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_bswap2 Unexecuted instantiation: cpu_intel.c:CRYPTO_bswap2 |
970 | | |
971 | 10.8M | static inline uint32_t CRYPTO_bswap4(uint32_t x) { |
972 | 10.8M | return __builtin_bswap32(x); |
973 | 10.8M | } Unexecuted instantiation: a_int.c:CRYPTO_bswap4 Unexecuted instantiation: asn1_lib.c:CRYPTO_bswap4 Line | Count | Source | 971 | 10.8M | static inline uint32_t CRYPTO_bswap4(uint32_t x) { | 972 | 10.8M | return __builtin_bswap32(x); | 973 | 10.8M | } |
Unexecuted instantiation: cbb.c:CRYPTO_bswap4 Unexecuted instantiation: cbs.c:CRYPTO_bswap4 Unexecuted instantiation: convert.c:CRYPTO_bswap4 Unexecuted instantiation: crypto.c:CRYPTO_bswap4 Unexecuted instantiation: curve25519.c:CRYPTO_bswap4 Unexecuted instantiation: digest_extra.c:CRYPTO_bswap4 Unexecuted instantiation: dsa.c:CRYPTO_bswap4 Unexecuted instantiation: dsa_asn1.c:CRYPTO_bswap4 Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_bswap4 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_bswap4 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_bswap4 Unexecuted instantiation: e_des.c:CRYPTO_bswap4 Unexecuted instantiation: e_rc2.c:CRYPTO_bswap4 Unexecuted instantiation: e_rc4.c:CRYPTO_bswap4 Unexecuted instantiation: e_tls.c:CRYPTO_bswap4 Unexecuted instantiation: ecdh_extra.c:CRYPTO_bswap4 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_bswap4 Unexecuted instantiation: engine.c:CRYPTO_bswap4 Unexecuted instantiation: err.c:CRYPTO_bswap4 Unexecuted instantiation: evp.c:CRYPTO_bswap4 Unexecuted instantiation: evp_ctx.c:CRYPTO_bswap4 Unexecuted instantiation: ex_data.c:CRYPTO_bswap4 Unexecuted instantiation: file.c:CRYPTO_bswap4 Unexecuted instantiation: fork_detect.c:CRYPTO_bswap4 Unexecuted instantiation: forkunsafe.c:CRYPTO_bswap4 Unexecuted instantiation: md4.c:CRYPTO_bswap4 Unexecuted instantiation: md5.c:CRYPTO_bswap4 Unexecuted instantiation: mem.c:CRYPTO_bswap4 Unexecuted instantiation: obj.c:CRYPTO_bswap4 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_bswap4 Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_bswap4 Unexecuted instantiation: p_ec.c:CRYPTO_bswap4 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_bswap4 Unexecuted instantiation: p_hkdf.c:CRYPTO_bswap4 Unexecuted instantiation: p_rsa.c:CRYPTO_bswap4 Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_bswap4 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_bswap4 Unexecuted instantiation: pbkdf.c:CRYPTO_bswap4 Unexecuted instantiation: poly1305_vec.c:CRYPTO_bswap4 Unexecuted instantiation: refcount.c:CRYPTO_bswap4 Unexecuted instantiation: rsa_asn1.c:CRYPTO_bswap4 Unexecuted instantiation: rsa_crypt.c:CRYPTO_bswap4 Unexecuted instantiation: scrypt.c:CRYPTO_bswap4 Unexecuted instantiation: siphash.c:CRYPTO_bswap4 Unexecuted instantiation: stack.c:CRYPTO_bswap4 Unexecuted instantiation: thread_pthread.c:CRYPTO_bswap4 Unexecuted instantiation: tls_cbc.c:CRYPTO_bswap4 Unexecuted instantiation: urandom.c:CRYPTO_bswap4 Unexecuted instantiation: a_bitstr.c:CRYPTO_bswap4 Unexecuted instantiation: a_object.c:CRYPTO_bswap4 Unexecuted instantiation: asn1_compat.c:CRYPTO_bswap4 Unexecuted instantiation: bio.c:CRYPTO_bswap4 Unexecuted instantiation: blake2.c:CRYPTO_bswap4 Unexecuted instantiation: chacha.c:CRYPTO_bswap4 Unexecuted instantiation: des.c:CRYPTO_bswap4 Unexecuted instantiation: ec_asn1.c:CRYPTO_bswap4 Unexecuted instantiation: lhash.c:CRYPTO_bswap4 Unexecuted instantiation: tasn_dec.c:CRYPTO_bswap4 Unexecuted instantiation: tasn_enc.c:CRYPTO_bswap4 Unexecuted instantiation: tasn_new.c:CRYPTO_bswap4 Unexecuted instantiation: tasn_utl.c:CRYPTO_bswap4 Unexecuted instantiation: pool.c:CRYPTO_bswap4 Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_bswap4 Unexecuted instantiation: cpu_intel.c:CRYPTO_bswap4 |
974 | | |
975 | 2.45M | static inline uint64_t CRYPTO_bswap8(uint64_t x) { |
976 | 2.45M | return __builtin_bswap64(x); |
977 | 2.45M | } Unexecuted instantiation: a_int.c:CRYPTO_bswap8 Unexecuted instantiation: asn1_lib.c:CRYPTO_bswap8 Line | Count | Source | 975 | 2.45M | static inline uint64_t CRYPTO_bswap8(uint64_t x) { | 976 | 2.45M | return __builtin_bswap64(x); | 977 | 2.45M | } |
Unexecuted instantiation: cbb.c:CRYPTO_bswap8 Unexecuted instantiation: cbs.c:CRYPTO_bswap8 Unexecuted instantiation: convert.c:CRYPTO_bswap8 Unexecuted instantiation: crypto.c:CRYPTO_bswap8 Unexecuted instantiation: curve25519.c:CRYPTO_bswap8 Unexecuted instantiation: digest_extra.c:CRYPTO_bswap8 Unexecuted instantiation: dsa.c:CRYPTO_bswap8 Unexecuted instantiation: dsa_asn1.c:CRYPTO_bswap8 Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_bswap8 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_bswap8 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_bswap8 Unexecuted instantiation: e_des.c:CRYPTO_bswap8 Unexecuted instantiation: e_rc2.c:CRYPTO_bswap8 Unexecuted instantiation: e_rc4.c:CRYPTO_bswap8 Unexecuted instantiation: e_tls.c:CRYPTO_bswap8 Unexecuted instantiation: ecdh_extra.c:CRYPTO_bswap8 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_bswap8 Unexecuted instantiation: engine.c:CRYPTO_bswap8 Unexecuted instantiation: err.c:CRYPTO_bswap8 Unexecuted instantiation: evp.c:CRYPTO_bswap8 Unexecuted instantiation: evp_ctx.c:CRYPTO_bswap8 Unexecuted instantiation: ex_data.c:CRYPTO_bswap8 Unexecuted instantiation: file.c:CRYPTO_bswap8 Unexecuted instantiation: fork_detect.c:CRYPTO_bswap8 Unexecuted instantiation: forkunsafe.c:CRYPTO_bswap8 Unexecuted instantiation: md4.c:CRYPTO_bswap8 Unexecuted instantiation: md5.c:CRYPTO_bswap8 Unexecuted instantiation: mem.c:CRYPTO_bswap8 Unexecuted instantiation: obj.c:CRYPTO_bswap8 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_bswap8 Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_bswap8 Unexecuted instantiation: p_ec.c:CRYPTO_bswap8 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_bswap8 Unexecuted instantiation: p_hkdf.c:CRYPTO_bswap8 Unexecuted instantiation: p_rsa.c:CRYPTO_bswap8 Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_bswap8 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_bswap8 Unexecuted instantiation: pbkdf.c:CRYPTO_bswap8 Unexecuted instantiation: poly1305_vec.c:CRYPTO_bswap8 Unexecuted instantiation: refcount.c:CRYPTO_bswap8 Unexecuted instantiation: rsa_asn1.c:CRYPTO_bswap8 Unexecuted instantiation: rsa_crypt.c:CRYPTO_bswap8 Unexecuted instantiation: scrypt.c:CRYPTO_bswap8 Unexecuted instantiation: siphash.c:CRYPTO_bswap8 Unexecuted instantiation: stack.c:CRYPTO_bswap8 Unexecuted instantiation: thread_pthread.c:CRYPTO_bswap8 Unexecuted instantiation: tls_cbc.c:CRYPTO_bswap8 Unexecuted instantiation: urandom.c:CRYPTO_bswap8 Unexecuted instantiation: a_bitstr.c:CRYPTO_bswap8 Unexecuted instantiation: a_object.c:CRYPTO_bswap8 Unexecuted instantiation: asn1_compat.c:CRYPTO_bswap8 Unexecuted instantiation: bio.c:CRYPTO_bswap8 Unexecuted instantiation: blake2.c:CRYPTO_bswap8 Unexecuted instantiation: chacha.c:CRYPTO_bswap8 Unexecuted instantiation: des.c:CRYPTO_bswap8 Unexecuted instantiation: ec_asn1.c:CRYPTO_bswap8 Unexecuted instantiation: lhash.c:CRYPTO_bswap8 Unexecuted instantiation: tasn_dec.c:CRYPTO_bswap8 Unexecuted instantiation: tasn_enc.c:CRYPTO_bswap8 Unexecuted instantiation: tasn_new.c:CRYPTO_bswap8 Unexecuted instantiation: tasn_utl.c:CRYPTO_bswap8 Unexecuted instantiation: pool.c:CRYPTO_bswap8 Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_bswap8 Unexecuted instantiation: cpu_intel.c:CRYPTO_bswap8 |
978 | | #elif defined(_MSC_VER) |
979 | | OPENSSL_MSVC_PRAGMA(warning(push, 3)) |
980 | | #include <stdlib.h> |
981 | | OPENSSL_MSVC_PRAGMA(warning(pop)) |
982 | | #pragma intrinsic(_byteswap_uint64, _byteswap_ulong, _byteswap_ushort) |
983 | | static inline uint16_t CRYPTO_bswap2(uint16_t x) { |
984 | | return _byteswap_ushort(x); |
985 | | } |
986 | | |
987 | | static inline uint32_t CRYPTO_bswap4(uint32_t x) { |
988 | | return _byteswap_ulong(x); |
989 | | } |
990 | | |
991 | | static inline uint64_t CRYPTO_bswap8(uint64_t x) { |
992 | | return _byteswap_uint64(x); |
993 | | } |
994 | | #else |
995 | | static inline uint16_t CRYPTO_bswap2(uint16_t x) { |
996 | | return (x >> 8) | (x << 8); |
997 | | } |
998 | | |
999 | | static inline uint32_t CRYPTO_bswap4(uint32_t x) { |
1000 | | x = (x >> 16) | (x << 16); |
1001 | | x = ((x & 0xff00ff00) >> 8) | ((x & 0x00ff00ff) << 8); |
1002 | | return x; |
1003 | | } |
1004 | | |
1005 | | static inline uint64_t CRYPTO_bswap8(uint64_t x) { |
1006 | | return CRYPTO_bswap4(x >> 32) | (((uint64_t)CRYPTO_bswap4(x)) << 32); |
1007 | | } |
1008 | | #endif |
1009 | | |
1010 | | |
1011 | | // Language bug workarounds. |
1012 | | // |
1013 | | // Most C standard library functions are undefined if passed NULL, even when the |
1014 | | // corresponding length is zero. This gives them (and, in turn, all functions |
1015 | | // which call them) surprising behavior on empty arrays. Some compilers will |
1016 | | // miscompile code due to this rule. See also |
1017 | | // https://www.imperialviolet.org/2016/06/26/nonnull.html |
1018 | | // |
1019 | | // These wrapper functions behave the same as the corresponding C standard |
1020 | | // functions, but behave as expected when passed NULL if the length is zero. |
1021 | | // |
1022 | | // Note |OPENSSL_memcmp| is a different function from |CRYPTO_memcmp|. |
1023 | | |
1024 | | // C++ defines |memchr| as a const-correct overload. |
1025 | | #if defined(__cplusplus) |
1026 | | extern "C++" { |
1027 | | |
1028 | | static inline const void *OPENSSL_memchr(const void *s, int c, size_t n) { |
1029 | | if (n == 0) { |
1030 | | return NULL; |
1031 | | } |
1032 | | |
1033 | | return memchr(s, c, n); |
1034 | | } |
1035 | | |
1036 | | static inline void *OPENSSL_memchr(void *s, int c, size_t n) { |
1037 | | if (n == 0) { |
1038 | | return NULL; |
1039 | | } |
1040 | | |
1041 | | return memchr(s, c, n); |
1042 | | } |
1043 | | |
1044 | | } // extern "C++" |
1045 | | #else // __cplusplus |
1046 | | |
1047 | 0 | static inline void *OPENSSL_memchr(const void *s, int c, size_t n) { |
1048 | 0 | if (n == 0) { |
1049 | 0 | return NULL; |
1050 | 0 | } |
1051 | | |
1052 | 0 | return memchr(s, c, n); |
1053 | 0 | } Unexecuted instantiation: a_int.c:OPENSSL_memchr Unexecuted instantiation: asn1_lib.c:OPENSSL_memchr Unexecuted instantiation: bcm.c:OPENSSL_memchr Unexecuted instantiation: cbb.c:OPENSSL_memchr Unexecuted instantiation: cbs.c:OPENSSL_memchr Unexecuted instantiation: convert.c:OPENSSL_memchr Unexecuted instantiation: crypto.c:OPENSSL_memchr Unexecuted instantiation: curve25519.c:OPENSSL_memchr Unexecuted instantiation: digest_extra.c:OPENSSL_memchr Unexecuted instantiation: dsa.c:OPENSSL_memchr Unexecuted instantiation: dsa_asn1.c:OPENSSL_memchr Unexecuted instantiation: e_aesctrhmac.c:OPENSSL_memchr Unexecuted instantiation: e_aesgcmsiv.c:OPENSSL_memchr Unexecuted instantiation: e_chacha20poly1305.c:OPENSSL_memchr Unexecuted instantiation: e_des.c:OPENSSL_memchr Unexecuted instantiation: e_rc2.c:OPENSSL_memchr Unexecuted instantiation: e_rc4.c:OPENSSL_memchr Unexecuted instantiation: e_tls.c:OPENSSL_memchr Unexecuted instantiation: ecdh_extra.c:OPENSSL_memchr Unexecuted instantiation: ecdsa_asn1.c:OPENSSL_memchr Unexecuted instantiation: engine.c:OPENSSL_memchr Unexecuted instantiation: err.c:OPENSSL_memchr Unexecuted instantiation: evp.c:OPENSSL_memchr Unexecuted instantiation: evp_ctx.c:OPENSSL_memchr Unexecuted instantiation: ex_data.c:OPENSSL_memchr Unexecuted instantiation: file.c:OPENSSL_memchr Unexecuted instantiation: fork_detect.c:OPENSSL_memchr Unexecuted instantiation: forkunsafe.c:OPENSSL_memchr Unexecuted instantiation: md4.c:OPENSSL_memchr Unexecuted instantiation: md5.c:OPENSSL_memchr Unexecuted instantiation: mem.c:OPENSSL_memchr Unexecuted instantiation: obj.c:OPENSSL_memchr Unexecuted instantiation: p_dh_asn1.c:OPENSSL_memchr Unexecuted instantiation: p_dsa_asn1.c:OPENSSL_memchr Unexecuted instantiation: p_ec.c:OPENSSL_memchr Unexecuted instantiation: p_ed25519_asn1.c:OPENSSL_memchr Unexecuted instantiation: p_hkdf.c:OPENSSL_memchr Unexecuted instantiation: p_rsa.c:OPENSSL_memchr Unexecuted instantiation: p_rsa_asn1.c:OPENSSL_memchr Unexecuted instantiation: p_x25519_asn1.c:OPENSSL_memchr Unexecuted instantiation: pbkdf.c:OPENSSL_memchr Unexecuted instantiation: poly1305_vec.c:OPENSSL_memchr Unexecuted instantiation: refcount.c:OPENSSL_memchr Unexecuted instantiation: rsa_asn1.c:OPENSSL_memchr Unexecuted instantiation: rsa_crypt.c:OPENSSL_memchr Unexecuted instantiation: scrypt.c:OPENSSL_memchr Unexecuted instantiation: siphash.c:OPENSSL_memchr Unexecuted instantiation: stack.c:OPENSSL_memchr Unexecuted instantiation: thread_pthread.c:OPENSSL_memchr Unexecuted instantiation: tls_cbc.c:OPENSSL_memchr Unexecuted instantiation: urandom.c:OPENSSL_memchr Unexecuted instantiation: a_bitstr.c:OPENSSL_memchr Unexecuted instantiation: a_object.c:OPENSSL_memchr Unexecuted instantiation: asn1_compat.c:OPENSSL_memchr Unexecuted instantiation: bio.c:OPENSSL_memchr Unexecuted instantiation: blake2.c:OPENSSL_memchr Unexecuted instantiation: chacha.c:OPENSSL_memchr Unexecuted instantiation: des.c:OPENSSL_memchr Unexecuted instantiation: ec_asn1.c:OPENSSL_memchr Unexecuted instantiation: lhash.c:OPENSSL_memchr Unexecuted instantiation: tasn_dec.c:OPENSSL_memchr Unexecuted instantiation: tasn_enc.c:OPENSSL_memchr Unexecuted instantiation: tasn_new.c:OPENSSL_memchr Unexecuted instantiation: tasn_utl.c:OPENSSL_memchr Unexecuted instantiation: pool.c:OPENSSL_memchr Unexecuted instantiation: curve25519_64_adx.c:OPENSSL_memchr Unexecuted instantiation: cpu_intel.c:OPENSSL_memchr |
1054 | | |
1055 | | #endif // __cplusplus |
1056 | | |
1057 | 70 | static inline int OPENSSL_memcmp(const void *s1, const void *s2, size_t n) { |
1058 | 70 | if (n == 0) { |
1059 | 0 | return 0; |
1060 | 0 | } |
1061 | | |
1062 | 70 | return memcmp(s1, s2, n); |
1063 | 70 | } Unexecuted instantiation: a_int.c:OPENSSL_memcmp Unexecuted instantiation: asn1_lib.c:OPENSSL_memcmp Line | Count | Source | 1057 | 9 | static inline int OPENSSL_memcmp(const void *s1, const void *s2, size_t n) { | 1058 | 9 | if (n == 0) { | 1059 | 0 | return 0; | 1060 | 0 | } | 1061 | | | 1062 | 9 | return memcmp(s1, s2, n); | 1063 | 9 | } |
Unexecuted instantiation: cbb.c:OPENSSL_memcmp Unexecuted instantiation: cbs.c:OPENSSL_memcmp Unexecuted instantiation: convert.c:OPENSSL_memcmp Unexecuted instantiation: crypto.c:OPENSSL_memcmp Unexecuted instantiation: curve25519.c:OPENSSL_memcmp Unexecuted instantiation: digest_extra.c:OPENSSL_memcmp Line | Count | Source | 1057 | 61 | static inline int OPENSSL_memcmp(const void *s1, const void *s2, size_t n) { | 1058 | 61 | if (n == 0) { | 1059 | 0 | return 0; | 1060 | 0 | } | 1061 | | | 1062 | 61 | return memcmp(s1, s2, n); | 1063 | 61 | } |
Unexecuted instantiation: dsa_asn1.c:OPENSSL_memcmp Unexecuted instantiation: e_aesctrhmac.c:OPENSSL_memcmp Unexecuted instantiation: e_aesgcmsiv.c:OPENSSL_memcmp Unexecuted instantiation: e_chacha20poly1305.c:OPENSSL_memcmp Unexecuted instantiation: e_des.c:OPENSSL_memcmp Unexecuted instantiation: e_rc2.c:OPENSSL_memcmp Unexecuted instantiation: e_rc4.c:OPENSSL_memcmp Unexecuted instantiation: e_tls.c:OPENSSL_memcmp Unexecuted instantiation: ecdh_extra.c:OPENSSL_memcmp Unexecuted instantiation: ecdsa_asn1.c:OPENSSL_memcmp Unexecuted instantiation: engine.c:OPENSSL_memcmp Unexecuted instantiation: err.c:OPENSSL_memcmp Unexecuted instantiation: evp.c:OPENSSL_memcmp Unexecuted instantiation: evp_ctx.c:OPENSSL_memcmp Unexecuted instantiation: ex_data.c:OPENSSL_memcmp Unexecuted instantiation: file.c:OPENSSL_memcmp Unexecuted instantiation: fork_detect.c:OPENSSL_memcmp Unexecuted instantiation: forkunsafe.c:OPENSSL_memcmp Unexecuted instantiation: md4.c:OPENSSL_memcmp Unexecuted instantiation: md5.c:OPENSSL_memcmp Unexecuted instantiation: mem.c:OPENSSL_memcmp Unexecuted instantiation: obj.c:OPENSSL_memcmp Unexecuted instantiation: p_dh_asn1.c:OPENSSL_memcmp Unexecuted instantiation: p_dsa_asn1.c:OPENSSL_memcmp Unexecuted instantiation: p_ec.c:OPENSSL_memcmp Unexecuted instantiation: p_ed25519_asn1.c:OPENSSL_memcmp Unexecuted instantiation: p_hkdf.c:OPENSSL_memcmp Unexecuted instantiation: p_rsa.c:OPENSSL_memcmp Unexecuted instantiation: p_rsa_asn1.c:OPENSSL_memcmp Unexecuted instantiation: p_x25519_asn1.c:OPENSSL_memcmp Unexecuted instantiation: pbkdf.c:OPENSSL_memcmp Unexecuted instantiation: poly1305_vec.c:OPENSSL_memcmp Unexecuted instantiation: refcount.c:OPENSSL_memcmp Unexecuted instantiation: rsa_asn1.c:OPENSSL_memcmp Unexecuted instantiation: rsa_crypt.c:OPENSSL_memcmp Unexecuted instantiation: scrypt.c:OPENSSL_memcmp Unexecuted instantiation: siphash.c:OPENSSL_memcmp Unexecuted instantiation: stack.c:OPENSSL_memcmp Unexecuted instantiation: thread_pthread.c:OPENSSL_memcmp Unexecuted instantiation: tls_cbc.c:OPENSSL_memcmp Unexecuted instantiation: urandom.c:OPENSSL_memcmp Unexecuted instantiation: a_bitstr.c:OPENSSL_memcmp Unexecuted instantiation: a_object.c:OPENSSL_memcmp Unexecuted instantiation: asn1_compat.c:OPENSSL_memcmp Unexecuted instantiation: bio.c:OPENSSL_memcmp Unexecuted instantiation: blake2.c:OPENSSL_memcmp Unexecuted instantiation: chacha.c:OPENSSL_memcmp Unexecuted instantiation: des.c:OPENSSL_memcmp Unexecuted instantiation: ec_asn1.c:OPENSSL_memcmp Unexecuted instantiation: lhash.c:OPENSSL_memcmp Unexecuted instantiation: tasn_dec.c:OPENSSL_memcmp Unexecuted instantiation: tasn_enc.c:OPENSSL_memcmp Unexecuted instantiation: tasn_new.c:OPENSSL_memcmp Unexecuted instantiation: tasn_utl.c:OPENSSL_memcmp Unexecuted instantiation: pool.c:OPENSSL_memcmp Unexecuted instantiation: curve25519_64_adx.c:OPENSSL_memcmp Unexecuted instantiation: cpu_intel.c:OPENSSL_memcmp |
1064 | | |
1065 | 26.2M | static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) { |
1066 | 26.2M | if (n == 0) { |
1067 | 51.1k | return dst; |
1068 | 51.1k | } |
1069 | | |
1070 | 26.1M | return memcpy(dst, src, n); |
1071 | 26.2M | } Unexecuted instantiation: a_int.c:OPENSSL_memcpy Unexecuted instantiation: asn1_lib.c:OPENSSL_memcpy Line | Count | Source | 1065 | 14.0M | static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) { | 1066 | 14.0M | if (n == 0) { | 1067 | 48.8k | return dst; | 1068 | 48.8k | } | 1069 | | | 1070 | 13.9M | return memcpy(dst, src, n); | 1071 | 14.0M | } |
Unexecuted instantiation: cbb.c:OPENSSL_memcpy Unexecuted instantiation: cbs.c:OPENSSL_memcpy Unexecuted instantiation: convert.c:OPENSSL_memcpy Unexecuted instantiation: crypto.c:OPENSSL_memcpy curve25519.c:OPENSSL_memcpy Line | Count | Source | 1065 | 1 | static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) { | 1066 | 1 | if (n == 0) { | 1067 | 0 | return dst; | 1068 | 0 | } | 1069 | | | 1070 | 1 | return memcpy(dst, src, n); | 1071 | 1 | } |
Unexecuted instantiation: digest_extra.c:OPENSSL_memcpy Line | Count | Source | 1065 | 540 | static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) { | 1066 | 540 | if (n == 0) { | 1067 | 0 | return dst; | 1068 | 0 | } | 1069 | | | 1070 | 540 | return memcpy(dst, src, n); | 1071 | 540 | } |
Unexecuted instantiation: dsa_asn1.c:OPENSSL_memcpy e_aesctrhmac.c:OPENSSL_memcpy Line | Count | Source | 1065 | 1 | static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) { | 1066 | 1 | if (n == 0) { | 1067 | 0 | return dst; | 1068 | 0 | } | 1069 | | | 1070 | 1 | return memcpy(dst, src, n); | 1071 | 1 | } |
Unexecuted instantiation: e_aesgcmsiv.c:OPENSSL_memcpy e_chacha20poly1305.c:OPENSSL_memcpy Line | Count | Source | 1065 | 306 | static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) { | 1066 | 306 | if (n == 0) { | 1067 | 0 | return dst; | 1068 | 0 | } | 1069 | | | 1070 | 306 | return memcpy(dst, src, n); | 1071 | 306 | } |
Unexecuted instantiation: e_des.c:OPENSSL_memcpy Unexecuted instantiation: e_rc2.c:OPENSSL_memcpy Unexecuted instantiation: e_rc4.c:OPENSSL_memcpy Unexecuted instantiation: e_tls.c:OPENSSL_memcpy ecdh_extra.c:OPENSSL_memcpy Line | Count | Source | 1065 | 5 | static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) { | 1066 | 5 | if (n == 0) { | 1067 | 0 | return dst; | 1068 | 0 | } | 1069 | | | 1070 | 5 | return memcpy(dst, src, n); | 1071 | 5 | } |
Unexecuted instantiation: ecdsa_asn1.c:OPENSSL_memcpy Unexecuted instantiation: engine.c:OPENSSL_memcpy Unexecuted instantiation: err.c:OPENSSL_memcpy Unexecuted instantiation: evp.c:OPENSSL_memcpy Unexecuted instantiation: evp_ctx.c:OPENSSL_memcpy Unexecuted instantiation: ex_data.c:OPENSSL_memcpy Unexecuted instantiation: file.c:OPENSSL_memcpy Unexecuted instantiation: fork_detect.c:OPENSSL_memcpy Unexecuted instantiation: forkunsafe.c:OPENSSL_memcpy Line | Count | Source | 1065 | 1.78M | static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) { | 1066 | 1.78M | if (n == 0) { | 1067 | 0 | return dst; | 1068 | 0 | } | 1069 | | | 1070 | 1.78M | return memcpy(dst, src, n); | 1071 | 1.78M | } |
Line | Count | Source | 1065 | 2.34M | static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) { | 1066 | 2.34M | if (n == 0) { | 1067 | 0 | return dst; | 1068 | 0 | } | 1069 | | | 1070 | 2.34M | return memcpy(dst, src, n); | 1071 | 2.34M | } |
Line | Count | Source | 1065 | 31.4k | static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) { | 1066 | 31.4k | if (n == 0) { | 1067 | 0 | return dst; | 1068 | 0 | } | 1069 | | | 1070 | 31.4k | return memcpy(dst, src, n); | 1071 | 31.4k | } |
Unexecuted instantiation: obj.c:OPENSSL_memcpy Unexecuted instantiation: p_dh_asn1.c:OPENSSL_memcpy Unexecuted instantiation: p_dsa_asn1.c:OPENSSL_memcpy Unexecuted instantiation: p_ec.c:OPENSSL_memcpy Unexecuted instantiation: p_ed25519_asn1.c:OPENSSL_memcpy Unexecuted instantiation: p_hkdf.c:OPENSSL_memcpy Unexecuted instantiation: p_rsa.c:OPENSSL_memcpy Unexecuted instantiation: p_rsa_asn1.c:OPENSSL_memcpy Unexecuted instantiation: p_x25519_asn1.c:OPENSSL_memcpy Line | Count | Source | 1065 | 7.22k | static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) { | 1066 | 7.22k | if (n == 0) { | 1067 | 0 | return dst; | 1068 | 0 | } | 1069 | | | 1070 | 7.22k | return memcpy(dst, src, n); | 1071 | 7.22k | } |
poly1305_vec.c:OPENSSL_memcpy Line | Count | Source | 1065 | 2.35k | static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) { | 1066 | 2.35k | if (n == 0) { | 1067 | 31 | return dst; | 1068 | 31 | } | 1069 | | | 1070 | 2.32k | return memcpy(dst, src, n); | 1071 | 2.35k | } |
Unexecuted instantiation: refcount.c:OPENSSL_memcpy Unexecuted instantiation: rsa_asn1.c:OPENSSL_memcpy Unexecuted instantiation: rsa_crypt.c:OPENSSL_memcpy Line | Count | Source | 1065 | 23.5k | static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) { | 1066 | 23.5k | if (n == 0) { | 1067 | 0 | return dst; | 1068 | 0 | } | 1069 | | | 1070 | 23.5k | return memcpy(dst, src, n); | 1071 | 23.5k | } |
Unexecuted instantiation: siphash.c:OPENSSL_memcpy Unexecuted instantiation: stack.c:OPENSSL_memcpy Unexecuted instantiation: thread_pthread.c:OPENSSL_memcpy Unexecuted instantiation: tls_cbc.c:OPENSSL_memcpy Unexecuted instantiation: urandom.c:OPENSSL_memcpy Unexecuted instantiation: a_bitstr.c:OPENSSL_memcpy Unexecuted instantiation: a_object.c:OPENSSL_memcpy Unexecuted instantiation: asn1_compat.c:OPENSSL_memcpy Unexecuted instantiation: bio.c:OPENSSL_memcpy Line | Count | Source | 1065 | 7.97M | static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) { | 1066 | 7.97M | if (n == 0) { | 1067 | 2.26k | return dst; | 1068 | 2.26k | } | 1069 | | | 1070 | 7.96M | return memcpy(dst, src, n); | 1071 | 7.97M | } |
Line | Count | Source | 1065 | 9.72k | static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) { | 1066 | 9.72k | if (n == 0) { | 1067 | 0 | return dst; | 1068 | 0 | } | 1069 | | | 1070 | 9.72k | return memcpy(dst, src, n); | 1071 | 9.72k | } |
Unexecuted instantiation: des.c:OPENSSL_memcpy Unexecuted instantiation: ec_asn1.c:OPENSSL_memcpy Unexecuted instantiation: lhash.c:OPENSSL_memcpy Unexecuted instantiation: tasn_dec.c:OPENSSL_memcpy Unexecuted instantiation: tasn_enc.c:OPENSSL_memcpy Unexecuted instantiation: tasn_new.c:OPENSSL_memcpy Unexecuted instantiation: tasn_utl.c:OPENSSL_memcpy Unexecuted instantiation: pool.c:OPENSSL_memcpy Unexecuted instantiation: curve25519_64_adx.c:OPENSSL_memcpy Unexecuted instantiation: cpu_intel.c:OPENSSL_memcpy |
1072 | | |
1073 | 25.0k | static inline void *OPENSSL_memmove(void *dst, const void *src, size_t n) { |
1074 | 25.0k | if (n == 0) { |
1075 | 0 | return dst; |
1076 | 0 | } |
1077 | | |
1078 | 25.0k | return memmove(dst, src, n); |
1079 | 25.0k | } Unexecuted instantiation: a_int.c:OPENSSL_memmove Unexecuted instantiation: asn1_lib.c:OPENSSL_memmove Line | Count | Source | 1073 | 24.6k | static inline void *OPENSSL_memmove(void *dst, const void *src, size_t n) { | 1074 | 24.6k | if (n == 0) { | 1075 | 0 | return dst; | 1076 | 0 | } | 1077 | | | 1078 | 24.6k | return memmove(dst, src, n); | 1079 | 24.6k | } |
Line | Count | Source | 1073 | 168 | static inline void *OPENSSL_memmove(void *dst, const void *src, size_t n) { | 1074 | 168 | if (n == 0) { | 1075 | 0 | return dst; | 1076 | 0 | } | 1077 | | | 1078 | 168 | return memmove(dst, src, n); | 1079 | 168 | } |
Unexecuted instantiation: cbs.c:OPENSSL_memmove Unexecuted instantiation: convert.c:OPENSSL_memmove Unexecuted instantiation: crypto.c:OPENSSL_memmove curve25519.c:OPENSSL_memmove Line | Count | Source | 1073 | 323 | static inline void *OPENSSL_memmove(void *dst, const void *src, size_t n) { | 1074 | 323 | if (n == 0) { | 1075 | 0 | return dst; | 1076 | 0 | } | 1077 | | | 1078 | 323 | return memmove(dst, src, n); | 1079 | 323 | } |
Unexecuted instantiation: digest_extra.c:OPENSSL_memmove Unexecuted instantiation: dsa.c:OPENSSL_memmove Unexecuted instantiation: dsa_asn1.c:OPENSSL_memmove Unexecuted instantiation: e_aesctrhmac.c:OPENSSL_memmove Unexecuted instantiation: e_aesgcmsiv.c:OPENSSL_memmove Unexecuted instantiation: e_chacha20poly1305.c:OPENSSL_memmove Unexecuted instantiation: e_des.c:OPENSSL_memmove Unexecuted instantiation: e_rc2.c:OPENSSL_memmove Unexecuted instantiation: e_rc4.c:OPENSSL_memmove Unexecuted instantiation: e_tls.c:OPENSSL_memmove Unexecuted instantiation: ecdh_extra.c:OPENSSL_memmove Unexecuted instantiation: ecdsa_asn1.c:OPENSSL_memmove Unexecuted instantiation: engine.c:OPENSSL_memmove Unexecuted instantiation: err.c:OPENSSL_memmove Unexecuted instantiation: evp.c:OPENSSL_memmove Unexecuted instantiation: evp_ctx.c:OPENSSL_memmove Unexecuted instantiation: ex_data.c:OPENSSL_memmove Unexecuted instantiation: file.c:OPENSSL_memmove Unexecuted instantiation: fork_detect.c:OPENSSL_memmove Unexecuted instantiation: forkunsafe.c:OPENSSL_memmove Unexecuted instantiation: md4.c:OPENSSL_memmove Unexecuted instantiation: md5.c:OPENSSL_memmove Unexecuted instantiation: mem.c:OPENSSL_memmove Unexecuted instantiation: obj.c:OPENSSL_memmove Unexecuted instantiation: p_dh_asn1.c:OPENSSL_memmove Unexecuted instantiation: p_dsa_asn1.c:OPENSSL_memmove Unexecuted instantiation: p_ec.c:OPENSSL_memmove Unexecuted instantiation: p_ed25519_asn1.c:OPENSSL_memmove Unexecuted instantiation: p_hkdf.c:OPENSSL_memmove Unexecuted instantiation: p_rsa.c:OPENSSL_memmove Unexecuted instantiation: p_rsa_asn1.c:OPENSSL_memmove Unexecuted instantiation: p_x25519_asn1.c:OPENSSL_memmove Unexecuted instantiation: pbkdf.c:OPENSSL_memmove Unexecuted instantiation: poly1305_vec.c:OPENSSL_memmove Unexecuted instantiation: refcount.c:OPENSSL_memmove Unexecuted instantiation: rsa_asn1.c:OPENSSL_memmove Unexecuted instantiation: rsa_crypt.c:OPENSSL_memmove Unexecuted instantiation: scrypt.c:OPENSSL_memmove Unexecuted instantiation: siphash.c:OPENSSL_memmove Unexecuted instantiation: stack.c:OPENSSL_memmove Unexecuted instantiation: thread_pthread.c:OPENSSL_memmove Unexecuted instantiation: tls_cbc.c:OPENSSL_memmove Unexecuted instantiation: urandom.c:OPENSSL_memmove Unexecuted instantiation: a_bitstr.c:OPENSSL_memmove Unexecuted instantiation: a_object.c:OPENSSL_memmove Unexecuted instantiation: asn1_compat.c:OPENSSL_memmove Unexecuted instantiation: bio.c:OPENSSL_memmove Unexecuted instantiation: blake2.c:OPENSSL_memmove Unexecuted instantiation: chacha.c:OPENSSL_memmove Unexecuted instantiation: des.c:OPENSSL_memmove Unexecuted instantiation: ec_asn1.c:OPENSSL_memmove Unexecuted instantiation: lhash.c:OPENSSL_memmove Unexecuted instantiation: tasn_dec.c:OPENSSL_memmove Unexecuted instantiation: tasn_enc.c:OPENSSL_memmove Unexecuted instantiation: tasn_new.c:OPENSSL_memmove Unexecuted instantiation: tasn_utl.c:OPENSSL_memmove Unexecuted instantiation: pool.c:OPENSSL_memmove Unexecuted instantiation: curve25519_64_adx.c:OPENSSL_memmove Unexecuted instantiation: cpu_intel.c:OPENSSL_memmove |
1080 | | |
1081 | 7.70M | static inline void *OPENSSL_memset(void *dst, int c, size_t n) { |
1082 | 7.70M | if (n == 0) { |
1083 | 2.58M | return dst; |
1084 | 2.58M | } |
1085 | | |
1086 | 5.12M | return memset(dst, c, n); |
1087 | 7.70M | } Unexecuted instantiation: a_int.c:OPENSSL_memset Unexecuted instantiation: asn1_lib.c:OPENSSL_memset Line | Count | Source | 1081 | 6.37M | static inline void *OPENSSL_memset(void *dst, int c, size_t n) { | 1082 | 6.37M | if (n == 0) { | 1083 | 2.58M | return dst; | 1084 | 2.58M | } | 1085 | | | 1086 | 3.79M | return memset(dst, c, n); | 1087 | 6.37M | } |
Line | Count | Source | 1081 | 1.41k | static inline void *OPENSSL_memset(void *dst, int c, size_t n) { | 1082 | 1.41k | if (n == 0) { | 1083 | 0 | return dst; | 1084 | 0 | } | 1085 | | | 1086 | 1.41k | return memset(dst, c, n); | 1087 | 1.41k | } |
Unexecuted instantiation: cbs.c:OPENSSL_memset Unexecuted instantiation: convert.c:OPENSSL_memset Unexecuted instantiation: crypto.c:OPENSSL_memset curve25519.c:OPENSSL_memset Line | Count | Source | 1081 | 4 | static inline void *OPENSSL_memset(void *dst, int c, size_t n) { | 1082 | 4 | if (n == 0) { | 1083 | 0 | return dst; | 1084 | 0 | } | 1085 | | | 1086 | 4 | return memset(dst, c, n); | 1087 | 4 | } |
Unexecuted instantiation: digest_extra.c:OPENSSL_memset Unexecuted instantiation: dsa.c:OPENSSL_memset Unexecuted instantiation: dsa_asn1.c:OPENSSL_memset e_aesctrhmac.c:OPENSSL_memset Line | Count | Source | 1081 | 2 | static inline void *OPENSSL_memset(void *dst, int c, size_t n) { | 1082 | 2 | if (n == 0) { | 1083 | 0 | return dst; | 1084 | 0 | } | 1085 | | | 1086 | 2 | return memset(dst, c, n); | 1087 | 2 | } |
Unexecuted instantiation: e_aesgcmsiv.c:OPENSSL_memset e_chacha20poly1305.c:OPENSSL_memset Line | Count | Source | 1081 | 152 | static inline void *OPENSSL_memset(void *dst, int c, size_t n) { | 1082 | 152 | if (n == 0) { | 1083 | 0 | return dst; | 1084 | 0 | } | 1085 | | | 1086 | 152 | return memset(dst, c, n); | 1087 | 152 | } |
Unexecuted instantiation: e_des.c:OPENSSL_memset Unexecuted instantiation: e_rc2.c:OPENSSL_memset Unexecuted instantiation: e_rc4.c:OPENSSL_memset Unexecuted instantiation: e_tls.c:OPENSSL_memset Unexecuted instantiation: ecdh_extra.c:OPENSSL_memset Unexecuted instantiation: ecdsa_asn1.c:OPENSSL_memset Unexecuted instantiation: engine.c:OPENSSL_memset Line | Count | Source | 1081 | 5.55k | static inline void *OPENSSL_memset(void *dst, int c, size_t n) { | 1082 | 5.55k | if (n == 0) { | 1083 | 0 | return dst; | 1084 | 0 | } | 1085 | | | 1086 | 5.55k | return memset(dst, c, n); | 1087 | 5.55k | } |
Unexecuted instantiation: evp.c:OPENSSL_memset Unexecuted instantiation: evp_ctx.c:OPENSSL_memset Unexecuted instantiation: ex_data.c:OPENSSL_memset Unexecuted instantiation: file.c:OPENSSL_memset Unexecuted instantiation: fork_detect.c:OPENSSL_memset Unexecuted instantiation: forkunsafe.c:OPENSSL_memset Line | Count | Source | 1081 | 7.08k | static inline void *OPENSSL_memset(void *dst, int c, size_t n) { | 1082 | 7.08k | if (n == 0) { | 1083 | 51 | return dst; | 1084 | 51 | } | 1085 | | | 1086 | 7.03k | return memset(dst, c, n); | 1087 | 7.08k | } |
Line | Count | Source | 1081 | 12.0k | static inline void *OPENSSL_memset(void *dst, int c, size_t n) { | 1082 | 12.0k | if (n == 0) { | 1083 | 84 | return dst; | 1084 | 84 | } | 1085 | | | 1086 | 12.0k | return memset(dst, c, n); | 1087 | 12.0k | } |
Line | Count | Source | 1081 | 1.30M | static inline void *OPENSSL_memset(void *dst, int c, size_t n) { | 1082 | 1.30M | if (n == 0) { | 1083 | 0 | return dst; | 1084 | 0 | } | 1085 | | | 1086 | 1.30M | return memset(dst, c, n); | 1087 | 1.30M | } |
Unexecuted instantiation: obj.c:OPENSSL_memset Unexecuted instantiation: p_dh_asn1.c:OPENSSL_memset Unexecuted instantiation: p_dsa_asn1.c:OPENSSL_memset Unexecuted instantiation: p_ec.c:OPENSSL_memset Unexecuted instantiation: p_ed25519_asn1.c:OPENSSL_memset Unexecuted instantiation: p_hkdf.c:OPENSSL_memset Unexecuted instantiation: p_rsa.c:OPENSSL_memset Unexecuted instantiation: p_rsa_asn1.c:OPENSSL_memset Unexecuted instantiation: p_x25519_asn1.c:OPENSSL_memset Unexecuted instantiation: pbkdf.c:OPENSSL_memset Unexecuted instantiation: poly1305_vec.c:OPENSSL_memset Unexecuted instantiation: refcount.c:OPENSSL_memset Unexecuted instantiation: rsa_asn1.c:OPENSSL_memset Unexecuted instantiation: rsa_crypt.c:OPENSSL_memset Unexecuted instantiation: scrypt.c:OPENSSL_memset Unexecuted instantiation: siphash.c:OPENSSL_memset Unexecuted instantiation: stack.c:OPENSSL_memset thread_pthread.c:OPENSSL_memset Line | Count | Source | 1081 | 2 | static inline void *OPENSSL_memset(void *dst, int c, size_t n) { | 1082 | 2 | if (n == 0) { | 1083 | 0 | return dst; | 1084 | 0 | } | 1085 | | | 1086 | 2 | return memset(dst, c, n); | 1087 | 2 | } |
Unexecuted instantiation: tls_cbc.c:OPENSSL_memset Unexecuted instantiation: urandom.c:OPENSSL_memset Unexecuted instantiation: a_bitstr.c:OPENSSL_memset Unexecuted instantiation: a_object.c:OPENSSL_memset Unexecuted instantiation: asn1_compat.c:OPENSSL_memset Unexecuted instantiation: bio.c:OPENSSL_memset Line | Count | Source | 1081 | 2.39k | static inline void *OPENSSL_memset(void *dst, int c, size_t n) { | 1082 | 2.39k | if (n == 0) { | 1083 | 1 | return dst; | 1084 | 1 | } | 1085 | | | 1086 | 2.39k | return memset(dst, c, n); | 1087 | 2.39k | } |
Unexecuted instantiation: chacha.c:OPENSSL_memset Unexecuted instantiation: des.c:OPENSSL_memset Unexecuted instantiation: ec_asn1.c:OPENSSL_memset Unexecuted instantiation: lhash.c:OPENSSL_memset Unexecuted instantiation: tasn_dec.c:OPENSSL_memset Unexecuted instantiation: tasn_enc.c:OPENSSL_memset Unexecuted instantiation: tasn_new.c:OPENSSL_memset Unexecuted instantiation: tasn_utl.c:OPENSSL_memset Unexecuted instantiation: pool.c:OPENSSL_memset Unexecuted instantiation: curve25519_64_adx.c:OPENSSL_memset Unexecuted instantiation: cpu_intel.c:OPENSSL_memset |
1088 | | |
1089 | | |
1090 | | // Loads and stores. |
1091 | | // |
1092 | | // The following functions load and store sized integers with the specified |
1093 | | // endianness. They use |memcpy|, and so avoid alignment or strict aliasing |
1094 | | // requirements on the input and output pointers. |
1095 | | |
1096 | 0 | static inline uint16_t CRYPTO_load_u16_be(const void *in) { |
1097 | 0 | uint16_t v; |
1098 | 0 | OPENSSL_memcpy(&v, in, sizeof(v)); |
1099 | 0 | return CRYPTO_bswap2(v); |
1100 | 0 | } Unexecuted instantiation: a_int.c:CRYPTO_load_u16_be Unexecuted instantiation: asn1_lib.c:CRYPTO_load_u16_be Unexecuted instantiation: bcm.c:CRYPTO_load_u16_be Unexecuted instantiation: cbb.c:CRYPTO_load_u16_be Unexecuted instantiation: cbs.c:CRYPTO_load_u16_be Unexecuted instantiation: convert.c:CRYPTO_load_u16_be Unexecuted instantiation: crypto.c:CRYPTO_load_u16_be Unexecuted instantiation: curve25519.c:CRYPTO_load_u16_be Unexecuted instantiation: digest_extra.c:CRYPTO_load_u16_be Unexecuted instantiation: dsa.c:CRYPTO_load_u16_be Unexecuted instantiation: dsa_asn1.c:CRYPTO_load_u16_be Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_load_u16_be Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_load_u16_be Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_load_u16_be Unexecuted instantiation: e_des.c:CRYPTO_load_u16_be Unexecuted instantiation: e_rc2.c:CRYPTO_load_u16_be Unexecuted instantiation: e_rc4.c:CRYPTO_load_u16_be Unexecuted instantiation: e_tls.c:CRYPTO_load_u16_be Unexecuted instantiation: ecdh_extra.c:CRYPTO_load_u16_be Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_load_u16_be Unexecuted instantiation: engine.c:CRYPTO_load_u16_be Unexecuted instantiation: err.c:CRYPTO_load_u16_be Unexecuted instantiation: evp.c:CRYPTO_load_u16_be Unexecuted instantiation: evp_ctx.c:CRYPTO_load_u16_be Unexecuted instantiation: ex_data.c:CRYPTO_load_u16_be Unexecuted instantiation: file.c:CRYPTO_load_u16_be Unexecuted instantiation: fork_detect.c:CRYPTO_load_u16_be Unexecuted instantiation: forkunsafe.c:CRYPTO_load_u16_be Unexecuted instantiation: md4.c:CRYPTO_load_u16_be Unexecuted instantiation: md5.c:CRYPTO_load_u16_be Unexecuted instantiation: mem.c:CRYPTO_load_u16_be Unexecuted instantiation: obj.c:CRYPTO_load_u16_be Unexecuted instantiation: p_dh_asn1.c:CRYPTO_load_u16_be Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_load_u16_be Unexecuted instantiation: p_ec.c:CRYPTO_load_u16_be Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_load_u16_be Unexecuted instantiation: p_hkdf.c:CRYPTO_load_u16_be Unexecuted instantiation: p_rsa.c:CRYPTO_load_u16_be Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_load_u16_be Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_load_u16_be Unexecuted instantiation: pbkdf.c:CRYPTO_load_u16_be Unexecuted instantiation: poly1305_vec.c:CRYPTO_load_u16_be Unexecuted instantiation: refcount.c:CRYPTO_load_u16_be Unexecuted instantiation: rsa_asn1.c:CRYPTO_load_u16_be Unexecuted instantiation: rsa_crypt.c:CRYPTO_load_u16_be Unexecuted instantiation: scrypt.c:CRYPTO_load_u16_be Unexecuted instantiation: siphash.c:CRYPTO_load_u16_be Unexecuted instantiation: stack.c:CRYPTO_load_u16_be Unexecuted instantiation: thread_pthread.c:CRYPTO_load_u16_be Unexecuted instantiation: tls_cbc.c:CRYPTO_load_u16_be Unexecuted instantiation: urandom.c:CRYPTO_load_u16_be Unexecuted instantiation: a_bitstr.c:CRYPTO_load_u16_be Unexecuted instantiation: a_object.c:CRYPTO_load_u16_be Unexecuted instantiation: asn1_compat.c:CRYPTO_load_u16_be Unexecuted instantiation: bio.c:CRYPTO_load_u16_be Unexecuted instantiation: blake2.c:CRYPTO_load_u16_be Unexecuted instantiation: chacha.c:CRYPTO_load_u16_be Unexecuted instantiation: des.c:CRYPTO_load_u16_be Unexecuted instantiation: ec_asn1.c:CRYPTO_load_u16_be Unexecuted instantiation: lhash.c:CRYPTO_load_u16_be Unexecuted instantiation: tasn_dec.c:CRYPTO_load_u16_be Unexecuted instantiation: tasn_enc.c:CRYPTO_load_u16_be Unexecuted instantiation: tasn_new.c:CRYPTO_load_u16_be Unexecuted instantiation: tasn_utl.c:CRYPTO_load_u16_be Unexecuted instantiation: pool.c:CRYPTO_load_u16_be Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_load_u16_be Unexecuted instantiation: cpu_intel.c:CRYPTO_load_u16_be |
1101 | | |
1102 | 0 | static inline void CRYPTO_store_u16_be(void *out, uint16_t v) { |
1103 | 0 | v = CRYPTO_bswap2(v); |
1104 | 0 | OPENSSL_memcpy(out, &v, sizeof(v)); |
1105 | 0 | } Unexecuted instantiation: a_int.c:CRYPTO_store_u16_be Unexecuted instantiation: asn1_lib.c:CRYPTO_store_u16_be Unexecuted instantiation: bcm.c:CRYPTO_store_u16_be Unexecuted instantiation: cbb.c:CRYPTO_store_u16_be Unexecuted instantiation: cbs.c:CRYPTO_store_u16_be Unexecuted instantiation: convert.c:CRYPTO_store_u16_be Unexecuted instantiation: crypto.c:CRYPTO_store_u16_be Unexecuted instantiation: curve25519.c:CRYPTO_store_u16_be Unexecuted instantiation: digest_extra.c:CRYPTO_store_u16_be Unexecuted instantiation: dsa.c:CRYPTO_store_u16_be Unexecuted instantiation: dsa_asn1.c:CRYPTO_store_u16_be Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_store_u16_be Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_store_u16_be Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_store_u16_be Unexecuted instantiation: e_des.c:CRYPTO_store_u16_be Unexecuted instantiation: e_rc2.c:CRYPTO_store_u16_be Unexecuted instantiation: e_rc4.c:CRYPTO_store_u16_be Unexecuted instantiation: e_tls.c:CRYPTO_store_u16_be Unexecuted instantiation: ecdh_extra.c:CRYPTO_store_u16_be Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_store_u16_be Unexecuted instantiation: engine.c:CRYPTO_store_u16_be Unexecuted instantiation: err.c:CRYPTO_store_u16_be Unexecuted instantiation: evp.c:CRYPTO_store_u16_be Unexecuted instantiation: evp_ctx.c:CRYPTO_store_u16_be Unexecuted instantiation: ex_data.c:CRYPTO_store_u16_be Unexecuted instantiation: file.c:CRYPTO_store_u16_be Unexecuted instantiation: fork_detect.c:CRYPTO_store_u16_be Unexecuted instantiation: forkunsafe.c:CRYPTO_store_u16_be Unexecuted instantiation: md4.c:CRYPTO_store_u16_be Unexecuted instantiation: md5.c:CRYPTO_store_u16_be Unexecuted instantiation: mem.c:CRYPTO_store_u16_be Unexecuted instantiation: obj.c:CRYPTO_store_u16_be Unexecuted instantiation: p_dh_asn1.c:CRYPTO_store_u16_be Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_store_u16_be Unexecuted instantiation: p_ec.c:CRYPTO_store_u16_be Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_store_u16_be Unexecuted instantiation: p_hkdf.c:CRYPTO_store_u16_be Unexecuted instantiation: p_rsa.c:CRYPTO_store_u16_be Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_store_u16_be Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_store_u16_be Unexecuted instantiation: pbkdf.c:CRYPTO_store_u16_be Unexecuted instantiation: poly1305_vec.c:CRYPTO_store_u16_be Unexecuted instantiation: refcount.c:CRYPTO_store_u16_be Unexecuted instantiation: rsa_asn1.c:CRYPTO_store_u16_be Unexecuted instantiation: rsa_crypt.c:CRYPTO_store_u16_be Unexecuted instantiation: scrypt.c:CRYPTO_store_u16_be Unexecuted instantiation: siphash.c:CRYPTO_store_u16_be Unexecuted instantiation: stack.c:CRYPTO_store_u16_be Unexecuted instantiation: thread_pthread.c:CRYPTO_store_u16_be Unexecuted instantiation: tls_cbc.c:CRYPTO_store_u16_be Unexecuted instantiation: urandom.c:CRYPTO_store_u16_be Unexecuted instantiation: a_bitstr.c:CRYPTO_store_u16_be Unexecuted instantiation: a_object.c:CRYPTO_store_u16_be Unexecuted instantiation: asn1_compat.c:CRYPTO_store_u16_be Unexecuted instantiation: bio.c:CRYPTO_store_u16_be Unexecuted instantiation: blake2.c:CRYPTO_store_u16_be Unexecuted instantiation: chacha.c:CRYPTO_store_u16_be Unexecuted instantiation: des.c:CRYPTO_store_u16_be Unexecuted instantiation: ec_asn1.c:CRYPTO_store_u16_be Unexecuted instantiation: lhash.c:CRYPTO_store_u16_be Unexecuted instantiation: tasn_dec.c:CRYPTO_store_u16_be Unexecuted instantiation: tasn_enc.c:CRYPTO_store_u16_be Unexecuted instantiation: tasn_new.c:CRYPTO_store_u16_be Unexecuted instantiation: tasn_utl.c:CRYPTO_store_u16_be Unexecuted instantiation: pool.c:CRYPTO_store_u16_be Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_store_u16_be Unexecuted instantiation: cpu_intel.c:CRYPTO_store_u16_be |
1106 | | |
1107 | 4.06M | static inline uint32_t CRYPTO_load_u32_le(const void *in) { |
1108 | 4.06M | uint32_t v; |
1109 | 4.06M | OPENSSL_memcpy(&v, in, sizeof(v)); |
1110 | 4.06M | return v; |
1111 | 4.06M | } Unexecuted instantiation: a_int.c:CRYPTO_load_u32_le Unexecuted instantiation: asn1_lib.c:CRYPTO_load_u32_le Unexecuted instantiation: bcm.c:CRYPTO_load_u32_le Unexecuted instantiation: cbb.c:CRYPTO_load_u32_le Unexecuted instantiation: cbs.c:CRYPTO_load_u32_le Unexecuted instantiation: convert.c:CRYPTO_load_u32_le Unexecuted instantiation: crypto.c:CRYPTO_load_u32_le Unexecuted instantiation: curve25519.c:CRYPTO_load_u32_le Unexecuted instantiation: digest_extra.c:CRYPTO_load_u32_le Unexecuted instantiation: dsa.c:CRYPTO_load_u32_le Unexecuted instantiation: dsa_asn1.c:CRYPTO_load_u32_le Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_load_u32_le Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_load_u32_le Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_load_u32_le Unexecuted instantiation: e_des.c:CRYPTO_load_u32_le Unexecuted instantiation: e_rc2.c:CRYPTO_load_u32_le Unexecuted instantiation: e_rc4.c:CRYPTO_load_u32_le Unexecuted instantiation: e_tls.c:CRYPTO_load_u32_le Unexecuted instantiation: ecdh_extra.c:CRYPTO_load_u32_le Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_load_u32_le Unexecuted instantiation: engine.c:CRYPTO_load_u32_le Unexecuted instantiation: err.c:CRYPTO_load_u32_le Unexecuted instantiation: evp.c:CRYPTO_load_u32_le Unexecuted instantiation: evp_ctx.c:CRYPTO_load_u32_le Unexecuted instantiation: ex_data.c:CRYPTO_load_u32_le Unexecuted instantiation: file.c:CRYPTO_load_u32_le Unexecuted instantiation: fork_detect.c:CRYPTO_load_u32_le Unexecuted instantiation: forkunsafe.c:CRYPTO_load_u32_le Line | Count | Source | 1107 | 1.75M | static inline uint32_t CRYPTO_load_u32_le(const void *in) { | 1108 | 1.75M | uint32_t v; | 1109 | 1.75M | OPENSSL_memcpy(&v, in, sizeof(v)); | 1110 | 1.75M | return v; | 1111 | 1.75M | } |
Line | Count | Source | 1107 | 2.30M | static inline uint32_t CRYPTO_load_u32_le(const void *in) { | 1108 | 2.30M | uint32_t v; | 1109 | 2.30M | OPENSSL_memcpy(&v, in, sizeof(v)); | 1110 | 2.30M | return v; | 1111 | 2.30M | } |
Unexecuted instantiation: mem.c:CRYPTO_load_u32_le Unexecuted instantiation: obj.c:CRYPTO_load_u32_le Unexecuted instantiation: p_dh_asn1.c:CRYPTO_load_u32_le Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_load_u32_le Unexecuted instantiation: p_ec.c:CRYPTO_load_u32_le Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_load_u32_le Unexecuted instantiation: p_hkdf.c:CRYPTO_load_u32_le Unexecuted instantiation: p_rsa.c:CRYPTO_load_u32_le Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_load_u32_le Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_load_u32_le Unexecuted instantiation: pbkdf.c:CRYPTO_load_u32_le poly1305_vec.c:CRYPTO_load_u32_le Line | Count | Source | 1107 | 608 | static inline uint32_t CRYPTO_load_u32_le(const void *in) { | 1108 | 608 | uint32_t v; | 1109 | 608 | OPENSSL_memcpy(&v, in, sizeof(v)); | 1110 | 608 | return v; | 1111 | 608 | } |
Unexecuted instantiation: refcount.c:CRYPTO_load_u32_le Unexecuted instantiation: rsa_asn1.c:CRYPTO_load_u32_le Unexecuted instantiation: rsa_crypt.c:CRYPTO_load_u32_le Unexecuted instantiation: scrypt.c:CRYPTO_load_u32_le Unexecuted instantiation: siphash.c:CRYPTO_load_u32_le Unexecuted instantiation: stack.c:CRYPTO_load_u32_le Unexecuted instantiation: thread_pthread.c:CRYPTO_load_u32_le Unexecuted instantiation: tls_cbc.c:CRYPTO_load_u32_le Unexecuted instantiation: urandom.c:CRYPTO_load_u32_le Unexecuted instantiation: a_bitstr.c:CRYPTO_load_u32_le Unexecuted instantiation: a_object.c:CRYPTO_load_u32_le Unexecuted instantiation: asn1_compat.c:CRYPTO_load_u32_le Unexecuted instantiation: bio.c:CRYPTO_load_u32_le Unexecuted instantiation: blake2.c:CRYPTO_load_u32_le chacha.c:CRYPTO_load_u32_le Line | Count | Source | 1107 | 4.56k | static inline uint32_t CRYPTO_load_u32_le(const void *in) { | 1108 | 4.56k | uint32_t v; | 1109 | 4.56k | OPENSSL_memcpy(&v, in, sizeof(v)); | 1110 | 4.56k | return v; | 1111 | 4.56k | } |
Unexecuted instantiation: des.c:CRYPTO_load_u32_le Unexecuted instantiation: ec_asn1.c:CRYPTO_load_u32_le Unexecuted instantiation: lhash.c:CRYPTO_load_u32_le Unexecuted instantiation: tasn_dec.c:CRYPTO_load_u32_le Unexecuted instantiation: tasn_enc.c:CRYPTO_load_u32_le Unexecuted instantiation: tasn_new.c:CRYPTO_load_u32_le Unexecuted instantiation: tasn_utl.c:CRYPTO_load_u32_le Unexecuted instantiation: pool.c:CRYPTO_load_u32_le Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_load_u32_le Unexecuted instantiation: cpu_intel.c:CRYPTO_load_u32_le |
1112 | | |
1113 | 52.7k | static inline void CRYPTO_store_u32_le(void *out, uint32_t v) { |
1114 | 52.7k | OPENSSL_memcpy(out, &v, sizeof(v)); |
1115 | 52.7k | } Unexecuted instantiation: a_int.c:CRYPTO_store_u32_le Unexecuted instantiation: asn1_lib.c:CRYPTO_store_u32_le Unexecuted instantiation: bcm.c:CRYPTO_store_u32_le Unexecuted instantiation: cbb.c:CRYPTO_store_u32_le Unexecuted instantiation: cbs.c:CRYPTO_store_u32_le Unexecuted instantiation: convert.c:CRYPTO_store_u32_le Unexecuted instantiation: crypto.c:CRYPTO_store_u32_le Unexecuted instantiation: curve25519.c:CRYPTO_store_u32_le Unexecuted instantiation: digest_extra.c:CRYPTO_store_u32_le Unexecuted instantiation: dsa.c:CRYPTO_store_u32_le Unexecuted instantiation: dsa_asn1.c:CRYPTO_store_u32_le Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_store_u32_le Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_store_u32_le Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_store_u32_le Unexecuted instantiation: e_des.c:CRYPTO_store_u32_le Unexecuted instantiation: e_rc2.c:CRYPTO_store_u32_le Unexecuted instantiation: e_rc4.c:CRYPTO_store_u32_le Unexecuted instantiation: e_tls.c:CRYPTO_store_u32_le Unexecuted instantiation: ecdh_extra.c:CRYPTO_store_u32_le Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_store_u32_le Unexecuted instantiation: engine.c:CRYPTO_store_u32_le Unexecuted instantiation: err.c:CRYPTO_store_u32_le Unexecuted instantiation: evp.c:CRYPTO_store_u32_le Unexecuted instantiation: evp_ctx.c:CRYPTO_store_u32_le Unexecuted instantiation: ex_data.c:CRYPTO_store_u32_le Unexecuted instantiation: file.c:CRYPTO_store_u32_le Unexecuted instantiation: fork_detect.c:CRYPTO_store_u32_le Unexecuted instantiation: forkunsafe.c:CRYPTO_store_u32_le md4.c:CRYPTO_store_u32_le Line | Count | Source | 1113 | 17.8k | static inline void CRYPTO_store_u32_le(void *out, uint32_t v) { | 1114 | 17.8k | OPENSSL_memcpy(out, &v, sizeof(v)); | 1115 | 17.8k | } |
md5.c:CRYPTO_store_u32_le Line | Count | Source | 1113 | 30.0k | static inline void CRYPTO_store_u32_le(void *out, uint32_t v) { | 1114 | 30.0k | OPENSSL_memcpy(out, &v, sizeof(v)); | 1115 | 30.0k | } |
Unexecuted instantiation: mem.c:CRYPTO_store_u32_le Unexecuted instantiation: obj.c:CRYPTO_store_u32_le Unexecuted instantiation: p_dh_asn1.c:CRYPTO_store_u32_le Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_store_u32_le Unexecuted instantiation: p_ec.c:CRYPTO_store_u32_le Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_store_u32_le Unexecuted instantiation: p_hkdf.c:CRYPTO_store_u32_le Unexecuted instantiation: p_rsa.c:CRYPTO_store_u32_le Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_store_u32_le Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_store_u32_le Unexecuted instantiation: pbkdf.c:CRYPTO_store_u32_le Unexecuted instantiation: poly1305_vec.c:CRYPTO_store_u32_le Unexecuted instantiation: refcount.c:CRYPTO_store_u32_le Unexecuted instantiation: rsa_asn1.c:CRYPTO_store_u32_le Unexecuted instantiation: rsa_crypt.c:CRYPTO_store_u32_le Unexecuted instantiation: scrypt.c:CRYPTO_store_u32_le Unexecuted instantiation: siphash.c:CRYPTO_store_u32_le Unexecuted instantiation: stack.c:CRYPTO_store_u32_le Unexecuted instantiation: thread_pthread.c:CRYPTO_store_u32_le Unexecuted instantiation: tls_cbc.c:CRYPTO_store_u32_le Unexecuted instantiation: urandom.c:CRYPTO_store_u32_le Unexecuted instantiation: a_bitstr.c:CRYPTO_store_u32_le Unexecuted instantiation: a_object.c:CRYPTO_store_u32_le Unexecuted instantiation: asn1_compat.c:CRYPTO_store_u32_le Unexecuted instantiation: bio.c:CRYPTO_store_u32_le Unexecuted instantiation: blake2.c:CRYPTO_store_u32_le chacha.c:CRYPTO_store_u32_le Line | Count | Source | 1113 | 4.86k | static inline void CRYPTO_store_u32_le(void *out, uint32_t v) { | 1114 | 4.86k | OPENSSL_memcpy(out, &v, sizeof(v)); | 1115 | 4.86k | } |
Unexecuted instantiation: des.c:CRYPTO_store_u32_le Unexecuted instantiation: ec_asn1.c:CRYPTO_store_u32_le Unexecuted instantiation: lhash.c:CRYPTO_store_u32_le Unexecuted instantiation: tasn_dec.c:CRYPTO_store_u32_le Unexecuted instantiation: tasn_enc.c:CRYPTO_store_u32_le Unexecuted instantiation: tasn_new.c:CRYPTO_store_u32_le Unexecuted instantiation: tasn_utl.c:CRYPTO_store_u32_le Unexecuted instantiation: pool.c:CRYPTO_store_u32_le Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_store_u32_le Unexecuted instantiation: cpu_intel.c:CRYPTO_store_u32_le |
1116 | | |
1117 | 10.5M | static inline uint32_t CRYPTO_load_u32_be(const void *in) { |
1118 | 10.5M | uint32_t v; |
1119 | 10.5M | OPENSSL_memcpy(&v, in, sizeof(v)); |
1120 | 10.5M | return CRYPTO_bswap4(v); |
1121 | 10.5M | } Unexecuted instantiation: a_int.c:CRYPTO_load_u32_be Unexecuted instantiation: asn1_lib.c:CRYPTO_load_u32_be Line | Count | Source | 1117 | 10.5M | static inline uint32_t CRYPTO_load_u32_be(const void *in) { | 1118 | 10.5M | uint32_t v; | 1119 | 10.5M | OPENSSL_memcpy(&v, in, sizeof(v)); | 1120 | 10.5M | return CRYPTO_bswap4(v); | 1121 | 10.5M | } |
Unexecuted instantiation: cbb.c:CRYPTO_load_u32_be Unexecuted instantiation: cbs.c:CRYPTO_load_u32_be Unexecuted instantiation: convert.c:CRYPTO_load_u32_be Unexecuted instantiation: crypto.c:CRYPTO_load_u32_be Unexecuted instantiation: curve25519.c:CRYPTO_load_u32_be Unexecuted instantiation: digest_extra.c:CRYPTO_load_u32_be Unexecuted instantiation: dsa.c:CRYPTO_load_u32_be Unexecuted instantiation: dsa_asn1.c:CRYPTO_load_u32_be Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_load_u32_be Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_load_u32_be Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_load_u32_be Unexecuted instantiation: e_des.c:CRYPTO_load_u32_be Unexecuted instantiation: e_rc2.c:CRYPTO_load_u32_be Unexecuted instantiation: e_rc4.c:CRYPTO_load_u32_be Unexecuted instantiation: e_tls.c:CRYPTO_load_u32_be Unexecuted instantiation: ecdh_extra.c:CRYPTO_load_u32_be Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_load_u32_be Unexecuted instantiation: engine.c:CRYPTO_load_u32_be Unexecuted instantiation: err.c:CRYPTO_load_u32_be Unexecuted instantiation: evp.c:CRYPTO_load_u32_be Unexecuted instantiation: evp_ctx.c:CRYPTO_load_u32_be Unexecuted instantiation: ex_data.c:CRYPTO_load_u32_be Unexecuted instantiation: file.c:CRYPTO_load_u32_be Unexecuted instantiation: fork_detect.c:CRYPTO_load_u32_be Unexecuted instantiation: forkunsafe.c:CRYPTO_load_u32_be Unexecuted instantiation: md4.c:CRYPTO_load_u32_be Unexecuted instantiation: md5.c:CRYPTO_load_u32_be Unexecuted instantiation: mem.c:CRYPTO_load_u32_be Unexecuted instantiation: obj.c:CRYPTO_load_u32_be Unexecuted instantiation: p_dh_asn1.c:CRYPTO_load_u32_be Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_load_u32_be Unexecuted instantiation: p_ec.c:CRYPTO_load_u32_be Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_load_u32_be Unexecuted instantiation: p_hkdf.c:CRYPTO_load_u32_be Unexecuted instantiation: p_rsa.c:CRYPTO_load_u32_be Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_load_u32_be Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_load_u32_be Unexecuted instantiation: pbkdf.c:CRYPTO_load_u32_be Unexecuted instantiation: poly1305_vec.c:CRYPTO_load_u32_be Unexecuted instantiation: refcount.c:CRYPTO_load_u32_be Unexecuted instantiation: rsa_asn1.c:CRYPTO_load_u32_be Unexecuted instantiation: rsa_crypt.c:CRYPTO_load_u32_be Unexecuted instantiation: scrypt.c:CRYPTO_load_u32_be Unexecuted instantiation: siphash.c:CRYPTO_load_u32_be Unexecuted instantiation: stack.c:CRYPTO_load_u32_be Unexecuted instantiation: thread_pthread.c:CRYPTO_load_u32_be Unexecuted instantiation: tls_cbc.c:CRYPTO_load_u32_be Unexecuted instantiation: urandom.c:CRYPTO_load_u32_be Unexecuted instantiation: a_bitstr.c:CRYPTO_load_u32_be Unexecuted instantiation: a_object.c:CRYPTO_load_u32_be Unexecuted instantiation: asn1_compat.c:CRYPTO_load_u32_be Unexecuted instantiation: bio.c:CRYPTO_load_u32_be Unexecuted instantiation: blake2.c:CRYPTO_load_u32_be Unexecuted instantiation: chacha.c:CRYPTO_load_u32_be Unexecuted instantiation: des.c:CRYPTO_load_u32_be Unexecuted instantiation: ec_asn1.c:CRYPTO_load_u32_be Unexecuted instantiation: lhash.c:CRYPTO_load_u32_be Unexecuted instantiation: tasn_dec.c:CRYPTO_load_u32_be Unexecuted instantiation: tasn_enc.c:CRYPTO_load_u32_be Unexecuted instantiation: tasn_new.c:CRYPTO_load_u32_be Unexecuted instantiation: tasn_utl.c:CRYPTO_load_u32_be Unexecuted instantiation: pool.c:CRYPTO_load_u32_be Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_load_u32_be Unexecuted instantiation: cpu_intel.c:CRYPTO_load_u32_be |
1122 | | |
1123 | 364k | static inline void CRYPTO_store_u32_be(void *out, uint32_t v) { |
1124 | 364k | v = CRYPTO_bswap4(v); |
1125 | 364k | OPENSSL_memcpy(out, &v, sizeof(v)); |
1126 | 364k | } Unexecuted instantiation: a_int.c:CRYPTO_store_u32_be Unexecuted instantiation: asn1_lib.c:CRYPTO_store_u32_be bcm.c:CRYPTO_store_u32_be Line | Count | Source | 1123 | 364k | static inline void CRYPTO_store_u32_be(void *out, uint32_t v) { | 1124 | 364k | v = CRYPTO_bswap4(v); | 1125 | 364k | OPENSSL_memcpy(out, &v, sizeof(v)); | 1126 | 364k | } |
Unexecuted instantiation: cbb.c:CRYPTO_store_u32_be Unexecuted instantiation: cbs.c:CRYPTO_store_u32_be Unexecuted instantiation: convert.c:CRYPTO_store_u32_be Unexecuted instantiation: crypto.c:CRYPTO_store_u32_be Unexecuted instantiation: curve25519.c:CRYPTO_store_u32_be Unexecuted instantiation: digest_extra.c:CRYPTO_store_u32_be Unexecuted instantiation: dsa.c:CRYPTO_store_u32_be Unexecuted instantiation: dsa_asn1.c:CRYPTO_store_u32_be Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_store_u32_be Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_store_u32_be Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_store_u32_be Unexecuted instantiation: e_des.c:CRYPTO_store_u32_be Unexecuted instantiation: e_rc2.c:CRYPTO_store_u32_be Unexecuted instantiation: e_rc4.c:CRYPTO_store_u32_be Unexecuted instantiation: e_tls.c:CRYPTO_store_u32_be Unexecuted instantiation: ecdh_extra.c:CRYPTO_store_u32_be Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_store_u32_be Unexecuted instantiation: engine.c:CRYPTO_store_u32_be Unexecuted instantiation: err.c:CRYPTO_store_u32_be Unexecuted instantiation: evp.c:CRYPTO_store_u32_be Unexecuted instantiation: evp_ctx.c:CRYPTO_store_u32_be Unexecuted instantiation: ex_data.c:CRYPTO_store_u32_be Unexecuted instantiation: file.c:CRYPTO_store_u32_be Unexecuted instantiation: fork_detect.c:CRYPTO_store_u32_be Unexecuted instantiation: forkunsafe.c:CRYPTO_store_u32_be Unexecuted instantiation: md4.c:CRYPTO_store_u32_be Unexecuted instantiation: md5.c:CRYPTO_store_u32_be Unexecuted instantiation: mem.c:CRYPTO_store_u32_be Unexecuted instantiation: obj.c:CRYPTO_store_u32_be Unexecuted instantiation: p_dh_asn1.c:CRYPTO_store_u32_be Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_store_u32_be Unexecuted instantiation: p_ec.c:CRYPTO_store_u32_be Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_store_u32_be Unexecuted instantiation: p_hkdf.c:CRYPTO_store_u32_be Unexecuted instantiation: p_rsa.c:CRYPTO_store_u32_be Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_store_u32_be Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_store_u32_be Unexecuted instantiation: pbkdf.c:CRYPTO_store_u32_be Unexecuted instantiation: poly1305_vec.c:CRYPTO_store_u32_be Unexecuted instantiation: refcount.c:CRYPTO_store_u32_be Unexecuted instantiation: rsa_asn1.c:CRYPTO_store_u32_be Unexecuted instantiation: rsa_crypt.c:CRYPTO_store_u32_be Unexecuted instantiation: scrypt.c:CRYPTO_store_u32_be Unexecuted instantiation: siphash.c:CRYPTO_store_u32_be Unexecuted instantiation: stack.c:CRYPTO_store_u32_be Unexecuted instantiation: thread_pthread.c:CRYPTO_store_u32_be Unexecuted instantiation: tls_cbc.c:CRYPTO_store_u32_be Unexecuted instantiation: urandom.c:CRYPTO_store_u32_be Unexecuted instantiation: a_bitstr.c:CRYPTO_store_u32_be Unexecuted instantiation: a_object.c:CRYPTO_store_u32_be Unexecuted instantiation: asn1_compat.c:CRYPTO_store_u32_be Unexecuted instantiation: bio.c:CRYPTO_store_u32_be Unexecuted instantiation: blake2.c:CRYPTO_store_u32_be Unexecuted instantiation: chacha.c:CRYPTO_store_u32_be Unexecuted instantiation: des.c:CRYPTO_store_u32_be Unexecuted instantiation: ec_asn1.c:CRYPTO_store_u32_be Unexecuted instantiation: lhash.c:CRYPTO_store_u32_be Unexecuted instantiation: tasn_dec.c:CRYPTO_store_u32_be Unexecuted instantiation: tasn_enc.c:CRYPTO_store_u32_be Unexecuted instantiation: tasn_new.c:CRYPTO_store_u32_be Unexecuted instantiation: tasn_utl.c:CRYPTO_store_u32_be Unexecuted instantiation: pool.c:CRYPTO_store_u32_be Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_store_u32_be Unexecuted instantiation: cpu_intel.c:CRYPTO_store_u32_be |
1127 | | |
1128 | 7.88M | static inline uint64_t CRYPTO_load_u64_le(const void *in) { |
1129 | 7.88M | uint64_t v; |
1130 | 7.88M | OPENSSL_memcpy(&v, in, sizeof(v)); |
1131 | 7.88M | return v; |
1132 | 7.88M | } Unexecuted instantiation: a_int.c:CRYPTO_load_u64_le Unexecuted instantiation: asn1_lib.c:CRYPTO_load_u64_le Unexecuted instantiation: bcm.c:CRYPTO_load_u64_le Unexecuted instantiation: cbb.c:CRYPTO_load_u64_le Unexecuted instantiation: cbs.c:CRYPTO_load_u64_le Unexecuted instantiation: convert.c:CRYPTO_load_u64_le Unexecuted instantiation: crypto.c:CRYPTO_load_u64_le Unexecuted instantiation: curve25519.c:CRYPTO_load_u64_le Unexecuted instantiation: digest_extra.c:CRYPTO_load_u64_le Unexecuted instantiation: dsa.c:CRYPTO_load_u64_le Unexecuted instantiation: dsa_asn1.c:CRYPTO_load_u64_le Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_load_u64_le Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_load_u64_le Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_load_u64_le Unexecuted instantiation: e_des.c:CRYPTO_load_u64_le Unexecuted instantiation: e_rc2.c:CRYPTO_load_u64_le Unexecuted instantiation: e_rc4.c:CRYPTO_load_u64_le Unexecuted instantiation: e_tls.c:CRYPTO_load_u64_le Unexecuted instantiation: ecdh_extra.c:CRYPTO_load_u64_le Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_load_u64_le Unexecuted instantiation: engine.c:CRYPTO_load_u64_le Unexecuted instantiation: err.c:CRYPTO_load_u64_le Unexecuted instantiation: evp.c:CRYPTO_load_u64_le Unexecuted instantiation: evp_ctx.c:CRYPTO_load_u64_le Unexecuted instantiation: ex_data.c:CRYPTO_load_u64_le Unexecuted instantiation: file.c:CRYPTO_load_u64_le Unexecuted instantiation: fork_detect.c:CRYPTO_load_u64_le Unexecuted instantiation: forkunsafe.c:CRYPTO_load_u64_le Unexecuted instantiation: md4.c:CRYPTO_load_u64_le Unexecuted instantiation: md5.c:CRYPTO_load_u64_le Unexecuted instantiation: mem.c:CRYPTO_load_u64_le Unexecuted instantiation: obj.c:CRYPTO_load_u64_le Unexecuted instantiation: p_dh_asn1.c:CRYPTO_load_u64_le Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_load_u64_le Unexecuted instantiation: p_ec.c:CRYPTO_load_u64_le Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_load_u64_le Unexecuted instantiation: p_hkdf.c:CRYPTO_load_u64_le Unexecuted instantiation: p_rsa.c:CRYPTO_load_u64_le Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_load_u64_le Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_load_u64_le Unexecuted instantiation: pbkdf.c:CRYPTO_load_u64_le poly1305_vec.c:CRYPTO_load_u64_le Line | Count | Source | 1128 | 642 | static inline uint64_t CRYPTO_load_u64_le(const void *in) { | 1129 | 642 | uint64_t v; | 1130 | 642 | OPENSSL_memcpy(&v, in, sizeof(v)); | 1131 | 642 | return v; | 1132 | 642 | } |
Unexecuted instantiation: refcount.c:CRYPTO_load_u64_le Unexecuted instantiation: rsa_asn1.c:CRYPTO_load_u64_le Unexecuted instantiation: rsa_crypt.c:CRYPTO_load_u64_le Unexecuted instantiation: scrypt.c:CRYPTO_load_u64_le Unexecuted instantiation: siphash.c:CRYPTO_load_u64_le Unexecuted instantiation: stack.c:CRYPTO_load_u64_le Unexecuted instantiation: thread_pthread.c:CRYPTO_load_u64_le Unexecuted instantiation: tls_cbc.c:CRYPTO_load_u64_le Unexecuted instantiation: urandom.c:CRYPTO_load_u64_le Unexecuted instantiation: a_bitstr.c:CRYPTO_load_u64_le Unexecuted instantiation: a_object.c:CRYPTO_load_u64_le Unexecuted instantiation: asn1_compat.c:CRYPTO_load_u64_le Unexecuted instantiation: bio.c:CRYPTO_load_u64_le blake2.c:CRYPTO_load_u64_le Line | Count | Source | 1128 | 7.88M | static inline uint64_t CRYPTO_load_u64_le(const void *in) { | 1129 | 7.88M | uint64_t v; | 1130 | 7.88M | OPENSSL_memcpy(&v, in, sizeof(v)); | 1131 | 7.88M | return v; | 1132 | 7.88M | } |
Unexecuted instantiation: chacha.c:CRYPTO_load_u64_le Unexecuted instantiation: des.c:CRYPTO_load_u64_le Unexecuted instantiation: ec_asn1.c:CRYPTO_load_u64_le Unexecuted instantiation: lhash.c:CRYPTO_load_u64_le Unexecuted instantiation: tasn_dec.c:CRYPTO_load_u64_le Unexecuted instantiation: tasn_enc.c:CRYPTO_load_u64_le Unexecuted instantiation: tasn_new.c:CRYPTO_load_u64_le Unexecuted instantiation: tasn_utl.c:CRYPTO_load_u64_le Unexecuted instantiation: pool.c:CRYPTO_load_u64_le Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_load_u64_le Unexecuted instantiation: cpu_intel.c:CRYPTO_load_u64_le |
1133 | | |
1134 | 304 | static inline void CRYPTO_store_u64_le(void *out, uint64_t v) { |
1135 | 304 | OPENSSL_memcpy(out, &v, sizeof(v)); |
1136 | 304 | } Unexecuted instantiation: a_int.c:CRYPTO_store_u64_le Unexecuted instantiation: asn1_lib.c:CRYPTO_store_u64_le Unexecuted instantiation: bcm.c:CRYPTO_store_u64_le Unexecuted instantiation: cbb.c:CRYPTO_store_u64_le Unexecuted instantiation: cbs.c:CRYPTO_store_u64_le Unexecuted instantiation: convert.c:CRYPTO_store_u64_le Unexecuted instantiation: crypto.c:CRYPTO_store_u64_le Unexecuted instantiation: curve25519.c:CRYPTO_store_u64_le Unexecuted instantiation: digest_extra.c:CRYPTO_store_u64_le Unexecuted instantiation: dsa.c:CRYPTO_store_u64_le Unexecuted instantiation: dsa_asn1.c:CRYPTO_store_u64_le Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_store_u64_le Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_store_u64_le Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_store_u64_le Unexecuted instantiation: e_des.c:CRYPTO_store_u64_le Unexecuted instantiation: e_rc2.c:CRYPTO_store_u64_le Unexecuted instantiation: e_rc4.c:CRYPTO_store_u64_le Unexecuted instantiation: e_tls.c:CRYPTO_store_u64_le Unexecuted instantiation: ecdh_extra.c:CRYPTO_store_u64_le Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_store_u64_le Unexecuted instantiation: engine.c:CRYPTO_store_u64_le Unexecuted instantiation: err.c:CRYPTO_store_u64_le Unexecuted instantiation: evp.c:CRYPTO_store_u64_le Unexecuted instantiation: evp_ctx.c:CRYPTO_store_u64_le Unexecuted instantiation: ex_data.c:CRYPTO_store_u64_le Unexecuted instantiation: file.c:CRYPTO_store_u64_le Unexecuted instantiation: fork_detect.c:CRYPTO_store_u64_le Unexecuted instantiation: forkunsafe.c:CRYPTO_store_u64_le Unexecuted instantiation: md4.c:CRYPTO_store_u64_le Unexecuted instantiation: md5.c:CRYPTO_store_u64_le Unexecuted instantiation: mem.c:CRYPTO_store_u64_le Unexecuted instantiation: obj.c:CRYPTO_store_u64_le Unexecuted instantiation: p_dh_asn1.c:CRYPTO_store_u64_le Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_store_u64_le Unexecuted instantiation: p_ec.c:CRYPTO_store_u64_le Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_store_u64_le Unexecuted instantiation: p_hkdf.c:CRYPTO_store_u64_le Unexecuted instantiation: p_rsa.c:CRYPTO_store_u64_le Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_store_u64_le Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_store_u64_le Unexecuted instantiation: pbkdf.c:CRYPTO_store_u64_le poly1305_vec.c:CRYPTO_store_u64_le Line | Count | Source | 1134 | 304 | static inline void CRYPTO_store_u64_le(void *out, uint64_t v) { | 1135 | 304 | OPENSSL_memcpy(out, &v, sizeof(v)); | 1136 | 304 | } |
Unexecuted instantiation: refcount.c:CRYPTO_store_u64_le Unexecuted instantiation: rsa_asn1.c:CRYPTO_store_u64_le Unexecuted instantiation: rsa_crypt.c:CRYPTO_store_u64_le Unexecuted instantiation: scrypt.c:CRYPTO_store_u64_le Unexecuted instantiation: siphash.c:CRYPTO_store_u64_le Unexecuted instantiation: stack.c:CRYPTO_store_u64_le Unexecuted instantiation: thread_pthread.c:CRYPTO_store_u64_le Unexecuted instantiation: tls_cbc.c:CRYPTO_store_u64_le Unexecuted instantiation: urandom.c:CRYPTO_store_u64_le Unexecuted instantiation: a_bitstr.c:CRYPTO_store_u64_le Unexecuted instantiation: a_object.c:CRYPTO_store_u64_le Unexecuted instantiation: asn1_compat.c:CRYPTO_store_u64_le Unexecuted instantiation: bio.c:CRYPTO_store_u64_le Unexecuted instantiation: blake2.c:CRYPTO_store_u64_le Unexecuted instantiation: chacha.c:CRYPTO_store_u64_le Unexecuted instantiation: des.c:CRYPTO_store_u64_le Unexecuted instantiation: ec_asn1.c:CRYPTO_store_u64_le Unexecuted instantiation: lhash.c:CRYPTO_store_u64_le Unexecuted instantiation: tasn_dec.c:CRYPTO_store_u64_le Unexecuted instantiation: tasn_enc.c:CRYPTO_store_u64_le Unexecuted instantiation: tasn_new.c:CRYPTO_store_u64_le Unexecuted instantiation: tasn_utl.c:CRYPTO_store_u64_le Unexecuted instantiation: pool.c:CRYPTO_store_u64_le Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_store_u64_le Unexecuted instantiation: cpu_intel.c:CRYPTO_store_u64_le |
1137 | | |
1138 | 2.10M | static inline uint64_t CRYPTO_load_u64_be(const void *ptr) { |
1139 | 2.10M | uint64_t ret; |
1140 | 2.10M | OPENSSL_memcpy(&ret, ptr, sizeof(ret)); |
1141 | 2.10M | return CRYPTO_bswap8(ret); |
1142 | 2.10M | } Unexecuted instantiation: a_int.c:CRYPTO_load_u64_be Unexecuted instantiation: asn1_lib.c:CRYPTO_load_u64_be Line | Count | Source | 1138 | 2.10M | static inline uint64_t CRYPTO_load_u64_be(const void *ptr) { | 1139 | 2.10M | uint64_t ret; | 1140 | 2.10M | OPENSSL_memcpy(&ret, ptr, sizeof(ret)); | 1141 | 2.10M | return CRYPTO_bswap8(ret); | 1142 | 2.10M | } |
Unexecuted instantiation: cbb.c:CRYPTO_load_u64_be Unexecuted instantiation: cbs.c:CRYPTO_load_u64_be Unexecuted instantiation: convert.c:CRYPTO_load_u64_be Unexecuted instantiation: crypto.c:CRYPTO_load_u64_be Unexecuted instantiation: curve25519.c:CRYPTO_load_u64_be Unexecuted instantiation: digest_extra.c:CRYPTO_load_u64_be Unexecuted instantiation: dsa.c:CRYPTO_load_u64_be Unexecuted instantiation: dsa_asn1.c:CRYPTO_load_u64_be Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_load_u64_be Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_load_u64_be Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_load_u64_be Unexecuted instantiation: e_des.c:CRYPTO_load_u64_be Unexecuted instantiation: e_rc2.c:CRYPTO_load_u64_be Unexecuted instantiation: e_rc4.c:CRYPTO_load_u64_be Unexecuted instantiation: e_tls.c:CRYPTO_load_u64_be Unexecuted instantiation: ecdh_extra.c:CRYPTO_load_u64_be Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_load_u64_be Unexecuted instantiation: engine.c:CRYPTO_load_u64_be Unexecuted instantiation: err.c:CRYPTO_load_u64_be Unexecuted instantiation: evp.c:CRYPTO_load_u64_be Unexecuted instantiation: evp_ctx.c:CRYPTO_load_u64_be Unexecuted instantiation: ex_data.c:CRYPTO_load_u64_be Unexecuted instantiation: file.c:CRYPTO_load_u64_be Unexecuted instantiation: fork_detect.c:CRYPTO_load_u64_be Unexecuted instantiation: forkunsafe.c:CRYPTO_load_u64_be Unexecuted instantiation: md4.c:CRYPTO_load_u64_be Unexecuted instantiation: md5.c:CRYPTO_load_u64_be Unexecuted instantiation: mem.c:CRYPTO_load_u64_be Unexecuted instantiation: obj.c:CRYPTO_load_u64_be Unexecuted instantiation: p_dh_asn1.c:CRYPTO_load_u64_be Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_load_u64_be Unexecuted instantiation: p_ec.c:CRYPTO_load_u64_be Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_load_u64_be Unexecuted instantiation: p_hkdf.c:CRYPTO_load_u64_be Unexecuted instantiation: p_rsa.c:CRYPTO_load_u64_be Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_load_u64_be Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_load_u64_be Unexecuted instantiation: pbkdf.c:CRYPTO_load_u64_be Unexecuted instantiation: poly1305_vec.c:CRYPTO_load_u64_be Unexecuted instantiation: refcount.c:CRYPTO_load_u64_be Unexecuted instantiation: rsa_asn1.c:CRYPTO_load_u64_be Unexecuted instantiation: rsa_crypt.c:CRYPTO_load_u64_be Unexecuted instantiation: scrypt.c:CRYPTO_load_u64_be Unexecuted instantiation: siphash.c:CRYPTO_load_u64_be Unexecuted instantiation: stack.c:CRYPTO_load_u64_be Unexecuted instantiation: thread_pthread.c:CRYPTO_load_u64_be Unexecuted instantiation: tls_cbc.c:CRYPTO_load_u64_be Unexecuted instantiation: urandom.c:CRYPTO_load_u64_be Unexecuted instantiation: a_bitstr.c:CRYPTO_load_u64_be Unexecuted instantiation: a_object.c:CRYPTO_load_u64_be Unexecuted instantiation: asn1_compat.c:CRYPTO_load_u64_be Unexecuted instantiation: bio.c:CRYPTO_load_u64_be Unexecuted instantiation: blake2.c:CRYPTO_load_u64_be Unexecuted instantiation: chacha.c:CRYPTO_load_u64_be Unexecuted instantiation: des.c:CRYPTO_load_u64_be Unexecuted instantiation: ec_asn1.c:CRYPTO_load_u64_be Unexecuted instantiation: lhash.c:CRYPTO_load_u64_be Unexecuted instantiation: tasn_dec.c:CRYPTO_load_u64_be Unexecuted instantiation: tasn_enc.c:CRYPTO_load_u64_be Unexecuted instantiation: tasn_new.c:CRYPTO_load_u64_be Unexecuted instantiation: tasn_utl.c:CRYPTO_load_u64_be Unexecuted instantiation: pool.c:CRYPTO_load_u64_be Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_load_u64_be Unexecuted instantiation: cpu_intel.c:CRYPTO_load_u64_be |
1143 | | |
1144 | 59.7k | static inline void CRYPTO_store_u64_be(void *out, uint64_t v) { |
1145 | 59.7k | v = CRYPTO_bswap8(v); |
1146 | 59.7k | OPENSSL_memcpy(out, &v, sizeof(v)); |
1147 | 59.7k | } Unexecuted instantiation: a_int.c:CRYPTO_store_u64_be Unexecuted instantiation: asn1_lib.c:CRYPTO_store_u64_be bcm.c:CRYPTO_store_u64_be Line | Count | Source | 1144 | 59.7k | static inline void CRYPTO_store_u64_be(void *out, uint64_t v) { | 1145 | 59.7k | v = CRYPTO_bswap8(v); | 1146 | 59.7k | OPENSSL_memcpy(out, &v, sizeof(v)); | 1147 | 59.7k | } |
Unexecuted instantiation: cbb.c:CRYPTO_store_u64_be Unexecuted instantiation: cbs.c:CRYPTO_store_u64_be Unexecuted instantiation: convert.c:CRYPTO_store_u64_be Unexecuted instantiation: crypto.c:CRYPTO_store_u64_be Unexecuted instantiation: curve25519.c:CRYPTO_store_u64_be Unexecuted instantiation: digest_extra.c:CRYPTO_store_u64_be Unexecuted instantiation: dsa.c:CRYPTO_store_u64_be Unexecuted instantiation: dsa_asn1.c:CRYPTO_store_u64_be Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_store_u64_be Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_store_u64_be Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_store_u64_be Unexecuted instantiation: e_des.c:CRYPTO_store_u64_be Unexecuted instantiation: e_rc2.c:CRYPTO_store_u64_be Unexecuted instantiation: e_rc4.c:CRYPTO_store_u64_be Unexecuted instantiation: e_tls.c:CRYPTO_store_u64_be Unexecuted instantiation: ecdh_extra.c:CRYPTO_store_u64_be Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_store_u64_be Unexecuted instantiation: engine.c:CRYPTO_store_u64_be Unexecuted instantiation: err.c:CRYPTO_store_u64_be Unexecuted instantiation: evp.c:CRYPTO_store_u64_be Unexecuted instantiation: evp_ctx.c:CRYPTO_store_u64_be Unexecuted instantiation: ex_data.c:CRYPTO_store_u64_be Unexecuted instantiation: file.c:CRYPTO_store_u64_be Unexecuted instantiation: fork_detect.c:CRYPTO_store_u64_be Unexecuted instantiation: forkunsafe.c:CRYPTO_store_u64_be Unexecuted instantiation: md4.c:CRYPTO_store_u64_be Unexecuted instantiation: md5.c:CRYPTO_store_u64_be Unexecuted instantiation: mem.c:CRYPTO_store_u64_be Unexecuted instantiation: obj.c:CRYPTO_store_u64_be Unexecuted instantiation: p_dh_asn1.c:CRYPTO_store_u64_be Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_store_u64_be Unexecuted instantiation: p_ec.c:CRYPTO_store_u64_be Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_store_u64_be Unexecuted instantiation: p_hkdf.c:CRYPTO_store_u64_be Unexecuted instantiation: p_rsa.c:CRYPTO_store_u64_be Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_store_u64_be Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_store_u64_be Unexecuted instantiation: pbkdf.c:CRYPTO_store_u64_be Unexecuted instantiation: poly1305_vec.c:CRYPTO_store_u64_be Unexecuted instantiation: refcount.c:CRYPTO_store_u64_be Unexecuted instantiation: rsa_asn1.c:CRYPTO_store_u64_be Unexecuted instantiation: rsa_crypt.c:CRYPTO_store_u64_be Unexecuted instantiation: scrypt.c:CRYPTO_store_u64_be Unexecuted instantiation: siphash.c:CRYPTO_store_u64_be Unexecuted instantiation: stack.c:CRYPTO_store_u64_be Unexecuted instantiation: thread_pthread.c:CRYPTO_store_u64_be Unexecuted instantiation: tls_cbc.c:CRYPTO_store_u64_be Unexecuted instantiation: urandom.c:CRYPTO_store_u64_be Unexecuted instantiation: a_bitstr.c:CRYPTO_store_u64_be Unexecuted instantiation: a_object.c:CRYPTO_store_u64_be Unexecuted instantiation: asn1_compat.c:CRYPTO_store_u64_be Unexecuted instantiation: bio.c:CRYPTO_store_u64_be Unexecuted instantiation: blake2.c:CRYPTO_store_u64_be Unexecuted instantiation: chacha.c:CRYPTO_store_u64_be Unexecuted instantiation: des.c:CRYPTO_store_u64_be Unexecuted instantiation: ec_asn1.c:CRYPTO_store_u64_be Unexecuted instantiation: lhash.c:CRYPTO_store_u64_be Unexecuted instantiation: tasn_dec.c:CRYPTO_store_u64_be Unexecuted instantiation: tasn_enc.c:CRYPTO_store_u64_be Unexecuted instantiation: tasn_new.c:CRYPTO_store_u64_be Unexecuted instantiation: tasn_utl.c:CRYPTO_store_u64_be Unexecuted instantiation: pool.c:CRYPTO_store_u64_be Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_store_u64_be Unexecuted instantiation: cpu_intel.c:CRYPTO_store_u64_be |
1148 | | |
1149 | 20.9k | static inline crypto_word_t CRYPTO_load_word_le(const void *in) { |
1150 | 20.9k | crypto_word_t v; |
1151 | 20.9k | OPENSSL_memcpy(&v, in, sizeof(v)); |
1152 | 20.9k | return v; |
1153 | 20.9k | } Unexecuted instantiation: a_int.c:CRYPTO_load_word_le Unexecuted instantiation: asn1_lib.c:CRYPTO_load_word_le bcm.c:CRYPTO_load_word_le Line | Count | Source | 1149 | 20.9k | static inline crypto_word_t CRYPTO_load_word_le(const void *in) { | 1150 | 20.9k | crypto_word_t v; | 1151 | 20.9k | OPENSSL_memcpy(&v, in, sizeof(v)); | 1152 | 20.9k | return v; | 1153 | 20.9k | } |
Unexecuted instantiation: cbb.c:CRYPTO_load_word_le Unexecuted instantiation: cbs.c:CRYPTO_load_word_le Unexecuted instantiation: convert.c:CRYPTO_load_word_le Unexecuted instantiation: crypto.c:CRYPTO_load_word_le Unexecuted instantiation: curve25519.c:CRYPTO_load_word_le Unexecuted instantiation: digest_extra.c:CRYPTO_load_word_le Unexecuted instantiation: dsa.c:CRYPTO_load_word_le Unexecuted instantiation: dsa_asn1.c:CRYPTO_load_word_le Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_load_word_le Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_load_word_le Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_load_word_le Unexecuted instantiation: e_des.c:CRYPTO_load_word_le Unexecuted instantiation: e_rc2.c:CRYPTO_load_word_le Unexecuted instantiation: e_rc4.c:CRYPTO_load_word_le Unexecuted instantiation: e_tls.c:CRYPTO_load_word_le Unexecuted instantiation: ecdh_extra.c:CRYPTO_load_word_le Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_load_word_le Unexecuted instantiation: engine.c:CRYPTO_load_word_le Unexecuted instantiation: err.c:CRYPTO_load_word_le Unexecuted instantiation: evp.c:CRYPTO_load_word_le Unexecuted instantiation: evp_ctx.c:CRYPTO_load_word_le Unexecuted instantiation: ex_data.c:CRYPTO_load_word_le Unexecuted instantiation: file.c:CRYPTO_load_word_le Unexecuted instantiation: fork_detect.c:CRYPTO_load_word_le Unexecuted instantiation: forkunsafe.c:CRYPTO_load_word_le Unexecuted instantiation: md4.c:CRYPTO_load_word_le Unexecuted instantiation: md5.c:CRYPTO_load_word_le Unexecuted instantiation: mem.c:CRYPTO_load_word_le Unexecuted instantiation: obj.c:CRYPTO_load_word_le Unexecuted instantiation: p_dh_asn1.c:CRYPTO_load_word_le Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_load_word_le Unexecuted instantiation: p_ec.c:CRYPTO_load_word_le Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_load_word_le Unexecuted instantiation: p_hkdf.c:CRYPTO_load_word_le Unexecuted instantiation: p_rsa.c:CRYPTO_load_word_le Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_load_word_le Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_load_word_le Unexecuted instantiation: pbkdf.c:CRYPTO_load_word_le Unexecuted instantiation: poly1305_vec.c:CRYPTO_load_word_le Unexecuted instantiation: refcount.c:CRYPTO_load_word_le Unexecuted instantiation: rsa_asn1.c:CRYPTO_load_word_le Unexecuted instantiation: rsa_crypt.c:CRYPTO_load_word_le Unexecuted instantiation: scrypt.c:CRYPTO_load_word_le Unexecuted instantiation: siphash.c:CRYPTO_load_word_le Unexecuted instantiation: stack.c:CRYPTO_load_word_le Unexecuted instantiation: thread_pthread.c:CRYPTO_load_word_le Unexecuted instantiation: tls_cbc.c:CRYPTO_load_word_le Unexecuted instantiation: urandom.c:CRYPTO_load_word_le Unexecuted instantiation: a_bitstr.c:CRYPTO_load_word_le Unexecuted instantiation: a_object.c:CRYPTO_load_word_le Unexecuted instantiation: asn1_compat.c:CRYPTO_load_word_le Unexecuted instantiation: bio.c:CRYPTO_load_word_le Unexecuted instantiation: blake2.c:CRYPTO_load_word_le Unexecuted instantiation: chacha.c:CRYPTO_load_word_le Unexecuted instantiation: des.c:CRYPTO_load_word_le Unexecuted instantiation: ec_asn1.c:CRYPTO_load_word_le Unexecuted instantiation: lhash.c:CRYPTO_load_word_le Unexecuted instantiation: tasn_dec.c:CRYPTO_load_word_le Unexecuted instantiation: tasn_enc.c:CRYPTO_load_word_le Unexecuted instantiation: tasn_new.c:CRYPTO_load_word_le Unexecuted instantiation: tasn_utl.c:CRYPTO_load_word_le Unexecuted instantiation: pool.c:CRYPTO_load_word_le Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_load_word_le Unexecuted instantiation: cpu_intel.c:CRYPTO_load_word_le |
1154 | | |
1155 | 10.4k | static inline void CRYPTO_store_word_le(void *out, crypto_word_t v) { |
1156 | 10.4k | OPENSSL_memcpy(out, &v, sizeof(v)); |
1157 | 10.4k | } Unexecuted instantiation: a_int.c:CRYPTO_store_word_le Unexecuted instantiation: asn1_lib.c:CRYPTO_store_word_le bcm.c:CRYPTO_store_word_le Line | Count | Source | 1155 | 10.4k | static inline void CRYPTO_store_word_le(void *out, crypto_word_t v) { | 1156 | 10.4k | OPENSSL_memcpy(out, &v, sizeof(v)); | 1157 | 10.4k | } |
Unexecuted instantiation: cbb.c:CRYPTO_store_word_le Unexecuted instantiation: cbs.c:CRYPTO_store_word_le Unexecuted instantiation: convert.c:CRYPTO_store_word_le Unexecuted instantiation: crypto.c:CRYPTO_store_word_le Unexecuted instantiation: curve25519.c:CRYPTO_store_word_le Unexecuted instantiation: digest_extra.c:CRYPTO_store_word_le Unexecuted instantiation: dsa.c:CRYPTO_store_word_le Unexecuted instantiation: dsa_asn1.c:CRYPTO_store_word_le Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_store_word_le Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_store_word_le Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_store_word_le Unexecuted instantiation: e_des.c:CRYPTO_store_word_le Unexecuted instantiation: e_rc2.c:CRYPTO_store_word_le Unexecuted instantiation: e_rc4.c:CRYPTO_store_word_le Unexecuted instantiation: e_tls.c:CRYPTO_store_word_le Unexecuted instantiation: ecdh_extra.c:CRYPTO_store_word_le Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_store_word_le Unexecuted instantiation: engine.c:CRYPTO_store_word_le Unexecuted instantiation: err.c:CRYPTO_store_word_le Unexecuted instantiation: evp.c:CRYPTO_store_word_le Unexecuted instantiation: evp_ctx.c:CRYPTO_store_word_le Unexecuted instantiation: ex_data.c:CRYPTO_store_word_le Unexecuted instantiation: file.c:CRYPTO_store_word_le Unexecuted instantiation: fork_detect.c:CRYPTO_store_word_le Unexecuted instantiation: forkunsafe.c:CRYPTO_store_word_le Unexecuted instantiation: md4.c:CRYPTO_store_word_le Unexecuted instantiation: md5.c:CRYPTO_store_word_le Unexecuted instantiation: mem.c:CRYPTO_store_word_le Unexecuted instantiation: obj.c:CRYPTO_store_word_le Unexecuted instantiation: p_dh_asn1.c:CRYPTO_store_word_le Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_store_word_le Unexecuted instantiation: p_ec.c:CRYPTO_store_word_le Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_store_word_le Unexecuted instantiation: p_hkdf.c:CRYPTO_store_word_le Unexecuted instantiation: p_rsa.c:CRYPTO_store_word_le Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_store_word_le Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_store_word_le Unexecuted instantiation: pbkdf.c:CRYPTO_store_word_le Unexecuted instantiation: poly1305_vec.c:CRYPTO_store_word_le Unexecuted instantiation: refcount.c:CRYPTO_store_word_le Unexecuted instantiation: rsa_asn1.c:CRYPTO_store_word_le Unexecuted instantiation: rsa_crypt.c:CRYPTO_store_word_le Unexecuted instantiation: scrypt.c:CRYPTO_store_word_le Unexecuted instantiation: siphash.c:CRYPTO_store_word_le Unexecuted instantiation: stack.c:CRYPTO_store_word_le Unexecuted instantiation: thread_pthread.c:CRYPTO_store_word_le Unexecuted instantiation: tls_cbc.c:CRYPTO_store_word_le Unexecuted instantiation: urandom.c:CRYPTO_store_word_le Unexecuted instantiation: a_bitstr.c:CRYPTO_store_word_le Unexecuted instantiation: a_object.c:CRYPTO_store_word_le Unexecuted instantiation: asn1_compat.c:CRYPTO_store_word_le Unexecuted instantiation: bio.c:CRYPTO_store_word_le Unexecuted instantiation: blake2.c:CRYPTO_store_word_le Unexecuted instantiation: chacha.c:CRYPTO_store_word_le Unexecuted instantiation: des.c:CRYPTO_store_word_le Unexecuted instantiation: ec_asn1.c:CRYPTO_store_word_le Unexecuted instantiation: lhash.c:CRYPTO_store_word_le Unexecuted instantiation: tasn_dec.c:CRYPTO_store_word_le Unexecuted instantiation: tasn_enc.c:CRYPTO_store_word_le Unexecuted instantiation: tasn_new.c:CRYPTO_store_word_le Unexecuted instantiation: tasn_utl.c:CRYPTO_store_word_le Unexecuted instantiation: pool.c:CRYPTO_store_word_le Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_store_word_le Unexecuted instantiation: cpu_intel.c:CRYPTO_store_word_le |
1158 | | |
1159 | 284k | static inline crypto_word_t CRYPTO_load_word_be(const void *in) { |
1160 | 284k | crypto_word_t v; |
1161 | 284k | OPENSSL_memcpy(&v, in, sizeof(v)); |
1162 | 284k | #if defined(OPENSSL_64_BIT) |
1163 | 284k | static_assert(sizeof(v) == 8, "crypto_word_t has unexpected size"); |
1164 | 284k | return CRYPTO_bswap8(v); |
1165 | | #else |
1166 | | static_assert(sizeof(v) == 4, "crypto_word_t has unexpected size"); |
1167 | | return CRYPTO_bswap4(v); |
1168 | | #endif |
1169 | 284k | } Unexecuted instantiation: a_int.c:CRYPTO_load_word_be Unexecuted instantiation: asn1_lib.c:CRYPTO_load_word_be bcm.c:CRYPTO_load_word_be Line | Count | Source | 1159 | 284k | static inline crypto_word_t CRYPTO_load_word_be(const void *in) { | 1160 | 284k | crypto_word_t v; | 1161 | 284k | OPENSSL_memcpy(&v, in, sizeof(v)); | 1162 | 284k | #if defined(OPENSSL_64_BIT) | 1163 | 284k | static_assert(sizeof(v) == 8, "crypto_word_t has unexpected size"); | 1164 | 284k | return CRYPTO_bswap8(v); | 1165 | | #else | 1166 | | static_assert(sizeof(v) == 4, "crypto_word_t has unexpected size"); | 1167 | | return CRYPTO_bswap4(v); | 1168 | | #endif | 1169 | 284k | } |
Unexecuted instantiation: cbb.c:CRYPTO_load_word_be Unexecuted instantiation: cbs.c:CRYPTO_load_word_be Unexecuted instantiation: convert.c:CRYPTO_load_word_be Unexecuted instantiation: crypto.c:CRYPTO_load_word_be Unexecuted instantiation: curve25519.c:CRYPTO_load_word_be Unexecuted instantiation: digest_extra.c:CRYPTO_load_word_be Unexecuted instantiation: dsa.c:CRYPTO_load_word_be Unexecuted instantiation: dsa_asn1.c:CRYPTO_load_word_be Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_load_word_be Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_load_word_be Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_load_word_be Unexecuted instantiation: e_des.c:CRYPTO_load_word_be Unexecuted instantiation: e_rc2.c:CRYPTO_load_word_be Unexecuted instantiation: e_rc4.c:CRYPTO_load_word_be Unexecuted instantiation: e_tls.c:CRYPTO_load_word_be Unexecuted instantiation: ecdh_extra.c:CRYPTO_load_word_be Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_load_word_be Unexecuted instantiation: engine.c:CRYPTO_load_word_be Unexecuted instantiation: err.c:CRYPTO_load_word_be Unexecuted instantiation: evp.c:CRYPTO_load_word_be Unexecuted instantiation: evp_ctx.c:CRYPTO_load_word_be Unexecuted instantiation: ex_data.c:CRYPTO_load_word_be Unexecuted instantiation: file.c:CRYPTO_load_word_be Unexecuted instantiation: fork_detect.c:CRYPTO_load_word_be Unexecuted instantiation: forkunsafe.c:CRYPTO_load_word_be Unexecuted instantiation: md4.c:CRYPTO_load_word_be Unexecuted instantiation: md5.c:CRYPTO_load_word_be Unexecuted instantiation: mem.c:CRYPTO_load_word_be Unexecuted instantiation: obj.c:CRYPTO_load_word_be Unexecuted instantiation: p_dh_asn1.c:CRYPTO_load_word_be Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_load_word_be Unexecuted instantiation: p_ec.c:CRYPTO_load_word_be Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_load_word_be Unexecuted instantiation: p_hkdf.c:CRYPTO_load_word_be Unexecuted instantiation: p_rsa.c:CRYPTO_load_word_be Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_load_word_be Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_load_word_be Unexecuted instantiation: pbkdf.c:CRYPTO_load_word_be Unexecuted instantiation: poly1305_vec.c:CRYPTO_load_word_be Unexecuted instantiation: refcount.c:CRYPTO_load_word_be Unexecuted instantiation: rsa_asn1.c:CRYPTO_load_word_be Unexecuted instantiation: rsa_crypt.c:CRYPTO_load_word_be Unexecuted instantiation: scrypt.c:CRYPTO_load_word_be Unexecuted instantiation: siphash.c:CRYPTO_load_word_be Unexecuted instantiation: stack.c:CRYPTO_load_word_be Unexecuted instantiation: thread_pthread.c:CRYPTO_load_word_be Unexecuted instantiation: tls_cbc.c:CRYPTO_load_word_be Unexecuted instantiation: urandom.c:CRYPTO_load_word_be Unexecuted instantiation: a_bitstr.c:CRYPTO_load_word_be Unexecuted instantiation: a_object.c:CRYPTO_load_word_be Unexecuted instantiation: asn1_compat.c:CRYPTO_load_word_be Unexecuted instantiation: bio.c:CRYPTO_load_word_be Unexecuted instantiation: blake2.c:CRYPTO_load_word_be Unexecuted instantiation: chacha.c:CRYPTO_load_word_be Unexecuted instantiation: des.c:CRYPTO_load_word_be Unexecuted instantiation: ec_asn1.c:CRYPTO_load_word_be Unexecuted instantiation: lhash.c:CRYPTO_load_word_be Unexecuted instantiation: tasn_dec.c:CRYPTO_load_word_be Unexecuted instantiation: tasn_enc.c:CRYPTO_load_word_be Unexecuted instantiation: tasn_new.c:CRYPTO_load_word_be Unexecuted instantiation: tasn_utl.c:CRYPTO_load_word_be Unexecuted instantiation: pool.c:CRYPTO_load_word_be Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_load_word_be Unexecuted instantiation: cpu_intel.c:CRYPTO_load_word_be |
1170 | | |
1171 | | |
1172 | | // Bit rotation functions. |
1173 | | // |
1174 | | // Note these functions use |(-shift) & 31|, etc., because shifting by the bit |
1175 | | // width is undefined. Both Clang and GCC recognize this pattern as a rotation, |
1176 | | // but MSVC does not. Instead, we call MSVC's built-in functions. |
1177 | | |
1178 | 67.0M | static inline uint32_t CRYPTO_rotl_u32(uint32_t value, int shift) { |
1179 | | #if defined(_MSC_VER) |
1180 | | return _rotl(value, shift); |
1181 | | #else |
1182 | 67.0M | return (value << shift) | (value >> ((-shift) & 31)); |
1183 | 67.0M | #endif |
1184 | 67.0M | } Unexecuted instantiation: a_int.c:CRYPTO_rotl_u32 Unexecuted instantiation: asn1_lib.c:CRYPTO_rotl_u32 Line | Count | Source | 1178 | 51.0M | static inline uint32_t CRYPTO_rotl_u32(uint32_t value, int shift) { | 1179 | | #if defined(_MSC_VER) | 1180 | | return _rotl(value, shift); | 1181 | | #else | 1182 | 51.0M | return (value << shift) | (value >> ((-shift) & 31)); | 1183 | 51.0M | #endif | 1184 | 51.0M | } |
Unexecuted instantiation: cbb.c:CRYPTO_rotl_u32 Unexecuted instantiation: cbs.c:CRYPTO_rotl_u32 Unexecuted instantiation: convert.c:CRYPTO_rotl_u32 Unexecuted instantiation: crypto.c:CRYPTO_rotl_u32 Unexecuted instantiation: curve25519.c:CRYPTO_rotl_u32 Unexecuted instantiation: digest_extra.c:CRYPTO_rotl_u32 Unexecuted instantiation: dsa.c:CRYPTO_rotl_u32 Unexecuted instantiation: dsa_asn1.c:CRYPTO_rotl_u32 Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_rotl_u32 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_rotl_u32 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_rotl_u32 Unexecuted instantiation: e_des.c:CRYPTO_rotl_u32 Unexecuted instantiation: e_rc2.c:CRYPTO_rotl_u32 Unexecuted instantiation: e_rc4.c:CRYPTO_rotl_u32 Unexecuted instantiation: e_tls.c:CRYPTO_rotl_u32 Unexecuted instantiation: ecdh_extra.c:CRYPTO_rotl_u32 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_rotl_u32 Unexecuted instantiation: engine.c:CRYPTO_rotl_u32 Unexecuted instantiation: err.c:CRYPTO_rotl_u32 Unexecuted instantiation: evp.c:CRYPTO_rotl_u32 Unexecuted instantiation: evp_ctx.c:CRYPTO_rotl_u32 Unexecuted instantiation: ex_data.c:CRYPTO_rotl_u32 Unexecuted instantiation: file.c:CRYPTO_rotl_u32 Unexecuted instantiation: fork_detect.c:CRYPTO_rotl_u32 Unexecuted instantiation: forkunsafe.c:CRYPTO_rotl_u32 Line | Count | Source | 1178 | 5.27M | static inline uint32_t CRYPTO_rotl_u32(uint32_t value, int shift) { | 1179 | | #if defined(_MSC_VER) | 1180 | | return _rotl(value, shift); | 1181 | | #else | 1182 | 5.27M | return (value << shift) | (value >> ((-shift) & 31)); | 1183 | 5.27M | #endif | 1184 | 5.27M | } |
Line | Count | Source | 1178 | 9.22M | static inline uint32_t CRYPTO_rotl_u32(uint32_t value, int shift) { | 1179 | | #if defined(_MSC_VER) | 1180 | | return _rotl(value, shift); | 1181 | | #else | 1182 | 9.22M | return (value << shift) | (value >> ((-shift) & 31)); | 1183 | 9.22M | #endif | 1184 | 9.22M | } |
Unexecuted instantiation: mem.c:CRYPTO_rotl_u32 Unexecuted instantiation: obj.c:CRYPTO_rotl_u32 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_rotl_u32 Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_rotl_u32 Unexecuted instantiation: p_ec.c:CRYPTO_rotl_u32 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_rotl_u32 Unexecuted instantiation: p_hkdf.c:CRYPTO_rotl_u32 Unexecuted instantiation: p_rsa.c:CRYPTO_rotl_u32 Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_rotl_u32 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_rotl_u32 Unexecuted instantiation: pbkdf.c:CRYPTO_rotl_u32 Unexecuted instantiation: poly1305_vec.c:CRYPTO_rotl_u32 Unexecuted instantiation: refcount.c:CRYPTO_rotl_u32 Unexecuted instantiation: rsa_asn1.c:CRYPTO_rotl_u32 Unexecuted instantiation: rsa_crypt.c:CRYPTO_rotl_u32 Line | Count | Source | 1178 | 1.42M | static inline uint32_t CRYPTO_rotl_u32(uint32_t value, int shift) { | 1179 | | #if defined(_MSC_VER) | 1180 | | return _rotl(value, shift); | 1181 | | #else | 1182 | 1.42M | return (value << shift) | (value >> ((-shift) & 31)); | 1183 | 1.42M | #endif | 1184 | 1.42M | } |
Unexecuted instantiation: siphash.c:CRYPTO_rotl_u32 Unexecuted instantiation: stack.c:CRYPTO_rotl_u32 Unexecuted instantiation: thread_pthread.c:CRYPTO_rotl_u32 Unexecuted instantiation: tls_cbc.c:CRYPTO_rotl_u32 Unexecuted instantiation: urandom.c:CRYPTO_rotl_u32 Unexecuted instantiation: a_bitstr.c:CRYPTO_rotl_u32 Unexecuted instantiation: a_object.c:CRYPTO_rotl_u32 Unexecuted instantiation: asn1_compat.c:CRYPTO_rotl_u32 Unexecuted instantiation: bio.c:CRYPTO_rotl_u32 Unexecuted instantiation: blake2.c:CRYPTO_rotl_u32 Line | Count | Source | 1178 | 97.2k | static inline uint32_t CRYPTO_rotl_u32(uint32_t value, int shift) { | 1179 | | #if defined(_MSC_VER) | 1180 | | return _rotl(value, shift); | 1181 | | #else | 1182 | 97.2k | return (value << shift) | (value >> ((-shift) & 31)); | 1183 | 97.2k | #endif | 1184 | 97.2k | } |
Unexecuted instantiation: des.c:CRYPTO_rotl_u32 Unexecuted instantiation: ec_asn1.c:CRYPTO_rotl_u32 Unexecuted instantiation: lhash.c:CRYPTO_rotl_u32 Unexecuted instantiation: tasn_dec.c:CRYPTO_rotl_u32 Unexecuted instantiation: tasn_enc.c:CRYPTO_rotl_u32 Unexecuted instantiation: tasn_new.c:CRYPTO_rotl_u32 Unexecuted instantiation: tasn_utl.c:CRYPTO_rotl_u32 Unexecuted instantiation: pool.c:CRYPTO_rotl_u32 Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_rotl_u32 Unexecuted instantiation: cpu_intel.c:CRYPTO_rotl_u32 |
1185 | | |
1186 | 245M | static inline uint32_t CRYPTO_rotr_u32(uint32_t value, int shift) { |
1187 | | #if defined(_MSC_VER) |
1188 | | return _rotr(value, shift); |
1189 | | #else |
1190 | 245M | return (value >> shift) | (value << ((-shift) & 31)); |
1191 | 245M | #endif |
1192 | 245M | } Unexecuted instantiation: a_int.c:CRYPTO_rotr_u32 Unexecuted instantiation: asn1_lib.c:CRYPTO_rotr_u32 Line | Count | Source | 1186 | 245M | static inline uint32_t CRYPTO_rotr_u32(uint32_t value, int shift) { | 1187 | | #if defined(_MSC_VER) | 1188 | | return _rotr(value, shift); | 1189 | | #else | 1190 | 245M | return (value >> shift) | (value << ((-shift) & 31)); | 1191 | 245M | #endif | 1192 | 245M | } |
Unexecuted instantiation: cbb.c:CRYPTO_rotr_u32 Unexecuted instantiation: cbs.c:CRYPTO_rotr_u32 Unexecuted instantiation: convert.c:CRYPTO_rotr_u32 Unexecuted instantiation: crypto.c:CRYPTO_rotr_u32 Unexecuted instantiation: curve25519.c:CRYPTO_rotr_u32 Unexecuted instantiation: digest_extra.c:CRYPTO_rotr_u32 Unexecuted instantiation: dsa.c:CRYPTO_rotr_u32 Unexecuted instantiation: dsa_asn1.c:CRYPTO_rotr_u32 Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_rotr_u32 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_rotr_u32 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_rotr_u32 Unexecuted instantiation: e_des.c:CRYPTO_rotr_u32 Unexecuted instantiation: e_rc2.c:CRYPTO_rotr_u32 Unexecuted instantiation: e_rc4.c:CRYPTO_rotr_u32 Unexecuted instantiation: e_tls.c:CRYPTO_rotr_u32 Unexecuted instantiation: ecdh_extra.c:CRYPTO_rotr_u32 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_rotr_u32 Unexecuted instantiation: engine.c:CRYPTO_rotr_u32 Unexecuted instantiation: err.c:CRYPTO_rotr_u32 Unexecuted instantiation: evp.c:CRYPTO_rotr_u32 Unexecuted instantiation: evp_ctx.c:CRYPTO_rotr_u32 Unexecuted instantiation: ex_data.c:CRYPTO_rotr_u32 Unexecuted instantiation: file.c:CRYPTO_rotr_u32 Unexecuted instantiation: fork_detect.c:CRYPTO_rotr_u32 Unexecuted instantiation: forkunsafe.c:CRYPTO_rotr_u32 Unexecuted instantiation: md4.c:CRYPTO_rotr_u32 Unexecuted instantiation: md5.c:CRYPTO_rotr_u32 Unexecuted instantiation: mem.c:CRYPTO_rotr_u32 Unexecuted instantiation: obj.c:CRYPTO_rotr_u32 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_rotr_u32 Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_rotr_u32 Unexecuted instantiation: p_ec.c:CRYPTO_rotr_u32 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_rotr_u32 Unexecuted instantiation: p_hkdf.c:CRYPTO_rotr_u32 Unexecuted instantiation: p_rsa.c:CRYPTO_rotr_u32 Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_rotr_u32 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_rotr_u32 Unexecuted instantiation: pbkdf.c:CRYPTO_rotr_u32 Unexecuted instantiation: poly1305_vec.c:CRYPTO_rotr_u32 Unexecuted instantiation: refcount.c:CRYPTO_rotr_u32 Unexecuted instantiation: rsa_asn1.c:CRYPTO_rotr_u32 Unexecuted instantiation: rsa_crypt.c:CRYPTO_rotr_u32 Unexecuted instantiation: scrypt.c:CRYPTO_rotr_u32 Unexecuted instantiation: siphash.c:CRYPTO_rotr_u32 Unexecuted instantiation: stack.c:CRYPTO_rotr_u32 Unexecuted instantiation: thread_pthread.c:CRYPTO_rotr_u32 Unexecuted instantiation: tls_cbc.c:CRYPTO_rotr_u32 Unexecuted instantiation: urandom.c:CRYPTO_rotr_u32 Unexecuted instantiation: a_bitstr.c:CRYPTO_rotr_u32 Unexecuted instantiation: a_object.c:CRYPTO_rotr_u32 Unexecuted instantiation: asn1_compat.c:CRYPTO_rotr_u32 Unexecuted instantiation: bio.c:CRYPTO_rotr_u32 Unexecuted instantiation: blake2.c:CRYPTO_rotr_u32 Unexecuted instantiation: chacha.c:CRYPTO_rotr_u32 Line | Count | Source | 1186 | 140k | static inline uint32_t CRYPTO_rotr_u32(uint32_t value, int shift) { | 1187 | | #if defined(_MSC_VER) | 1188 | | return _rotr(value, shift); | 1189 | | #else | 1190 | 140k | return (value >> shift) | (value << ((-shift) & 31)); | 1191 | 140k | #endif | 1192 | 140k | } |
Unexecuted instantiation: ec_asn1.c:CRYPTO_rotr_u32 Unexecuted instantiation: lhash.c:CRYPTO_rotr_u32 Unexecuted instantiation: tasn_dec.c:CRYPTO_rotr_u32 Unexecuted instantiation: tasn_enc.c:CRYPTO_rotr_u32 Unexecuted instantiation: tasn_new.c:CRYPTO_rotr_u32 Unexecuted instantiation: tasn_utl.c:CRYPTO_rotr_u32 Unexecuted instantiation: pool.c:CRYPTO_rotr_u32 Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_rotr_u32 Unexecuted instantiation: cpu_intel.c:CRYPTO_rotr_u32 |
1193 | | |
1194 | 0 | static inline uint64_t CRYPTO_rotl_u64(uint64_t value, int shift) { |
1195 | | #if defined(_MSC_VER) |
1196 | | return _rotl64(value, shift); |
1197 | | #else |
1198 | 0 | return (value << shift) | (value >> ((-shift) & 63)); |
1199 | 0 | #endif |
1200 | 0 | } Unexecuted instantiation: a_int.c:CRYPTO_rotl_u64 Unexecuted instantiation: asn1_lib.c:CRYPTO_rotl_u64 Unexecuted instantiation: bcm.c:CRYPTO_rotl_u64 Unexecuted instantiation: cbb.c:CRYPTO_rotl_u64 Unexecuted instantiation: cbs.c:CRYPTO_rotl_u64 Unexecuted instantiation: convert.c:CRYPTO_rotl_u64 Unexecuted instantiation: crypto.c:CRYPTO_rotl_u64 Unexecuted instantiation: curve25519.c:CRYPTO_rotl_u64 Unexecuted instantiation: digest_extra.c:CRYPTO_rotl_u64 Unexecuted instantiation: dsa.c:CRYPTO_rotl_u64 Unexecuted instantiation: dsa_asn1.c:CRYPTO_rotl_u64 Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_rotl_u64 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_rotl_u64 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_rotl_u64 Unexecuted instantiation: e_des.c:CRYPTO_rotl_u64 Unexecuted instantiation: e_rc2.c:CRYPTO_rotl_u64 Unexecuted instantiation: e_rc4.c:CRYPTO_rotl_u64 Unexecuted instantiation: e_tls.c:CRYPTO_rotl_u64 Unexecuted instantiation: ecdh_extra.c:CRYPTO_rotl_u64 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_rotl_u64 Unexecuted instantiation: engine.c:CRYPTO_rotl_u64 Unexecuted instantiation: err.c:CRYPTO_rotl_u64 Unexecuted instantiation: evp.c:CRYPTO_rotl_u64 Unexecuted instantiation: evp_ctx.c:CRYPTO_rotl_u64 Unexecuted instantiation: ex_data.c:CRYPTO_rotl_u64 Unexecuted instantiation: file.c:CRYPTO_rotl_u64 Unexecuted instantiation: fork_detect.c:CRYPTO_rotl_u64 Unexecuted instantiation: forkunsafe.c:CRYPTO_rotl_u64 Unexecuted instantiation: md4.c:CRYPTO_rotl_u64 Unexecuted instantiation: md5.c:CRYPTO_rotl_u64 Unexecuted instantiation: mem.c:CRYPTO_rotl_u64 Unexecuted instantiation: obj.c:CRYPTO_rotl_u64 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_rotl_u64 Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_rotl_u64 Unexecuted instantiation: p_ec.c:CRYPTO_rotl_u64 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_rotl_u64 Unexecuted instantiation: p_hkdf.c:CRYPTO_rotl_u64 Unexecuted instantiation: p_rsa.c:CRYPTO_rotl_u64 Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_rotl_u64 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_rotl_u64 Unexecuted instantiation: pbkdf.c:CRYPTO_rotl_u64 Unexecuted instantiation: poly1305_vec.c:CRYPTO_rotl_u64 Unexecuted instantiation: refcount.c:CRYPTO_rotl_u64 Unexecuted instantiation: rsa_asn1.c:CRYPTO_rotl_u64 Unexecuted instantiation: rsa_crypt.c:CRYPTO_rotl_u64 Unexecuted instantiation: scrypt.c:CRYPTO_rotl_u64 Unexecuted instantiation: siphash.c:CRYPTO_rotl_u64 Unexecuted instantiation: stack.c:CRYPTO_rotl_u64 Unexecuted instantiation: thread_pthread.c:CRYPTO_rotl_u64 Unexecuted instantiation: tls_cbc.c:CRYPTO_rotl_u64 Unexecuted instantiation: urandom.c:CRYPTO_rotl_u64 Unexecuted instantiation: a_bitstr.c:CRYPTO_rotl_u64 Unexecuted instantiation: a_object.c:CRYPTO_rotl_u64 Unexecuted instantiation: asn1_compat.c:CRYPTO_rotl_u64 Unexecuted instantiation: bio.c:CRYPTO_rotl_u64 Unexecuted instantiation: blake2.c:CRYPTO_rotl_u64 Unexecuted instantiation: chacha.c:CRYPTO_rotl_u64 Unexecuted instantiation: des.c:CRYPTO_rotl_u64 Unexecuted instantiation: ec_asn1.c:CRYPTO_rotl_u64 Unexecuted instantiation: lhash.c:CRYPTO_rotl_u64 Unexecuted instantiation: tasn_dec.c:CRYPTO_rotl_u64 Unexecuted instantiation: tasn_enc.c:CRYPTO_rotl_u64 Unexecuted instantiation: tasn_new.c:CRYPTO_rotl_u64 Unexecuted instantiation: tasn_utl.c:CRYPTO_rotl_u64 Unexecuted instantiation: pool.c:CRYPTO_rotl_u64 Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_rotl_u64 Unexecuted instantiation: cpu_intel.c:CRYPTO_rotl_u64 |
1201 | | |
1202 | 111M | static inline uint64_t CRYPTO_rotr_u64(uint64_t value, int shift) { |
1203 | | #if defined(_MSC_VER) |
1204 | | return _rotr64(value, shift); |
1205 | | #else |
1206 | 111M | return (value >> shift) | (value << ((-shift) & 63)); |
1207 | 111M | #endif |
1208 | 111M | } Unexecuted instantiation: a_int.c:CRYPTO_rotr_u64 Unexecuted instantiation: asn1_lib.c:CRYPTO_rotr_u64 Line | Count | Source | 1202 | 95.9M | static inline uint64_t CRYPTO_rotr_u64(uint64_t value, int shift) { | 1203 | | #if defined(_MSC_VER) | 1204 | | return _rotr64(value, shift); | 1205 | | #else | 1206 | 95.9M | return (value >> shift) | (value << ((-shift) & 63)); | 1207 | 95.9M | #endif | 1208 | 95.9M | } |
Unexecuted instantiation: cbb.c:CRYPTO_rotr_u64 Unexecuted instantiation: cbs.c:CRYPTO_rotr_u64 Unexecuted instantiation: convert.c:CRYPTO_rotr_u64 Unexecuted instantiation: crypto.c:CRYPTO_rotr_u64 Unexecuted instantiation: curve25519.c:CRYPTO_rotr_u64 Unexecuted instantiation: digest_extra.c:CRYPTO_rotr_u64 Unexecuted instantiation: dsa.c:CRYPTO_rotr_u64 Unexecuted instantiation: dsa_asn1.c:CRYPTO_rotr_u64 Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_rotr_u64 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_rotr_u64 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_rotr_u64 Unexecuted instantiation: e_des.c:CRYPTO_rotr_u64 Unexecuted instantiation: e_rc2.c:CRYPTO_rotr_u64 Unexecuted instantiation: e_rc4.c:CRYPTO_rotr_u64 Unexecuted instantiation: e_tls.c:CRYPTO_rotr_u64 Unexecuted instantiation: ecdh_extra.c:CRYPTO_rotr_u64 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_rotr_u64 Unexecuted instantiation: engine.c:CRYPTO_rotr_u64 Unexecuted instantiation: err.c:CRYPTO_rotr_u64 Unexecuted instantiation: evp.c:CRYPTO_rotr_u64 Unexecuted instantiation: evp_ctx.c:CRYPTO_rotr_u64 Unexecuted instantiation: ex_data.c:CRYPTO_rotr_u64 Unexecuted instantiation: file.c:CRYPTO_rotr_u64 Unexecuted instantiation: fork_detect.c:CRYPTO_rotr_u64 Unexecuted instantiation: forkunsafe.c:CRYPTO_rotr_u64 Unexecuted instantiation: md4.c:CRYPTO_rotr_u64 Unexecuted instantiation: md5.c:CRYPTO_rotr_u64 Unexecuted instantiation: mem.c:CRYPTO_rotr_u64 Unexecuted instantiation: obj.c:CRYPTO_rotr_u64 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_rotr_u64 Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_rotr_u64 Unexecuted instantiation: p_ec.c:CRYPTO_rotr_u64 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_rotr_u64 Unexecuted instantiation: p_hkdf.c:CRYPTO_rotr_u64 Unexecuted instantiation: p_rsa.c:CRYPTO_rotr_u64 Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_rotr_u64 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_rotr_u64 Unexecuted instantiation: pbkdf.c:CRYPTO_rotr_u64 Unexecuted instantiation: poly1305_vec.c:CRYPTO_rotr_u64 Unexecuted instantiation: refcount.c:CRYPTO_rotr_u64 Unexecuted instantiation: rsa_asn1.c:CRYPTO_rotr_u64 Unexecuted instantiation: rsa_crypt.c:CRYPTO_rotr_u64 Unexecuted instantiation: scrypt.c:CRYPTO_rotr_u64 Unexecuted instantiation: siphash.c:CRYPTO_rotr_u64 Unexecuted instantiation: stack.c:CRYPTO_rotr_u64 Unexecuted instantiation: thread_pthread.c:CRYPTO_rotr_u64 Unexecuted instantiation: tls_cbc.c:CRYPTO_rotr_u64 Unexecuted instantiation: urandom.c:CRYPTO_rotr_u64 Unexecuted instantiation: a_bitstr.c:CRYPTO_rotr_u64 Unexecuted instantiation: a_object.c:CRYPTO_rotr_u64 Unexecuted instantiation: asn1_compat.c:CRYPTO_rotr_u64 Unexecuted instantiation: bio.c:CRYPTO_rotr_u64 Line | Count | Source | 1202 | 15.7M | static inline uint64_t CRYPTO_rotr_u64(uint64_t value, int shift) { | 1203 | | #if defined(_MSC_VER) | 1204 | | return _rotr64(value, shift); | 1205 | | #else | 1206 | 15.7M | return (value >> shift) | (value << ((-shift) & 63)); | 1207 | 15.7M | #endif | 1208 | 15.7M | } |
Unexecuted instantiation: chacha.c:CRYPTO_rotr_u64 Unexecuted instantiation: des.c:CRYPTO_rotr_u64 Unexecuted instantiation: ec_asn1.c:CRYPTO_rotr_u64 Unexecuted instantiation: lhash.c:CRYPTO_rotr_u64 Unexecuted instantiation: tasn_dec.c:CRYPTO_rotr_u64 Unexecuted instantiation: tasn_enc.c:CRYPTO_rotr_u64 Unexecuted instantiation: tasn_new.c:CRYPTO_rotr_u64 Unexecuted instantiation: tasn_utl.c:CRYPTO_rotr_u64 Unexecuted instantiation: pool.c:CRYPTO_rotr_u64 Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_rotr_u64 Unexecuted instantiation: cpu_intel.c:CRYPTO_rotr_u64 |
1209 | | |
1210 | | |
1211 | | // Arithmetic functions. |
1212 | | |
1213 | | // The most efficient versions of these functions on GCC and Clang depend on C11 |
1214 | | // |_Generic|. If we ever need to call these from C++, we'll need to add a |
1215 | | // variant that uses C++ overloads instead. |
1216 | | #if !defined(__cplusplus) |
1217 | | |
1218 | | // CRYPTO_addc_* returns |x + y + carry|, and sets |*out_carry| to the carry |
1219 | | // bit. |carry| must be zero or one. |
1220 | | #if OPENSSL_HAS_BUILTIN(__builtin_addc) |
1221 | | |
1222 | | #define CRYPTO_GENERIC_ADDC(x, y, carry, out_carry) \ |
1223 | 638M | (_Generic((x), \ |
1224 | 638M | unsigned: __builtin_addc, \ |
1225 | 638M | unsigned long: __builtin_addcl, \ |
1226 | 638M | unsigned long long: __builtin_addcll))((x), (y), (carry), (out_carry)) |
1227 | | |
1228 | | static inline uint32_t CRYPTO_addc_u32(uint32_t x, uint32_t y, uint32_t carry, |
1229 | 0 | uint32_t *out_carry) { |
1230 | 0 | declassify_assert(carry <= 1); |
1231 | 0 | return CRYPTO_GENERIC_ADDC(x, y, carry, out_carry); |
1232 | 0 | } Unexecuted instantiation: a_int.c:CRYPTO_addc_u32 Unexecuted instantiation: asn1_lib.c:CRYPTO_addc_u32 Unexecuted instantiation: bcm.c:CRYPTO_addc_u32 Unexecuted instantiation: cbb.c:CRYPTO_addc_u32 Unexecuted instantiation: cbs.c:CRYPTO_addc_u32 Unexecuted instantiation: convert.c:CRYPTO_addc_u32 Unexecuted instantiation: crypto.c:CRYPTO_addc_u32 Unexecuted instantiation: curve25519.c:CRYPTO_addc_u32 Unexecuted instantiation: digest_extra.c:CRYPTO_addc_u32 Unexecuted instantiation: dsa.c:CRYPTO_addc_u32 Unexecuted instantiation: dsa_asn1.c:CRYPTO_addc_u32 Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_addc_u32 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_addc_u32 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_addc_u32 Unexecuted instantiation: e_des.c:CRYPTO_addc_u32 Unexecuted instantiation: e_rc2.c:CRYPTO_addc_u32 Unexecuted instantiation: e_rc4.c:CRYPTO_addc_u32 Unexecuted instantiation: e_tls.c:CRYPTO_addc_u32 Unexecuted instantiation: ecdh_extra.c:CRYPTO_addc_u32 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_addc_u32 Unexecuted instantiation: engine.c:CRYPTO_addc_u32 Unexecuted instantiation: err.c:CRYPTO_addc_u32 Unexecuted instantiation: evp.c:CRYPTO_addc_u32 Unexecuted instantiation: evp_ctx.c:CRYPTO_addc_u32 Unexecuted instantiation: ex_data.c:CRYPTO_addc_u32 Unexecuted instantiation: file.c:CRYPTO_addc_u32 Unexecuted instantiation: fork_detect.c:CRYPTO_addc_u32 Unexecuted instantiation: forkunsafe.c:CRYPTO_addc_u32 Unexecuted instantiation: md4.c:CRYPTO_addc_u32 Unexecuted instantiation: md5.c:CRYPTO_addc_u32 Unexecuted instantiation: mem.c:CRYPTO_addc_u32 Unexecuted instantiation: obj.c:CRYPTO_addc_u32 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_addc_u32 Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_addc_u32 Unexecuted instantiation: p_ec.c:CRYPTO_addc_u32 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_addc_u32 Unexecuted instantiation: p_hkdf.c:CRYPTO_addc_u32 Unexecuted instantiation: p_rsa.c:CRYPTO_addc_u32 Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_addc_u32 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_addc_u32 Unexecuted instantiation: pbkdf.c:CRYPTO_addc_u32 Unexecuted instantiation: poly1305_vec.c:CRYPTO_addc_u32 Unexecuted instantiation: refcount.c:CRYPTO_addc_u32 Unexecuted instantiation: rsa_asn1.c:CRYPTO_addc_u32 Unexecuted instantiation: rsa_crypt.c:CRYPTO_addc_u32 Unexecuted instantiation: scrypt.c:CRYPTO_addc_u32 Unexecuted instantiation: siphash.c:CRYPTO_addc_u32 Unexecuted instantiation: stack.c:CRYPTO_addc_u32 Unexecuted instantiation: thread_pthread.c:CRYPTO_addc_u32 Unexecuted instantiation: tls_cbc.c:CRYPTO_addc_u32 Unexecuted instantiation: urandom.c:CRYPTO_addc_u32 Unexecuted instantiation: a_bitstr.c:CRYPTO_addc_u32 Unexecuted instantiation: a_object.c:CRYPTO_addc_u32 Unexecuted instantiation: asn1_compat.c:CRYPTO_addc_u32 Unexecuted instantiation: bio.c:CRYPTO_addc_u32 Unexecuted instantiation: blake2.c:CRYPTO_addc_u32 Unexecuted instantiation: chacha.c:CRYPTO_addc_u32 Unexecuted instantiation: des.c:CRYPTO_addc_u32 Unexecuted instantiation: ec_asn1.c:CRYPTO_addc_u32 Unexecuted instantiation: lhash.c:CRYPTO_addc_u32 Unexecuted instantiation: tasn_dec.c:CRYPTO_addc_u32 Unexecuted instantiation: tasn_enc.c:CRYPTO_addc_u32 Unexecuted instantiation: tasn_new.c:CRYPTO_addc_u32 Unexecuted instantiation: tasn_utl.c:CRYPTO_addc_u32 Unexecuted instantiation: pool.c:CRYPTO_addc_u32 Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_addc_u32 Unexecuted instantiation: cpu_intel.c:CRYPTO_addc_u32 |
1233 | | |
1234 | | static inline uint64_t CRYPTO_addc_u64(uint64_t x, uint64_t y, uint64_t carry, |
1235 | 638M | uint64_t *out_carry) { |
1236 | 638M | declassify_assert(carry <= 1); |
1237 | 638M | return CRYPTO_GENERIC_ADDC(x, y, carry, out_carry); |
1238 | 638M | } Unexecuted instantiation: a_int.c:CRYPTO_addc_u64 Unexecuted instantiation: asn1_lib.c:CRYPTO_addc_u64 Line | Count | Source | 1235 | 638M | uint64_t *out_carry) { | 1236 | 638M | declassify_assert(carry <= 1); | 1237 | 638M | return CRYPTO_GENERIC_ADDC(x, y, carry, out_carry); | 1238 | 638M | } |
Unexecuted instantiation: cbb.c:CRYPTO_addc_u64 Unexecuted instantiation: cbs.c:CRYPTO_addc_u64 Unexecuted instantiation: convert.c:CRYPTO_addc_u64 Unexecuted instantiation: crypto.c:CRYPTO_addc_u64 Unexecuted instantiation: curve25519.c:CRYPTO_addc_u64 Unexecuted instantiation: digest_extra.c:CRYPTO_addc_u64 Unexecuted instantiation: dsa.c:CRYPTO_addc_u64 Unexecuted instantiation: dsa_asn1.c:CRYPTO_addc_u64 Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_addc_u64 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_addc_u64 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_addc_u64 Unexecuted instantiation: e_des.c:CRYPTO_addc_u64 Unexecuted instantiation: e_rc2.c:CRYPTO_addc_u64 Unexecuted instantiation: e_rc4.c:CRYPTO_addc_u64 Unexecuted instantiation: e_tls.c:CRYPTO_addc_u64 Unexecuted instantiation: ecdh_extra.c:CRYPTO_addc_u64 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_addc_u64 Unexecuted instantiation: engine.c:CRYPTO_addc_u64 Unexecuted instantiation: err.c:CRYPTO_addc_u64 Unexecuted instantiation: evp.c:CRYPTO_addc_u64 Unexecuted instantiation: evp_ctx.c:CRYPTO_addc_u64 Unexecuted instantiation: ex_data.c:CRYPTO_addc_u64 Unexecuted instantiation: file.c:CRYPTO_addc_u64 Unexecuted instantiation: fork_detect.c:CRYPTO_addc_u64 Unexecuted instantiation: forkunsafe.c:CRYPTO_addc_u64 Unexecuted instantiation: md4.c:CRYPTO_addc_u64 Unexecuted instantiation: md5.c:CRYPTO_addc_u64 Unexecuted instantiation: mem.c:CRYPTO_addc_u64 Unexecuted instantiation: obj.c:CRYPTO_addc_u64 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_addc_u64 Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_addc_u64 Unexecuted instantiation: p_ec.c:CRYPTO_addc_u64 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_addc_u64 Unexecuted instantiation: p_hkdf.c:CRYPTO_addc_u64 Unexecuted instantiation: p_rsa.c:CRYPTO_addc_u64 Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_addc_u64 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_addc_u64 Unexecuted instantiation: pbkdf.c:CRYPTO_addc_u64 Unexecuted instantiation: poly1305_vec.c:CRYPTO_addc_u64 Unexecuted instantiation: refcount.c:CRYPTO_addc_u64 Unexecuted instantiation: rsa_asn1.c:CRYPTO_addc_u64 Unexecuted instantiation: rsa_crypt.c:CRYPTO_addc_u64 Unexecuted instantiation: scrypt.c:CRYPTO_addc_u64 Unexecuted instantiation: siphash.c:CRYPTO_addc_u64 Unexecuted instantiation: stack.c:CRYPTO_addc_u64 Unexecuted instantiation: thread_pthread.c:CRYPTO_addc_u64 Unexecuted instantiation: tls_cbc.c:CRYPTO_addc_u64 Unexecuted instantiation: urandom.c:CRYPTO_addc_u64 Unexecuted instantiation: a_bitstr.c:CRYPTO_addc_u64 Unexecuted instantiation: a_object.c:CRYPTO_addc_u64 Unexecuted instantiation: asn1_compat.c:CRYPTO_addc_u64 Unexecuted instantiation: bio.c:CRYPTO_addc_u64 Unexecuted instantiation: blake2.c:CRYPTO_addc_u64 Unexecuted instantiation: chacha.c:CRYPTO_addc_u64 Unexecuted instantiation: des.c:CRYPTO_addc_u64 Unexecuted instantiation: ec_asn1.c:CRYPTO_addc_u64 Unexecuted instantiation: lhash.c:CRYPTO_addc_u64 Unexecuted instantiation: tasn_dec.c:CRYPTO_addc_u64 Unexecuted instantiation: tasn_enc.c:CRYPTO_addc_u64 Unexecuted instantiation: tasn_new.c:CRYPTO_addc_u64 Unexecuted instantiation: tasn_utl.c:CRYPTO_addc_u64 Unexecuted instantiation: pool.c:CRYPTO_addc_u64 Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_addc_u64 Unexecuted instantiation: cpu_intel.c:CRYPTO_addc_u64 |
1239 | | |
1240 | | #else |
1241 | | |
1242 | | static inline uint32_t CRYPTO_addc_u32(uint32_t x, uint32_t y, uint32_t carry, |
1243 | | uint32_t *out_carry) { |
1244 | | declassify_assert(carry <= 1); |
1245 | | uint64_t ret = carry; |
1246 | | ret += (uint64_t)x + y; |
1247 | | *out_carry = (uint32_t)(ret >> 32); |
1248 | | return (uint32_t)ret; |
1249 | | } |
1250 | | |
1251 | | static inline uint64_t CRYPTO_addc_u64(uint64_t x, uint64_t y, uint64_t carry, |
1252 | | uint64_t *out_carry) { |
1253 | | declassify_assert(carry <= 1); |
1254 | | #if defined(BORINGSSL_HAS_UINT128) |
1255 | | uint128_t ret = carry; |
1256 | | ret += (uint128_t)x + y; |
1257 | | *out_carry = (uint64_t)(ret >> 64); |
1258 | | return (uint64_t)ret; |
1259 | | #else |
1260 | | x += carry; |
1261 | | carry = x < carry; |
1262 | | uint64_t ret = x + y; |
1263 | | carry += ret < x; |
1264 | | *out_carry = carry; |
1265 | | return ret; |
1266 | | #endif |
1267 | | } |
1268 | | #endif |
1269 | | |
1270 | | // CRYPTO_subc_* returns |x - y - borrow|, and sets |*out_borrow| to the borrow |
1271 | | // bit. |borrow| must be zero or one. |
1272 | | #if OPENSSL_HAS_BUILTIN(__builtin_subc) |
1273 | | |
1274 | | #define CRYPTO_GENERIC_SUBC(x, y, borrow, out_borrow) \ |
1275 | 640M | (_Generic((x), \ |
1276 | 640M | unsigned: __builtin_subc, \ |
1277 | 640M | unsigned long: __builtin_subcl, \ |
1278 | 640M | unsigned long long: __builtin_subcll))((x), (y), (borrow), (out_borrow)) |
1279 | | |
1280 | | static inline uint32_t CRYPTO_subc_u32(uint32_t x, uint32_t y, uint32_t borrow, |
1281 | 0 | uint32_t *out_borrow) { |
1282 | 0 | declassify_assert(borrow <= 1); |
1283 | 0 | return CRYPTO_GENERIC_SUBC(x, y, borrow, out_borrow); |
1284 | 0 | } Unexecuted instantiation: a_int.c:CRYPTO_subc_u32 Unexecuted instantiation: asn1_lib.c:CRYPTO_subc_u32 Unexecuted instantiation: bcm.c:CRYPTO_subc_u32 Unexecuted instantiation: cbb.c:CRYPTO_subc_u32 Unexecuted instantiation: cbs.c:CRYPTO_subc_u32 Unexecuted instantiation: convert.c:CRYPTO_subc_u32 Unexecuted instantiation: crypto.c:CRYPTO_subc_u32 Unexecuted instantiation: curve25519.c:CRYPTO_subc_u32 Unexecuted instantiation: digest_extra.c:CRYPTO_subc_u32 Unexecuted instantiation: dsa.c:CRYPTO_subc_u32 Unexecuted instantiation: dsa_asn1.c:CRYPTO_subc_u32 Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_subc_u32 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_subc_u32 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_subc_u32 Unexecuted instantiation: e_des.c:CRYPTO_subc_u32 Unexecuted instantiation: e_rc2.c:CRYPTO_subc_u32 Unexecuted instantiation: e_rc4.c:CRYPTO_subc_u32 Unexecuted instantiation: e_tls.c:CRYPTO_subc_u32 Unexecuted instantiation: ecdh_extra.c:CRYPTO_subc_u32 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_subc_u32 Unexecuted instantiation: engine.c:CRYPTO_subc_u32 Unexecuted instantiation: err.c:CRYPTO_subc_u32 Unexecuted instantiation: evp.c:CRYPTO_subc_u32 Unexecuted instantiation: evp_ctx.c:CRYPTO_subc_u32 Unexecuted instantiation: ex_data.c:CRYPTO_subc_u32 Unexecuted instantiation: file.c:CRYPTO_subc_u32 Unexecuted instantiation: fork_detect.c:CRYPTO_subc_u32 Unexecuted instantiation: forkunsafe.c:CRYPTO_subc_u32 Unexecuted instantiation: md4.c:CRYPTO_subc_u32 Unexecuted instantiation: md5.c:CRYPTO_subc_u32 Unexecuted instantiation: mem.c:CRYPTO_subc_u32 Unexecuted instantiation: obj.c:CRYPTO_subc_u32 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_subc_u32 Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_subc_u32 Unexecuted instantiation: p_ec.c:CRYPTO_subc_u32 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_subc_u32 Unexecuted instantiation: p_hkdf.c:CRYPTO_subc_u32 Unexecuted instantiation: p_rsa.c:CRYPTO_subc_u32 Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_subc_u32 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_subc_u32 Unexecuted instantiation: pbkdf.c:CRYPTO_subc_u32 Unexecuted instantiation: poly1305_vec.c:CRYPTO_subc_u32 Unexecuted instantiation: refcount.c:CRYPTO_subc_u32 Unexecuted instantiation: rsa_asn1.c:CRYPTO_subc_u32 Unexecuted instantiation: rsa_crypt.c:CRYPTO_subc_u32 Unexecuted instantiation: scrypt.c:CRYPTO_subc_u32 Unexecuted instantiation: siphash.c:CRYPTO_subc_u32 Unexecuted instantiation: stack.c:CRYPTO_subc_u32 Unexecuted instantiation: thread_pthread.c:CRYPTO_subc_u32 Unexecuted instantiation: tls_cbc.c:CRYPTO_subc_u32 Unexecuted instantiation: urandom.c:CRYPTO_subc_u32 Unexecuted instantiation: a_bitstr.c:CRYPTO_subc_u32 Unexecuted instantiation: a_object.c:CRYPTO_subc_u32 Unexecuted instantiation: asn1_compat.c:CRYPTO_subc_u32 Unexecuted instantiation: bio.c:CRYPTO_subc_u32 Unexecuted instantiation: blake2.c:CRYPTO_subc_u32 Unexecuted instantiation: chacha.c:CRYPTO_subc_u32 Unexecuted instantiation: des.c:CRYPTO_subc_u32 Unexecuted instantiation: ec_asn1.c:CRYPTO_subc_u32 Unexecuted instantiation: lhash.c:CRYPTO_subc_u32 Unexecuted instantiation: tasn_dec.c:CRYPTO_subc_u32 Unexecuted instantiation: tasn_enc.c:CRYPTO_subc_u32 Unexecuted instantiation: tasn_new.c:CRYPTO_subc_u32 Unexecuted instantiation: tasn_utl.c:CRYPTO_subc_u32 Unexecuted instantiation: pool.c:CRYPTO_subc_u32 Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_subc_u32 Unexecuted instantiation: cpu_intel.c:CRYPTO_subc_u32 |
1285 | | |
1286 | | static inline uint64_t CRYPTO_subc_u64(uint64_t x, uint64_t y, uint64_t borrow, |
1287 | 640M | uint64_t *out_borrow) { |
1288 | 640M | declassify_assert(borrow <= 1); |
1289 | 640M | return CRYPTO_GENERIC_SUBC(x, y, borrow, out_borrow); |
1290 | 640M | } Unexecuted instantiation: a_int.c:CRYPTO_subc_u64 Unexecuted instantiation: asn1_lib.c:CRYPTO_subc_u64 Line | Count | Source | 1287 | 640M | uint64_t *out_borrow) { | 1288 | 640M | declassify_assert(borrow <= 1); | 1289 | 640M | return CRYPTO_GENERIC_SUBC(x, y, borrow, out_borrow); | 1290 | 640M | } |
Unexecuted instantiation: cbb.c:CRYPTO_subc_u64 Unexecuted instantiation: cbs.c:CRYPTO_subc_u64 Unexecuted instantiation: convert.c:CRYPTO_subc_u64 Unexecuted instantiation: crypto.c:CRYPTO_subc_u64 Unexecuted instantiation: curve25519.c:CRYPTO_subc_u64 Unexecuted instantiation: digest_extra.c:CRYPTO_subc_u64 Unexecuted instantiation: dsa.c:CRYPTO_subc_u64 Unexecuted instantiation: dsa_asn1.c:CRYPTO_subc_u64 Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_subc_u64 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_subc_u64 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_subc_u64 Unexecuted instantiation: e_des.c:CRYPTO_subc_u64 Unexecuted instantiation: e_rc2.c:CRYPTO_subc_u64 Unexecuted instantiation: e_rc4.c:CRYPTO_subc_u64 Unexecuted instantiation: e_tls.c:CRYPTO_subc_u64 Unexecuted instantiation: ecdh_extra.c:CRYPTO_subc_u64 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_subc_u64 Unexecuted instantiation: engine.c:CRYPTO_subc_u64 Unexecuted instantiation: err.c:CRYPTO_subc_u64 Unexecuted instantiation: evp.c:CRYPTO_subc_u64 Unexecuted instantiation: evp_ctx.c:CRYPTO_subc_u64 Unexecuted instantiation: ex_data.c:CRYPTO_subc_u64 Unexecuted instantiation: file.c:CRYPTO_subc_u64 Unexecuted instantiation: fork_detect.c:CRYPTO_subc_u64 Unexecuted instantiation: forkunsafe.c:CRYPTO_subc_u64 Unexecuted instantiation: md4.c:CRYPTO_subc_u64 Unexecuted instantiation: md5.c:CRYPTO_subc_u64 Unexecuted instantiation: mem.c:CRYPTO_subc_u64 Unexecuted instantiation: obj.c:CRYPTO_subc_u64 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_subc_u64 Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_subc_u64 Unexecuted instantiation: p_ec.c:CRYPTO_subc_u64 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_subc_u64 Unexecuted instantiation: p_hkdf.c:CRYPTO_subc_u64 Unexecuted instantiation: p_rsa.c:CRYPTO_subc_u64 Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_subc_u64 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_subc_u64 Unexecuted instantiation: pbkdf.c:CRYPTO_subc_u64 Unexecuted instantiation: poly1305_vec.c:CRYPTO_subc_u64 Unexecuted instantiation: refcount.c:CRYPTO_subc_u64 Unexecuted instantiation: rsa_asn1.c:CRYPTO_subc_u64 Unexecuted instantiation: rsa_crypt.c:CRYPTO_subc_u64 Unexecuted instantiation: scrypt.c:CRYPTO_subc_u64 Unexecuted instantiation: siphash.c:CRYPTO_subc_u64 Unexecuted instantiation: stack.c:CRYPTO_subc_u64 Unexecuted instantiation: thread_pthread.c:CRYPTO_subc_u64 Unexecuted instantiation: tls_cbc.c:CRYPTO_subc_u64 Unexecuted instantiation: urandom.c:CRYPTO_subc_u64 Unexecuted instantiation: a_bitstr.c:CRYPTO_subc_u64 Unexecuted instantiation: a_object.c:CRYPTO_subc_u64 Unexecuted instantiation: asn1_compat.c:CRYPTO_subc_u64 Unexecuted instantiation: bio.c:CRYPTO_subc_u64 Unexecuted instantiation: blake2.c:CRYPTO_subc_u64 Unexecuted instantiation: chacha.c:CRYPTO_subc_u64 Unexecuted instantiation: des.c:CRYPTO_subc_u64 Unexecuted instantiation: ec_asn1.c:CRYPTO_subc_u64 Unexecuted instantiation: lhash.c:CRYPTO_subc_u64 Unexecuted instantiation: tasn_dec.c:CRYPTO_subc_u64 Unexecuted instantiation: tasn_enc.c:CRYPTO_subc_u64 Unexecuted instantiation: tasn_new.c:CRYPTO_subc_u64 Unexecuted instantiation: tasn_utl.c:CRYPTO_subc_u64 Unexecuted instantiation: pool.c:CRYPTO_subc_u64 Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_subc_u64 Unexecuted instantiation: cpu_intel.c:CRYPTO_subc_u64 |
1291 | | |
1292 | | #else |
1293 | | |
1294 | | static inline uint32_t CRYPTO_subc_u32(uint32_t x, uint32_t y, uint32_t borrow, |
1295 | | uint32_t *out_borrow) { |
1296 | | declassify_assert(borrow <= 1); |
1297 | | uint32_t ret = x - y - borrow; |
1298 | | *out_borrow = (x < y) | ((x == y) & borrow); |
1299 | | return ret; |
1300 | | } |
1301 | | |
1302 | | static inline uint64_t CRYPTO_subc_u64(uint64_t x, uint64_t y, uint64_t borrow, |
1303 | | uint64_t *out_borrow) { |
1304 | | declassify_assert(borrow <= 1); |
1305 | | uint64_t ret = x - y - borrow; |
1306 | | *out_borrow = (x < y) | ((x == y) & borrow); |
1307 | | return ret; |
1308 | | } |
1309 | | #endif |
1310 | | |
1311 | | #if defined(OPENSSL_64_BIT) |
1312 | 638M | #define CRYPTO_addc_w CRYPTO_addc_u64 |
1313 | 640M | #define CRYPTO_subc_w CRYPTO_subc_u64 |
1314 | | #else |
1315 | | #define CRYPTO_addc_w CRYPTO_addc_u32 |
1316 | | #define CRYPTO_subc_w CRYPTO_subc_u32 |
1317 | | #endif |
1318 | | |
1319 | | #endif // !__cplusplus |
1320 | | |
1321 | | |
1322 | | // FIPS functions. |
1323 | | |
1324 | | #if defined(BORINGSSL_FIPS) |
1325 | | |
1326 | | // BORINGSSL_FIPS_abort is called when a FIPS power-on or continuous test |
1327 | | // fails. It prevents any further cryptographic operations by the current |
1328 | | // process. |
1329 | | void BORINGSSL_FIPS_abort(void) __attribute__((noreturn)); |
1330 | | |
1331 | | // boringssl_self_test_startup runs all startup self tests and returns one on |
1332 | | // success or zero on error. Startup self tests do not include lazy tests. |
1333 | | // Call |BORINGSSL_self_test| to run every self test. |
1334 | | int boringssl_self_test_startup(void); |
1335 | | |
1336 | | // boringssl_ensure_rsa_self_test checks whether the RSA self-test has been run |
1337 | | // in this address space. If not, it runs it and crashes the address space if |
1338 | | // unsuccessful. |
1339 | | void boringssl_ensure_rsa_self_test(void); |
1340 | | |
1341 | | // boringssl_ensure_ecc_self_test checks whether the ECDSA and ECDH self-test |
1342 | | // has been run in this address space. If not, it runs it and crashes the |
1343 | | // address space if unsuccessful. |
1344 | | void boringssl_ensure_ecc_self_test(void); |
1345 | | |
1346 | | // boringssl_ensure_ffdh_self_test checks whether the FFDH self-test has been |
1347 | | // run in this address space. If not, it runs it and crashes the address space |
1348 | | // if unsuccessful. |
1349 | | void boringssl_ensure_ffdh_self_test(void); |
1350 | | |
1351 | | #else |
1352 | | |
1353 | | // Outside of FIPS mode, the lazy tests are no-ops. |
1354 | | |
1355 | 0 | OPENSSL_INLINE void boringssl_ensure_rsa_self_test(void) {} Unexecuted instantiation: a_int.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: asn1_lib.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: bcm.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: cbb.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: cbs.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: convert.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: crypto.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: curve25519.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: digest_extra.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: dsa.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: dsa_asn1.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: e_aesctrhmac.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: e_aesgcmsiv.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: e_chacha20poly1305.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: e_des.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: e_rc2.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: e_rc4.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: e_tls.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: ecdh_extra.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: ecdsa_asn1.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: engine.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: err.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: evp.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: evp_ctx.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: ex_data.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: file.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: fork_detect.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: forkunsafe.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: md4.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: md5.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: mem.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: obj.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: p_dh_asn1.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: p_dsa_asn1.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: p_ec.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: p_ed25519_asn1.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: p_hkdf.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: p_rsa.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: p_rsa_asn1.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: p_x25519_asn1.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: pbkdf.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: poly1305_vec.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: refcount.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: rsa_asn1.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: rsa_crypt.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: scrypt.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: siphash.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: stack.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: thread_pthread.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: tls_cbc.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: urandom.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: a_bitstr.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: a_object.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: asn1_compat.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: bio.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: blake2.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: chacha.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: des.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: ec_asn1.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: lhash.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: tasn_dec.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: tasn_enc.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: tasn_new.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: tasn_utl.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: pool.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: curve25519_64_adx.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: cpu_intel.c:boringssl_ensure_rsa_self_test |
1356 | 92 | OPENSSL_INLINE void boringssl_ensure_ecc_self_test(void) {} Unexecuted instantiation: a_int.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: asn1_lib.c:boringssl_ensure_ecc_self_test bcm.c:boringssl_ensure_ecc_self_test Line | Count | Source | 1356 | 92 | OPENSSL_INLINE void boringssl_ensure_ecc_self_test(void) {} |
Unexecuted instantiation: cbb.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: cbs.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: convert.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: crypto.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: curve25519.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: digest_extra.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: dsa.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: dsa_asn1.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: e_aesctrhmac.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: e_aesgcmsiv.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: e_chacha20poly1305.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: e_des.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: e_rc2.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: e_rc4.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: e_tls.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: ecdh_extra.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: ecdsa_asn1.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: engine.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: err.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: evp.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: evp_ctx.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: ex_data.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: file.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: fork_detect.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: forkunsafe.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: md4.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: md5.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: mem.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: obj.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: p_dh_asn1.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: p_dsa_asn1.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: p_ec.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: p_ed25519_asn1.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: p_hkdf.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: p_rsa.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: p_rsa_asn1.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: p_x25519_asn1.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: pbkdf.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: poly1305_vec.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: refcount.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: rsa_asn1.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: rsa_crypt.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: scrypt.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: siphash.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: stack.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: thread_pthread.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: tls_cbc.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: urandom.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: a_bitstr.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: a_object.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: asn1_compat.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: bio.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: blake2.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: chacha.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: des.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: ec_asn1.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: lhash.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: tasn_dec.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: tasn_enc.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: tasn_new.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: tasn_utl.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: pool.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: curve25519_64_adx.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: cpu_intel.c:boringssl_ensure_ecc_self_test |
1357 | 114 | OPENSSL_INLINE void boringssl_ensure_ffdh_self_test(void) {} Unexecuted instantiation: a_int.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: asn1_lib.c:boringssl_ensure_ffdh_self_test bcm.c:boringssl_ensure_ffdh_self_test Line | Count | Source | 1357 | 114 | OPENSSL_INLINE void boringssl_ensure_ffdh_self_test(void) {} |
Unexecuted instantiation: cbb.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: cbs.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: convert.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: crypto.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: curve25519.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: digest_extra.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: dsa.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: dsa_asn1.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: e_aesctrhmac.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: e_aesgcmsiv.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: e_chacha20poly1305.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: e_des.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: e_rc2.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: e_rc4.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: e_tls.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: ecdh_extra.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: ecdsa_asn1.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: engine.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: err.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: evp.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: evp_ctx.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: ex_data.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: file.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: fork_detect.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: forkunsafe.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: md4.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: md5.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: mem.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: obj.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: p_dh_asn1.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: p_dsa_asn1.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: p_ec.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: p_ed25519_asn1.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: p_hkdf.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: p_rsa.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: p_rsa_asn1.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: p_x25519_asn1.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: pbkdf.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: poly1305_vec.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: refcount.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: rsa_asn1.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: rsa_crypt.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: scrypt.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: siphash.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: stack.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: thread_pthread.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: tls_cbc.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: urandom.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: a_bitstr.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: a_object.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: asn1_compat.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: bio.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: blake2.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: chacha.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: des.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: ec_asn1.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: lhash.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: tasn_dec.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: tasn_enc.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: tasn_new.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: tasn_utl.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: pool.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: curve25519_64_adx.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: cpu_intel.c:boringssl_ensure_ffdh_self_test |
1358 | | |
1359 | | #endif // FIPS |
1360 | | |
1361 | | // boringssl_self_test_sha256 performs a SHA-256 KAT. |
1362 | | int boringssl_self_test_sha256(void); |
1363 | | |
1364 | | // boringssl_self_test_sha512 performs a SHA-512 KAT. |
1365 | | int boringssl_self_test_sha512(void); |
1366 | | |
1367 | | // boringssl_self_test_hmac_sha256 performs an HMAC-SHA-256 KAT. |
1368 | | int boringssl_self_test_hmac_sha256(void); |
1369 | | |
1370 | | #if defined(BORINGSSL_FIPS_COUNTERS) |
1371 | | void boringssl_fips_inc_counter(enum fips_counter_t counter); |
1372 | | #else |
1373 | 1.06k | OPENSSL_INLINE void boringssl_fips_inc_counter(enum fips_counter_t counter) {} Unexecuted instantiation: a_int.c:boringssl_fips_inc_counter Unexecuted instantiation: asn1_lib.c:boringssl_fips_inc_counter bcm.c:boringssl_fips_inc_counter Line | Count | Source | 1373 | 1.06k | OPENSSL_INLINE void boringssl_fips_inc_counter(enum fips_counter_t counter) {} |
Unexecuted instantiation: cbb.c:boringssl_fips_inc_counter Unexecuted instantiation: cbs.c:boringssl_fips_inc_counter Unexecuted instantiation: convert.c:boringssl_fips_inc_counter Unexecuted instantiation: crypto.c:boringssl_fips_inc_counter Unexecuted instantiation: curve25519.c:boringssl_fips_inc_counter Unexecuted instantiation: digest_extra.c:boringssl_fips_inc_counter Unexecuted instantiation: dsa.c:boringssl_fips_inc_counter Unexecuted instantiation: dsa_asn1.c:boringssl_fips_inc_counter Unexecuted instantiation: e_aesctrhmac.c:boringssl_fips_inc_counter Unexecuted instantiation: e_aesgcmsiv.c:boringssl_fips_inc_counter Unexecuted instantiation: e_chacha20poly1305.c:boringssl_fips_inc_counter Unexecuted instantiation: e_des.c:boringssl_fips_inc_counter Unexecuted instantiation: e_rc2.c:boringssl_fips_inc_counter Unexecuted instantiation: e_rc4.c:boringssl_fips_inc_counter Unexecuted instantiation: e_tls.c:boringssl_fips_inc_counter Unexecuted instantiation: ecdh_extra.c:boringssl_fips_inc_counter Unexecuted instantiation: ecdsa_asn1.c:boringssl_fips_inc_counter Unexecuted instantiation: engine.c:boringssl_fips_inc_counter Unexecuted instantiation: err.c:boringssl_fips_inc_counter Unexecuted instantiation: evp.c:boringssl_fips_inc_counter Unexecuted instantiation: evp_ctx.c:boringssl_fips_inc_counter Unexecuted instantiation: ex_data.c:boringssl_fips_inc_counter Unexecuted instantiation: file.c:boringssl_fips_inc_counter Unexecuted instantiation: fork_detect.c:boringssl_fips_inc_counter Unexecuted instantiation: forkunsafe.c:boringssl_fips_inc_counter Unexecuted instantiation: md4.c:boringssl_fips_inc_counter Unexecuted instantiation: md5.c:boringssl_fips_inc_counter Unexecuted instantiation: mem.c:boringssl_fips_inc_counter Unexecuted instantiation: obj.c:boringssl_fips_inc_counter Unexecuted instantiation: p_dh_asn1.c:boringssl_fips_inc_counter Unexecuted instantiation: p_dsa_asn1.c:boringssl_fips_inc_counter Unexecuted instantiation: p_ec.c:boringssl_fips_inc_counter Unexecuted instantiation: p_ed25519_asn1.c:boringssl_fips_inc_counter Unexecuted instantiation: p_hkdf.c:boringssl_fips_inc_counter Unexecuted instantiation: p_rsa.c:boringssl_fips_inc_counter Unexecuted instantiation: p_rsa_asn1.c:boringssl_fips_inc_counter Unexecuted instantiation: p_x25519_asn1.c:boringssl_fips_inc_counter Unexecuted instantiation: pbkdf.c:boringssl_fips_inc_counter Unexecuted instantiation: poly1305_vec.c:boringssl_fips_inc_counter Unexecuted instantiation: refcount.c:boringssl_fips_inc_counter Unexecuted instantiation: rsa_asn1.c:boringssl_fips_inc_counter Unexecuted instantiation: rsa_crypt.c:boringssl_fips_inc_counter Unexecuted instantiation: scrypt.c:boringssl_fips_inc_counter Unexecuted instantiation: siphash.c:boringssl_fips_inc_counter Unexecuted instantiation: stack.c:boringssl_fips_inc_counter Unexecuted instantiation: thread_pthread.c:boringssl_fips_inc_counter Unexecuted instantiation: tls_cbc.c:boringssl_fips_inc_counter Unexecuted instantiation: urandom.c:boringssl_fips_inc_counter Unexecuted instantiation: a_bitstr.c:boringssl_fips_inc_counter Unexecuted instantiation: a_object.c:boringssl_fips_inc_counter Unexecuted instantiation: asn1_compat.c:boringssl_fips_inc_counter Unexecuted instantiation: bio.c:boringssl_fips_inc_counter Unexecuted instantiation: blake2.c:boringssl_fips_inc_counter Unexecuted instantiation: chacha.c:boringssl_fips_inc_counter Unexecuted instantiation: des.c:boringssl_fips_inc_counter Unexecuted instantiation: ec_asn1.c:boringssl_fips_inc_counter Unexecuted instantiation: lhash.c:boringssl_fips_inc_counter Unexecuted instantiation: tasn_dec.c:boringssl_fips_inc_counter Unexecuted instantiation: tasn_enc.c:boringssl_fips_inc_counter Unexecuted instantiation: tasn_new.c:boringssl_fips_inc_counter Unexecuted instantiation: tasn_utl.c:boringssl_fips_inc_counter Unexecuted instantiation: pool.c:boringssl_fips_inc_counter Unexecuted instantiation: curve25519_64_adx.c:boringssl_fips_inc_counter Unexecuted instantiation: cpu_intel.c:boringssl_fips_inc_counter |
1374 | | #endif |
1375 | | |
1376 | | #if defined(BORINGSSL_FIPS_BREAK_TESTS) |
1377 | | OPENSSL_INLINE int boringssl_fips_break_test(const char *test) { |
1378 | | const char *const value = getenv("BORINGSSL_FIPS_BREAK_TEST"); |
1379 | | return value != NULL && strcmp(value, test) == 0; |
1380 | | } |
1381 | | #else |
1382 | 0 | OPENSSL_INLINE int boringssl_fips_break_test(const char *test) { |
1383 | 0 | return 0; |
1384 | 0 | } Unexecuted instantiation: a_int.c:boringssl_fips_break_test Unexecuted instantiation: asn1_lib.c:boringssl_fips_break_test Unexecuted instantiation: bcm.c:boringssl_fips_break_test Unexecuted instantiation: cbb.c:boringssl_fips_break_test Unexecuted instantiation: cbs.c:boringssl_fips_break_test Unexecuted instantiation: convert.c:boringssl_fips_break_test Unexecuted instantiation: crypto.c:boringssl_fips_break_test Unexecuted instantiation: curve25519.c:boringssl_fips_break_test Unexecuted instantiation: digest_extra.c:boringssl_fips_break_test Unexecuted instantiation: dsa.c:boringssl_fips_break_test Unexecuted instantiation: dsa_asn1.c:boringssl_fips_break_test Unexecuted instantiation: e_aesctrhmac.c:boringssl_fips_break_test Unexecuted instantiation: e_aesgcmsiv.c:boringssl_fips_break_test Unexecuted instantiation: e_chacha20poly1305.c:boringssl_fips_break_test Unexecuted instantiation: e_des.c:boringssl_fips_break_test Unexecuted instantiation: e_rc2.c:boringssl_fips_break_test Unexecuted instantiation: e_rc4.c:boringssl_fips_break_test Unexecuted instantiation: e_tls.c:boringssl_fips_break_test Unexecuted instantiation: ecdh_extra.c:boringssl_fips_break_test Unexecuted instantiation: ecdsa_asn1.c:boringssl_fips_break_test Unexecuted instantiation: engine.c:boringssl_fips_break_test Unexecuted instantiation: err.c:boringssl_fips_break_test Unexecuted instantiation: evp.c:boringssl_fips_break_test Unexecuted instantiation: evp_ctx.c:boringssl_fips_break_test Unexecuted instantiation: ex_data.c:boringssl_fips_break_test Unexecuted instantiation: file.c:boringssl_fips_break_test Unexecuted instantiation: fork_detect.c:boringssl_fips_break_test Unexecuted instantiation: forkunsafe.c:boringssl_fips_break_test Unexecuted instantiation: md4.c:boringssl_fips_break_test Unexecuted instantiation: md5.c:boringssl_fips_break_test Unexecuted instantiation: mem.c:boringssl_fips_break_test Unexecuted instantiation: obj.c:boringssl_fips_break_test Unexecuted instantiation: p_dh_asn1.c:boringssl_fips_break_test Unexecuted instantiation: p_dsa_asn1.c:boringssl_fips_break_test Unexecuted instantiation: p_ec.c:boringssl_fips_break_test Unexecuted instantiation: p_ed25519_asn1.c:boringssl_fips_break_test Unexecuted instantiation: p_hkdf.c:boringssl_fips_break_test Unexecuted instantiation: p_rsa.c:boringssl_fips_break_test Unexecuted instantiation: p_rsa_asn1.c:boringssl_fips_break_test Unexecuted instantiation: p_x25519_asn1.c:boringssl_fips_break_test Unexecuted instantiation: pbkdf.c:boringssl_fips_break_test Unexecuted instantiation: poly1305_vec.c:boringssl_fips_break_test Unexecuted instantiation: refcount.c:boringssl_fips_break_test Unexecuted instantiation: rsa_asn1.c:boringssl_fips_break_test Unexecuted instantiation: rsa_crypt.c:boringssl_fips_break_test Unexecuted instantiation: scrypt.c:boringssl_fips_break_test Unexecuted instantiation: siphash.c:boringssl_fips_break_test Unexecuted instantiation: stack.c:boringssl_fips_break_test Unexecuted instantiation: thread_pthread.c:boringssl_fips_break_test Unexecuted instantiation: tls_cbc.c:boringssl_fips_break_test Unexecuted instantiation: urandom.c:boringssl_fips_break_test Unexecuted instantiation: a_bitstr.c:boringssl_fips_break_test Unexecuted instantiation: a_object.c:boringssl_fips_break_test Unexecuted instantiation: asn1_compat.c:boringssl_fips_break_test Unexecuted instantiation: bio.c:boringssl_fips_break_test Unexecuted instantiation: blake2.c:boringssl_fips_break_test Unexecuted instantiation: chacha.c:boringssl_fips_break_test Unexecuted instantiation: des.c:boringssl_fips_break_test Unexecuted instantiation: ec_asn1.c:boringssl_fips_break_test Unexecuted instantiation: lhash.c:boringssl_fips_break_test Unexecuted instantiation: tasn_dec.c:boringssl_fips_break_test Unexecuted instantiation: tasn_enc.c:boringssl_fips_break_test Unexecuted instantiation: tasn_new.c:boringssl_fips_break_test Unexecuted instantiation: tasn_utl.c:boringssl_fips_break_test Unexecuted instantiation: pool.c:boringssl_fips_break_test Unexecuted instantiation: curve25519_64_adx.c:boringssl_fips_break_test Unexecuted instantiation: cpu_intel.c:boringssl_fips_break_test |
1385 | | #endif // BORINGSSL_FIPS_BREAK_TESTS |
1386 | | |
1387 | | |
1388 | | // Runtime CPU feature support |
1389 | | |
1390 | | #if defined(OPENSSL_X86) || defined(OPENSSL_X86_64) |
1391 | | // OPENSSL_ia32cap_P contains the Intel CPUID bits when running on an x86 or |
1392 | | // x86-64 system. |
1393 | | // |
1394 | | // Index 0: |
1395 | | // EDX for CPUID where EAX = 1 |
1396 | | // Bit 20 is always zero |
1397 | | // Bit 28 is adjusted to reflect whether the data cache is shared between |
1398 | | // multiple logical cores |
1399 | | // Bit 30 is used to indicate an Intel CPU |
1400 | | // Index 1: |
1401 | | // ECX for CPUID where EAX = 1 |
1402 | | // Bit 11 is used to indicate AMD XOP support, not SDBG |
1403 | | // Index 2: |
1404 | | // EBX for CPUID where EAX = 7, ECX = 0 |
1405 | | // Bit 14 (for removed feature MPX) is used to indicate a preference for ymm |
1406 | | // registers over zmm even when zmm registers are supported |
1407 | | // Index 3: |
1408 | | // ECX for CPUID where EAX = 7, ECX = 0 |
1409 | | // |
1410 | | // Note: the CPUID bits are pre-adjusted for the OSXSAVE bit and the XMM, YMM, |
1411 | | // and AVX512 bits in XCR0, so it is not necessary to check those. (WARNING: See |
1412 | | // caveats in cpu_intel.c.) |
1413 | | // |
1414 | | // From C, this symbol should only be accessed with |OPENSSL_get_ia32cap|. |
1415 | | extern uint32_t OPENSSL_ia32cap_P[4]; |
1416 | | |
1417 | | // OPENSSL_get_ia32cap initializes the library if needed and returns the |idx|th |
1418 | | // entry of |OPENSSL_ia32cap_P|. It is marked as a const function so duplicate |
1419 | | // calls can be merged by the compiler, at least when indices match. |
1420 | | OPENSSL_ATTR_CONST uint32_t OPENSSL_get_ia32cap(int idx); |
1421 | | |
1422 | | // See Intel manual, volume 2A, table 3-11. |
1423 | | |
1424 | 141 | OPENSSL_INLINE int CRYPTO_is_FXSR_capable(void) { |
1425 | 141 | #if defined(__FXSR__) |
1426 | 141 | return 1; |
1427 | | #else |
1428 | | return (OPENSSL_get_ia32cap(0) & (1u << 24)) != 0; |
1429 | | #endif |
1430 | 141 | } Unexecuted instantiation: a_int.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: asn1_lib.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: cbb.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: cbs.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: convert.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: crypto.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: curve25519.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: digest_extra.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: dsa.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: dsa_asn1.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: e_des.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: e_rc2.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: e_rc4.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: e_tls.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: ecdh_extra.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: engine.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: err.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: evp.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: evp_ctx.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: ex_data.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: file.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: fork_detect.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: forkunsafe.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: md4.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: md5.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: mem.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: obj.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: p_dh_asn1.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: p_ec.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: p_hkdf.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: p_rsa.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: pbkdf.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: poly1305_vec.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: refcount.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: rsa_asn1.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: rsa_crypt.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: scrypt.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: siphash.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: stack.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: thread_pthread.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: tls_cbc.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: urandom.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: a_bitstr.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: a_object.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: asn1_compat.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: bio.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: blake2.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: chacha.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: des.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: ec_asn1.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: lhash.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: tasn_dec.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: tasn_enc.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: tasn_new.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: tasn_utl.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: pool.c:CRYPTO_is_FXSR_capable bcm.c:CRYPTO_is_FXSR_capable Line | Count | Source | 1424 | 141 | OPENSSL_INLINE int CRYPTO_is_FXSR_capable(void) { | 1425 | 141 | #if defined(__FXSR__) | 1426 | 141 | return 1; | 1427 | | #else | 1428 | | return (OPENSSL_get_ia32cap(0) & (1u << 24)) != 0; | 1429 | | #endif | 1430 | 141 | } |
Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_is_FXSR_capable Unexecuted instantiation: cpu_intel.c:CRYPTO_is_FXSR_capable |
1431 | | |
1432 | 3.40k | OPENSSL_INLINE int CRYPTO_is_intel_cpu(void) { |
1433 | | // The reserved bit 30 is used to indicate an Intel CPU. |
1434 | 3.40k | return (OPENSSL_get_ia32cap(0) & (1u << 30)) != 0; |
1435 | 3.40k | } Unexecuted instantiation: a_int.c:CRYPTO_is_intel_cpu Unexecuted instantiation: asn1_lib.c:CRYPTO_is_intel_cpu Unexecuted instantiation: cbb.c:CRYPTO_is_intel_cpu Unexecuted instantiation: cbs.c:CRYPTO_is_intel_cpu Unexecuted instantiation: convert.c:CRYPTO_is_intel_cpu Unexecuted instantiation: crypto.c:CRYPTO_is_intel_cpu Unexecuted instantiation: curve25519.c:CRYPTO_is_intel_cpu Unexecuted instantiation: digest_extra.c:CRYPTO_is_intel_cpu Unexecuted instantiation: dsa.c:CRYPTO_is_intel_cpu Unexecuted instantiation: dsa_asn1.c:CRYPTO_is_intel_cpu Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_is_intel_cpu Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_is_intel_cpu Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_is_intel_cpu Unexecuted instantiation: e_des.c:CRYPTO_is_intel_cpu Unexecuted instantiation: e_rc2.c:CRYPTO_is_intel_cpu Unexecuted instantiation: e_rc4.c:CRYPTO_is_intel_cpu Unexecuted instantiation: e_tls.c:CRYPTO_is_intel_cpu Unexecuted instantiation: ecdh_extra.c:CRYPTO_is_intel_cpu Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_is_intel_cpu Unexecuted instantiation: engine.c:CRYPTO_is_intel_cpu Unexecuted instantiation: err.c:CRYPTO_is_intel_cpu Unexecuted instantiation: evp.c:CRYPTO_is_intel_cpu Unexecuted instantiation: evp_ctx.c:CRYPTO_is_intel_cpu Unexecuted instantiation: ex_data.c:CRYPTO_is_intel_cpu Unexecuted instantiation: file.c:CRYPTO_is_intel_cpu Unexecuted instantiation: fork_detect.c:CRYPTO_is_intel_cpu Unexecuted instantiation: forkunsafe.c:CRYPTO_is_intel_cpu Unexecuted instantiation: md4.c:CRYPTO_is_intel_cpu Unexecuted instantiation: md5.c:CRYPTO_is_intel_cpu Unexecuted instantiation: mem.c:CRYPTO_is_intel_cpu Unexecuted instantiation: obj.c:CRYPTO_is_intel_cpu Unexecuted instantiation: p_dh_asn1.c:CRYPTO_is_intel_cpu Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_is_intel_cpu Unexecuted instantiation: p_ec.c:CRYPTO_is_intel_cpu Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_is_intel_cpu Unexecuted instantiation: p_hkdf.c:CRYPTO_is_intel_cpu Unexecuted instantiation: p_rsa.c:CRYPTO_is_intel_cpu Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_is_intel_cpu Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_is_intel_cpu Unexecuted instantiation: pbkdf.c:CRYPTO_is_intel_cpu Unexecuted instantiation: poly1305_vec.c:CRYPTO_is_intel_cpu Unexecuted instantiation: refcount.c:CRYPTO_is_intel_cpu Unexecuted instantiation: rsa_asn1.c:CRYPTO_is_intel_cpu Unexecuted instantiation: rsa_crypt.c:CRYPTO_is_intel_cpu Unexecuted instantiation: scrypt.c:CRYPTO_is_intel_cpu Unexecuted instantiation: siphash.c:CRYPTO_is_intel_cpu Unexecuted instantiation: stack.c:CRYPTO_is_intel_cpu Unexecuted instantiation: thread_pthread.c:CRYPTO_is_intel_cpu Unexecuted instantiation: tls_cbc.c:CRYPTO_is_intel_cpu Unexecuted instantiation: urandom.c:CRYPTO_is_intel_cpu Unexecuted instantiation: a_bitstr.c:CRYPTO_is_intel_cpu Unexecuted instantiation: a_object.c:CRYPTO_is_intel_cpu Unexecuted instantiation: asn1_compat.c:CRYPTO_is_intel_cpu Unexecuted instantiation: bio.c:CRYPTO_is_intel_cpu Unexecuted instantiation: blake2.c:CRYPTO_is_intel_cpu Unexecuted instantiation: chacha.c:CRYPTO_is_intel_cpu Unexecuted instantiation: des.c:CRYPTO_is_intel_cpu Unexecuted instantiation: ec_asn1.c:CRYPTO_is_intel_cpu Unexecuted instantiation: lhash.c:CRYPTO_is_intel_cpu Unexecuted instantiation: tasn_dec.c:CRYPTO_is_intel_cpu Unexecuted instantiation: tasn_enc.c:CRYPTO_is_intel_cpu Unexecuted instantiation: tasn_new.c:CRYPTO_is_intel_cpu Unexecuted instantiation: tasn_utl.c:CRYPTO_is_intel_cpu Unexecuted instantiation: pool.c:CRYPTO_is_intel_cpu bcm.c:CRYPTO_is_intel_cpu Line | Count | Source | 1432 | 3.40k | OPENSSL_INLINE int CRYPTO_is_intel_cpu(void) { | 1433 | | // The reserved bit 30 is used to indicate an Intel CPU. | 1434 | 3.40k | return (OPENSSL_get_ia32cap(0) & (1u << 30)) != 0; | 1435 | 3.40k | } |
Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_is_intel_cpu Unexecuted instantiation: cpu_intel.c:CRYPTO_is_intel_cpu |
1436 | | |
1437 | | // See Intel manual, volume 2A, table 3-10. |
1438 | | |
1439 | 141 | OPENSSL_INLINE int CRYPTO_is_PCLMUL_capable(void) { |
1440 | | #if defined(__PCLMUL__) |
1441 | | return 1; |
1442 | | #else |
1443 | 141 | return (OPENSSL_get_ia32cap(1) & (1u << 1)) != 0; |
1444 | 141 | #endif |
1445 | 141 | } Unexecuted instantiation: a_int.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: asn1_lib.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: cbb.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: cbs.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: convert.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: crypto.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: curve25519.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: digest_extra.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: dsa.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: dsa_asn1.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: e_des.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: e_rc2.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: e_rc4.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: e_tls.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: ecdh_extra.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: engine.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: err.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: evp.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: evp_ctx.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: ex_data.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: file.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: fork_detect.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: forkunsafe.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: md4.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: md5.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: mem.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: obj.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: p_dh_asn1.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: p_ec.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: p_hkdf.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: p_rsa.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: pbkdf.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: poly1305_vec.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: refcount.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: rsa_asn1.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: rsa_crypt.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: scrypt.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: siphash.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: stack.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: thread_pthread.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: tls_cbc.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: urandom.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: a_bitstr.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: a_object.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: asn1_compat.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: bio.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: blake2.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: chacha.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: des.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: ec_asn1.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: lhash.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: tasn_dec.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: tasn_enc.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: tasn_new.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: tasn_utl.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: pool.c:CRYPTO_is_PCLMUL_capable bcm.c:CRYPTO_is_PCLMUL_capable Line | Count | Source | 1439 | 141 | OPENSSL_INLINE int CRYPTO_is_PCLMUL_capable(void) { | 1440 | | #if defined(__PCLMUL__) | 1441 | | return 1; | 1442 | | #else | 1443 | 141 | return (OPENSSL_get_ia32cap(1) & (1u << 1)) != 0; | 1444 | 141 | #endif | 1445 | 141 | } |
Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_is_PCLMUL_capable Unexecuted instantiation: cpu_intel.c:CRYPTO_is_PCLMUL_capable |
1446 | | |
1447 | 9.96k | OPENSSL_INLINE int CRYPTO_is_SSSE3_capable(void) { |
1448 | | #if defined(__SSSE3__) |
1449 | | return 1; |
1450 | | #else |
1451 | 9.96k | return (OPENSSL_get_ia32cap(1) & (1u << 9)) != 0; |
1452 | 9.96k | #endif |
1453 | 9.96k | } Unexecuted instantiation: a_int.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: asn1_lib.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: cbb.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: cbs.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: convert.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: crypto.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: curve25519.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: digest_extra.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: dsa.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: dsa_asn1.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: e_des.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: e_rc2.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: e_rc4.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: e_tls.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: ecdh_extra.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: engine.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: err.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: evp.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: evp_ctx.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: ex_data.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: file.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: fork_detect.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: forkunsafe.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: md4.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: md5.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: mem.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: obj.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: p_dh_asn1.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: p_ec.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: p_hkdf.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: p_rsa.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: pbkdf.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: poly1305_vec.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: refcount.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: rsa_asn1.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: rsa_crypt.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: scrypt.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: siphash.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: stack.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: thread_pthread.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: tls_cbc.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: urandom.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: a_bitstr.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: a_object.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: asn1_compat.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: bio.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: blake2.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: chacha.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: des.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: ec_asn1.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: lhash.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: tasn_dec.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: tasn_enc.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: tasn_new.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: tasn_utl.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: pool.c:CRYPTO_is_SSSE3_capable bcm.c:CRYPTO_is_SSSE3_capable Line | Count | Source | 1447 | 9.96k | OPENSSL_INLINE int CRYPTO_is_SSSE3_capable(void) { | 1448 | | #if defined(__SSSE3__) | 1449 | | return 1; | 1450 | | #else | 1451 | 9.96k | return (OPENSSL_get_ia32cap(1) & (1u << 9)) != 0; | 1452 | 9.96k | #endif | 1453 | 9.96k | } |
Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_is_SSSE3_capable Unexecuted instantiation: cpu_intel.c:CRYPTO_is_SSSE3_capable |
1454 | | |
1455 | 20 | OPENSSL_INLINE int CRYPTO_is_SSE4_1_capable(void) { |
1456 | | #if defined(__SSE4_1__) |
1457 | | return 1; |
1458 | | #else |
1459 | 20 | return (OPENSSL_get_ia32cap(1) & (1u << 19)) != 0; |
1460 | 20 | #endif |
1461 | 20 | } Unexecuted instantiation: a_int.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: asn1_lib.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: bcm.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: cbb.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: cbs.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: convert.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: crypto.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: curve25519.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: digest_extra.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: dsa.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: dsa_asn1.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: e_des.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: e_rc2.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: e_rc4.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: e_tls.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: ecdh_extra.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: engine.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: err.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: evp.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: evp_ctx.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: ex_data.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: file.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: fork_detect.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: forkunsafe.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: md4.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: md5.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: mem.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: obj.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: p_dh_asn1.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: p_ec.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: p_hkdf.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: p_rsa.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: pbkdf.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: poly1305_vec.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: refcount.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: rsa_asn1.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: rsa_crypt.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: scrypt.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: siphash.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: stack.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: thread_pthread.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: tls_cbc.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: urandom.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: a_bitstr.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: a_object.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: asn1_compat.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: bio.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: blake2.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: chacha.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: des.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: ec_asn1.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: lhash.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: tasn_dec.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: tasn_enc.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: tasn_new.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: tasn_utl.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: pool.c:CRYPTO_is_SSE4_1_capable Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_is_SSE4_1_capable e_chacha20poly1305.c:CRYPTO_is_SSE4_1_capable Line | Count | Source | 1455 | 20 | OPENSSL_INLINE int CRYPTO_is_SSE4_1_capable(void) { | 1456 | | #if defined(__SSE4_1__) | 1457 | | return 1; | 1458 | | #else | 1459 | 20 | return (OPENSSL_get_ia32cap(1) & (1u << 19)) != 0; | 1460 | 20 | #endif | 1461 | 20 | } |
Unexecuted instantiation: cpu_intel.c:CRYPTO_is_SSE4_1_capable |
1462 | | |
1463 | 141 | OPENSSL_INLINE int CRYPTO_is_MOVBE_capable(void) { |
1464 | | #if defined(__MOVBE__) |
1465 | | return 1; |
1466 | | #else |
1467 | 141 | return (OPENSSL_get_ia32cap(1) & (1u << 22)) != 0; |
1468 | 141 | #endif |
1469 | 141 | } Unexecuted instantiation: a_int.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: asn1_lib.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: cbb.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: cbs.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: convert.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: crypto.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: curve25519.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: digest_extra.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: dsa.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: dsa_asn1.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: e_des.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: e_rc2.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: e_rc4.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: e_tls.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: ecdh_extra.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: engine.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: err.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: evp.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: evp_ctx.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: ex_data.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: file.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: fork_detect.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: forkunsafe.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: md4.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: md5.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: mem.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: obj.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: p_dh_asn1.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: p_ec.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: p_hkdf.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: p_rsa.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: pbkdf.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: poly1305_vec.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: refcount.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: rsa_asn1.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: rsa_crypt.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: scrypt.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: siphash.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: stack.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: thread_pthread.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: tls_cbc.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: urandom.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: a_bitstr.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: a_object.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: asn1_compat.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: bio.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: blake2.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: chacha.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: des.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: ec_asn1.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: lhash.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: tasn_dec.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: tasn_enc.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: tasn_new.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: tasn_utl.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: pool.c:CRYPTO_is_MOVBE_capable bcm.c:CRYPTO_is_MOVBE_capable Line | Count | Source | 1463 | 141 | OPENSSL_INLINE int CRYPTO_is_MOVBE_capable(void) { | 1464 | | #if defined(__MOVBE__) | 1465 | | return 1; | 1466 | | #else | 1467 | 141 | return (OPENSSL_get_ia32cap(1) & (1u << 22)) != 0; | 1468 | 141 | #endif | 1469 | 141 | } |
Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_is_MOVBE_capable Unexecuted instantiation: cpu_intel.c:CRYPTO_is_MOVBE_capable |
1470 | | |
1471 | 4.43k | OPENSSL_INLINE int CRYPTO_is_AESNI_capable(void) { |
1472 | | #if defined(__AES__) |
1473 | | return 1; |
1474 | | #else |
1475 | 4.43k | return (OPENSSL_get_ia32cap(1) & (1u << 25)) != 0; |
1476 | 4.43k | #endif |
1477 | 4.43k | } Unexecuted instantiation: a_int.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: asn1_lib.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: cbb.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: cbs.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: convert.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: crypto.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: curve25519.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: digest_extra.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: dsa.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: dsa_asn1.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: e_des.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: e_rc2.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: e_rc4.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: e_tls.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: ecdh_extra.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: engine.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: err.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: evp.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: evp_ctx.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: ex_data.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: file.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: fork_detect.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: forkunsafe.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: md4.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: md5.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: mem.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: obj.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: p_dh_asn1.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: p_ec.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: p_hkdf.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: p_rsa.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: pbkdf.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: poly1305_vec.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: refcount.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: rsa_asn1.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: rsa_crypt.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: scrypt.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: siphash.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: stack.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: thread_pthread.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: tls_cbc.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: urandom.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: a_bitstr.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: a_object.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: asn1_compat.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: bio.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: blake2.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: chacha.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: des.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: ec_asn1.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: lhash.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: tasn_dec.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: tasn_enc.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: tasn_new.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: tasn_utl.c:CRYPTO_is_AESNI_capable Unexecuted instantiation: pool.c:CRYPTO_is_AESNI_capable bcm.c:CRYPTO_is_AESNI_capable Line | Count | Source | 1471 | 4.42k | OPENSSL_INLINE int CRYPTO_is_AESNI_capable(void) { | 1472 | | #if defined(__AES__) | 1473 | | return 1; | 1474 | | #else | 1475 | 4.42k | return (OPENSSL_get_ia32cap(1) & (1u << 25)) != 0; | 1476 | 4.42k | #endif | 1477 | 4.42k | } |
Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_is_AESNI_capable e_aesgcmsiv.c:CRYPTO_is_AESNI_capable Line | Count | Source | 1471 | 2 | OPENSSL_INLINE int CRYPTO_is_AESNI_capable(void) { | 1472 | | #if defined(__AES__) | 1473 | | return 1; | 1474 | | #else | 1475 | 2 | return (OPENSSL_get_ia32cap(1) & (1u << 25)) != 0; | 1476 | 2 | #endif | 1477 | 2 | } |
Unexecuted instantiation: cpu_intel.c:CRYPTO_is_AESNI_capable |
1478 | | |
1479 | | // We intentionally avoid defining a |CRYPTO_is_XSAVE_capable| function. See |
1480 | | // |CRYPTO_cpu_perf_is_like_silvermont|. |
1481 | | |
1482 | 4.79k | OPENSSL_INLINE int CRYPTO_is_AVX_capable(void) { |
1483 | | #if defined(__AVX__) |
1484 | | return 1; |
1485 | | #else |
1486 | 4.79k | return (OPENSSL_get_ia32cap(1) & (1u << 28)) != 0; |
1487 | 4.79k | #endif |
1488 | 4.79k | } Unexecuted instantiation: a_int.c:CRYPTO_is_AVX_capable Unexecuted instantiation: asn1_lib.c:CRYPTO_is_AVX_capable Unexecuted instantiation: cbb.c:CRYPTO_is_AVX_capable Unexecuted instantiation: cbs.c:CRYPTO_is_AVX_capable Unexecuted instantiation: convert.c:CRYPTO_is_AVX_capable Unexecuted instantiation: crypto.c:CRYPTO_is_AVX_capable Unexecuted instantiation: curve25519.c:CRYPTO_is_AVX_capable Unexecuted instantiation: digest_extra.c:CRYPTO_is_AVX_capable Unexecuted instantiation: dsa.c:CRYPTO_is_AVX_capable Unexecuted instantiation: dsa_asn1.c:CRYPTO_is_AVX_capable Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_is_AVX_capable Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_is_AVX_capable Unexecuted instantiation: e_des.c:CRYPTO_is_AVX_capable Unexecuted instantiation: e_rc2.c:CRYPTO_is_AVX_capable Unexecuted instantiation: e_rc4.c:CRYPTO_is_AVX_capable Unexecuted instantiation: e_tls.c:CRYPTO_is_AVX_capable Unexecuted instantiation: ecdh_extra.c:CRYPTO_is_AVX_capable Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_is_AVX_capable Unexecuted instantiation: engine.c:CRYPTO_is_AVX_capable Unexecuted instantiation: err.c:CRYPTO_is_AVX_capable Unexecuted instantiation: evp.c:CRYPTO_is_AVX_capable Unexecuted instantiation: evp_ctx.c:CRYPTO_is_AVX_capable Unexecuted instantiation: ex_data.c:CRYPTO_is_AVX_capable Unexecuted instantiation: file.c:CRYPTO_is_AVX_capable Unexecuted instantiation: fork_detect.c:CRYPTO_is_AVX_capable Unexecuted instantiation: forkunsafe.c:CRYPTO_is_AVX_capable Unexecuted instantiation: md4.c:CRYPTO_is_AVX_capable Unexecuted instantiation: md5.c:CRYPTO_is_AVX_capable Unexecuted instantiation: mem.c:CRYPTO_is_AVX_capable Unexecuted instantiation: obj.c:CRYPTO_is_AVX_capable Unexecuted instantiation: p_dh_asn1.c:CRYPTO_is_AVX_capable Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_is_AVX_capable Unexecuted instantiation: p_ec.c:CRYPTO_is_AVX_capable Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_is_AVX_capable Unexecuted instantiation: p_hkdf.c:CRYPTO_is_AVX_capable Unexecuted instantiation: p_rsa.c:CRYPTO_is_AVX_capable Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_is_AVX_capable Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_is_AVX_capable Unexecuted instantiation: pbkdf.c:CRYPTO_is_AVX_capable Unexecuted instantiation: poly1305_vec.c:CRYPTO_is_AVX_capable Unexecuted instantiation: refcount.c:CRYPTO_is_AVX_capable Unexecuted instantiation: rsa_asn1.c:CRYPTO_is_AVX_capable Unexecuted instantiation: rsa_crypt.c:CRYPTO_is_AVX_capable Unexecuted instantiation: scrypt.c:CRYPTO_is_AVX_capable Unexecuted instantiation: siphash.c:CRYPTO_is_AVX_capable Unexecuted instantiation: stack.c:CRYPTO_is_AVX_capable Unexecuted instantiation: thread_pthread.c:CRYPTO_is_AVX_capable Unexecuted instantiation: tls_cbc.c:CRYPTO_is_AVX_capable Unexecuted instantiation: urandom.c:CRYPTO_is_AVX_capable Unexecuted instantiation: a_bitstr.c:CRYPTO_is_AVX_capable Unexecuted instantiation: a_object.c:CRYPTO_is_AVX_capable Unexecuted instantiation: asn1_compat.c:CRYPTO_is_AVX_capable Unexecuted instantiation: bio.c:CRYPTO_is_AVX_capable Unexecuted instantiation: blake2.c:CRYPTO_is_AVX_capable Unexecuted instantiation: chacha.c:CRYPTO_is_AVX_capable Unexecuted instantiation: des.c:CRYPTO_is_AVX_capable Unexecuted instantiation: ec_asn1.c:CRYPTO_is_AVX_capable Unexecuted instantiation: lhash.c:CRYPTO_is_AVX_capable Unexecuted instantiation: tasn_dec.c:CRYPTO_is_AVX_capable Unexecuted instantiation: tasn_enc.c:CRYPTO_is_AVX_capable Unexecuted instantiation: tasn_new.c:CRYPTO_is_AVX_capable Unexecuted instantiation: tasn_utl.c:CRYPTO_is_AVX_capable Unexecuted instantiation: pool.c:CRYPTO_is_AVX_capable bcm.c:CRYPTO_is_AVX_capable Line | Count | Source | 1482 | 4.79k | OPENSSL_INLINE int CRYPTO_is_AVX_capable(void) { | 1483 | | #if defined(__AVX__) | 1484 | | return 1; | 1485 | | #else | 1486 | 4.79k | return (OPENSSL_get_ia32cap(1) & (1u << 28)) != 0; | 1487 | 4.79k | #endif | 1488 | 4.79k | } |
Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_is_AVX_capable e_aesgcmsiv.c:CRYPTO_is_AVX_capable Line | Count | Source | 1482 | 2 | OPENSSL_INLINE int CRYPTO_is_AVX_capable(void) { | 1483 | | #if defined(__AVX__) | 1484 | | return 1; | 1485 | | #else | 1486 | 2 | return (OPENSSL_get_ia32cap(1) & (1u << 28)) != 0; | 1487 | 2 | #endif | 1488 | 2 | } |
Unexecuted instantiation: cpu_intel.c:CRYPTO_is_AVX_capable |
1489 | | |
1490 | 960 | OPENSSL_INLINE int CRYPTO_is_RDRAND_capable(void) { |
1491 | | // We intentionally do not check |__RDRND__| here. On some AMD processors, we |
1492 | | // will act as if the hardware is RDRAND-incapable, even it actually supports |
1493 | | // it. See cpu_intel.c. |
1494 | 960 | return (OPENSSL_get_ia32cap(1) & (1u << 30)) != 0; |
1495 | 960 | } Unexecuted instantiation: a_int.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: asn1_lib.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: cbb.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: cbs.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: convert.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: crypto.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: curve25519.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: digest_extra.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: dsa.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: dsa_asn1.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: e_des.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: e_rc2.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: e_rc4.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: e_tls.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: ecdh_extra.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: engine.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: err.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: evp.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: evp_ctx.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: ex_data.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: file.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: fork_detect.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: forkunsafe.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: md4.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: md5.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: mem.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: obj.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: p_dh_asn1.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: p_ec.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: p_hkdf.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: p_rsa.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: pbkdf.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: poly1305_vec.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: refcount.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: rsa_asn1.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: rsa_crypt.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: scrypt.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: siphash.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: stack.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: thread_pthread.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: tls_cbc.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: urandom.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: a_bitstr.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: a_object.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: asn1_compat.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: bio.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: blake2.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: chacha.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: des.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: ec_asn1.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: lhash.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: tasn_dec.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: tasn_enc.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: tasn_new.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: tasn_utl.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: pool.c:CRYPTO_is_RDRAND_capable bcm.c:CRYPTO_is_RDRAND_capable Line | Count | Source | 1490 | 960 | OPENSSL_INLINE int CRYPTO_is_RDRAND_capable(void) { | 1491 | | // We intentionally do not check |__RDRND__| here. On some AMD processors, we | 1492 | | // will act as if the hardware is RDRAND-incapable, even it actually supports | 1493 | | // it. See cpu_intel.c. | 1494 | 960 | return (OPENSSL_get_ia32cap(1) & (1u << 30)) != 0; | 1495 | 960 | } |
Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_is_RDRAND_capable Unexecuted instantiation: cpu_intel.c:CRYPTO_is_RDRAND_capable |
1496 | | |
1497 | | // See Intel manual, volume 2A, table 3-8. |
1498 | | |
1499 | 5.10k | OPENSSL_INLINE int CRYPTO_is_BMI1_capable(void) { |
1500 | | #if defined(__BMI__) |
1501 | | return 1; |
1502 | | #else |
1503 | 5.10k | return (OPENSSL_get_ia32cap(2) & (1u << 3)) != 0; |
1504 | 5.10k | #endif |
1505 | 5.10k | } Unexecuted instantiation: a_int.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: asn1_lib.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: cbb.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: cbs.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: convert.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: crypto.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: curve25519.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: digest_extra.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: dsa.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: dsa_asn1.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: e_des.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: e_rc2.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: e_rc4.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: e_tls.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: ecdh_extra.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: engine.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: err.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: evp.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: evp_ctx.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: ex_data.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: file.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: fork_detect.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: forkunsafe.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: md4.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: md5.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: mem.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: obj.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: p_dh_asn1.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: p_ec.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: p_hkdf.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: p_rsa.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: pbkdf.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: poly1305_vec.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: refcount.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: rsa_asn1.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: rsa_crypt.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: scrypt.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: siphash.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: stack.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: thread_pthread.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: tls_cbc.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: urandom.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: a_bitstr.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: a_object.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: asn1_compat.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: bio.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: blake2.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: chacha.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: des.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: ec_asn1.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: lhash.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: tasn_dec.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: tasn_enc.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: tasn_new.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: tasn_utl.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: pool.c:CRYPTO_is_BMI1_capable bcm.c:CRYPTO_is_BMI1_capable Line | Count | Source | 1499 | 5.10k | OPENSSL_INLINE int CRYPTO_is_BMI1_capable(void) { | 1500 | | #if defined(__BMI__) | 1501 | | return 1; | 1502 | | #else | 1503 | 5.10k | return (OPENSSL_get_ia32cap(2) & (1u << 3)) != 0; | 1504 | 5.10k | #endif | 1505 | 5.10k | } |
Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_is_BMI1_capable Unexecuted instantiation: cpu_intel.c:CRYPTO_is_BMI1_capable |
1506 | | |
1507 | 978 | OPENSSL_INLINE int CRYPTO_is_AVX2_capable(void) { |
1508 | | #if defined(__AVX2__) |
1509 | | return 1; |
1510 | | #else |
1511 | 978 | return (OPENSSL_get_ia32cap(2) & (1u << 5)) != 0; |
1512 | 978 | #endif |
1513 | 978 | } Unexecuted instantiation: a_int.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: asn1_lib.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: cbb.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: cbs.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: convert.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: crypto.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: curve25519.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: digest_extra.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: dsa.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: dsa_asn1.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: e_des.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: e_rc2.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: e_rc4.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: e_tls.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: ecdh_extra.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: engine.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: err.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: evp.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: evp_ctx.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: ex_data.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: file.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: fork_detect.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: forkunsafe.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: md4.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: md5.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: mem.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: obj.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: p_dh_asn1.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: p_ec.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: p_hkdf.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: p_rsa.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: pbkdf.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: poly1305_vec.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: refcount.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: rsa_asn1.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: rsa_crypt.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: scrypt.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: siphash.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: stack.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: thread_pthread.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: tls_cbc.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: urandom.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: a_bitstr.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: a_object.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: asn1_compat.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: bio.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: blake2.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: chacha.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: des.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: ec_asn1.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: lhash.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: tasn_dec.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: tasn_enc.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: tasn_new.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: tasn_utl.c:CRYPTO_is_AVX2_capable Unexecuted instantiation: pool.c:CRYPTO_is_AVX2_capable bcm.c:CRYPTO_is_AVX2_capable Line | Count | Source | 1507 | 958 | OPENSSL_INLINE int CRYPTO_is_AVX2_capable(void) { | 1508 | | #if defined(__AVX2__) | 1509 | | return 1; | 1510 | | #else | 1511 | 958 | return (OPENSSL_get_ia32cap(2) & (1u << 5)) != 0; | 1512 | 958 | #endif | 1513 | 958 | } |
Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_is_AVX2_capable e_chacha20poly1305.c:CRYPTO_is_AVX2_capable Line | Count | Source | 1507 | 20 | OPENSSL_INLINE int CRYPTO_is_AVX2_capable(void) { | 1508 | | #if defined(__AVX2__) | 1509 | | return 1; | 1510 | | #else | 1511 | 20 | return (OPENSSL_get_ia32cap(2) & (1u << 5)) != 0; | 1512 | 20 | #endif | 1513 | 20 | } |
Unexecuted instantiation: cpu_intel.c:CRYPTO_is_AVX2_capable |
1514 | | |
1515 | 25.2k | OPENSSL_INLINE int CRYPTO_is_BMI2_capable(void) { |
1516 | | #if defined(__BMI2__) |
1517 | | return 1; |
1518 | | #else |
1519 | 25.2k | return (OPENSSL_get_ia32cap(2) & (1u << 8)) != 0; |
1520 | 25.2k | #endif |
1521 | 25.2k | } Unexecuted instantiation: a_int.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: asn1_lib.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: cbb.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: cbs.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: convert.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: crypto.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: curve25519.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: digest_extra.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: dsa.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: dsa_asn1.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: e_des.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: e_rc2.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: e_rc4.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: e_tls.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: ecdh_extra.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: engine.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: err.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: evp.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: evp_ctx.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: ex_data.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: file.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: fork_detect.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: forkunsafe.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: md4.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: md5.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: mem.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: obj.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: p_dh_asn1.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: p_ec.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: p_hkdf.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: p_rsa.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: pbkdf.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: poly1305_vec.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: refcount.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: rsa_asn1.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: rsa_crypt.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: scrypt.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: siphash.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: stack.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: thread_pthread.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: tls_cbc.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: urandom.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: a_bitstr.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: a_object.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: asn1_compat.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: bio.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: blake2.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: chacha.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: des.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: ec_asn1.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: lhash.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: tasn_dec.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: tasn_enc.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: tasn_new.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: tasn_utl.c:CRYPTO_is_BMI2_capable Unexecuted instantiation: pool.c:CRYPTO_is_BMI2_capable bcm.c:CRYPTO_is_BMI2_capable Line | Count | Source | 1515 | 25.2k | OPENSSL_INLINE int CRYPTO_is_BMI2_capable(void) { | 1516 | | #if defined(__BMI2__) | 1517 | | return 1; | 1518 | | #else | 1519 | 25.2k | return (OPENSSL_get_ia32cap(2) & (1u << 8)) != 0; | 1520 | 25.2k | #endif | 1521 | 25.2k | } |
Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_is_BMI2_capable e_chacha20poly1305.c:CRYPTO_is_BMI2_capable Line | Count | Source | 1515 | 20 | OPENSSL_INLINE int CRYPTO_is_BMI2_capable(void) { | 1516 | | #if defined(__BMI2__) | 1517 | | return 1; | 1518 | | #else | 1519 | 20 | return (OPENSSL_get_ia32cap(2) & (1u << 8)) != 0; | 1520 | 20 | #endif | 1521 | 20 | } |
Unexecuted instantiation: cpu_intel.c:CRYPTO_is_BMI2_capable |
1522 | | |
1523 | 25.2k | OPENSSL_INLINE int CRYPTO_is_ADX_capable(void) { |
1524 | | #if defined(__ADX__) |
1525 | | return 1; |
1526 | | #else |
1527 | 25.2k | return (OPENSSL_get_ia32cap(2) & (1u << 19)) != 0; |
1528 | 25.2k | #endif |
1529 | 25.2k | } Unexecuted instantiation: a_int.c:CRYPTO_is_ADX_capable Unexecuted instantiation: asn1_lib.c:CRYPTO_is_ADX_capable Unexecuted instantiation: cbb.c:CRYPTO_is_ADX_capable Unexecuted instantiation: cbs.c:CRYPTO_is_ADX_capable Unexecuted instantiation: convert.c:CRYPTO_is_ADX_capable Unexecuted instantiation: crypto.c:CRYPTO_is_ADX_capable Unexecuted instantiation: curve25519.c:CRYPTO_is_ADX_capable Unexecuted instantiation: digest_extra.c:CRYPTO_is_ADX_capable Unexecuted instantiation: dsa.c:CRYPTO_is_ADX_capable Unexecuted instantiation: dsa_asn1.c:CRYPTO_is_ADX_capable Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_is_ADX_capable Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_is_ADX_capable Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_is_ADX_capable Unexecuted instantiation: e_des.c:CRYPTO_is_ADX_capable Unexecuted instantiation: e_rc2.c:CRYPTO_is_ADX_capable Unexecuted instantiation: e_rc4.c:CRYPTO_is_ADX_capable Unexecuted instantiation: e_tls.c:CRYPTO_is_ADX_capable Unexecuted instantiation: ecdh_extra.c:CRYPTO_is_ADX_capable Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_is_ADX_capable Unexecuted instantiation: engine.c:CRYPTO_is_ADX_capable Unexecuted instantiation: err.c:CRYPTO_is_ADX_capable Unexecuted instantiation: evp.c:CRYPTO_is_ADX_capable Unexecuted instantiation: evp_ctx.c:CRYPTO_is_ADX_capable Unexecuted instantiation: ex_data.c:CRYPTO_is_ADX_capable Unexecuted instantiation: file.c:CRYPTO_is_ADX_capable Unexecuted instantiation: fork_detect.c:CRYPTO_is_ADX_capable Unexecuted instantiation: forkunsafe.c:CRYPTO_is_ADX_capable Unexecuted instantiation: md4.c:CRYPTO_is_ADX_capable Unexecuted instantiation: md5.c:CRYPTO_is_ADX_capable Unexecuted instantiation: mem.c:CRYPTO_is_ADX_capable Unexecuted instantiation: obj.c:CRYPTO_is_ADX_capable Unexecuted instantiation: p_dh_asn1.c:CRYPTO_is_ADX_capable Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_is_ADX_capable Unexecuted instantiation: p_ec.c:CRYPTO_is_ADX_capable Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_is_ADX_capable Unexecuted instantiation: p_hkdf.c:CRYPTO_is_ADX_capable Unexecuted instantiation: p_rsa.c:CRYPTO_is_ADX_capable Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_is_ADX_capable Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_is_ADX_capable Unexecuted instantiation: pbkdf.c:CRYPTO_is_ADX_capable Unexecuted instantiation: poly1305_vec.c:CRYPTO_is_ADX_capable Unexecuted instantiation: refcount.c:CRYPTO_is_ADX_capable Unexecuted instantiation: rsa_asn1.c:CRYPTO_is_ADX_capable Unexecuted instantiation: rsa_crypt.c:CRYPTO_is_ADX_capable Unexecuted instantiation: scrypt.c:CRYPTO_is_ADX_capable Unexecuted instantiation: siphash.c:CRYPTO_is_ADX_capable Unexecuted instantiation: stack.c:CRYPTO_is_ADX_capable Unexecuted instantiation: thread_pthread.c:CRYPTO_is_ADX_capable Unexecuted instantiation: tls_cbc.c:CRYPTO_is_ADX_capable Unexecuted instantiation: urandom.c:CRYPTO_is_ADX_capable Unexecuted instantiation: a_bitstr.c:CRYPTO_is_ADX_capable Unexecuted instantiation: a_object.c:CRYPTO_is_ADX_capable Unexecuted instantiation: asn1_compat.c:CRYPTO_is_ADX_capable Unexecuted instantiation: bio.c:CRYPTO_is_ADX_capable Unexecuted instantiation: blake2.c:CRYPTO_is_ADX_capable Unexecuted instantiation: chacha.c:CRYPTO_is_ADX_capable Unexecuted instantiation: des.c:CRYPTO_is_ADX_capable Unexecuted instantiation: ec_asn1.c:CRYPTO_is_ADX_capable Unexecuted instantiation: lhash.c:CRYPTO_is_ADX_capable Unexecuted instantiation: tasn_dec.c:CRYPTO_is_ADX_capable Unexecuted instantiation: tasn_enc.c:CRYPTO_is_ADX_capable Unexecuted instantiation: tasn_new.c:CRYPTO_is_ADX_capable Unexecuted instantiation: tasn_utl.c:CRYPTO_is_ADX_capable Unexecuted instantiation: pool.c:CRYPTO_is_ADX_capable bcm.c:CRYPTO_is_ADX_capable Line | Count | Source | 1523 | 25.2k | OPENSSL_INLINE int CRYPTO_is_ADX_capable(void) { | 1524 | | #if defined(__ADX__) | 1525 | | return 1; | 1526 | | #else | 1527 | 25.2k | return (OPENSSL_get_ia32cap(2) & (1u << 19)) != 0; | 1528 | 25.2k | #endif | 1529 | 25.2k | } |
Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_is_ADX_capable Unexecuted instantiation: cpu_intel.c:CRYPTO_is_ADX_capable |
1530 | | |
1531 | | // SHA-1 and SHA-256 are defined as a single extension. |
1532 | 9.96k | OPENSSL_INLINE int CRYPTO_is_x86_SHA_capable(void) { |
1533 | | // We should check __SHA__ here, but for now we ignore it. We've run into a |
1534 | | // few places where projects build with -march=goldmont, but need a build that |
1535 | | // does not require SHA extensions: |
1536 | | // |
1537 | | // - Some CrOS toolchain definitions are incorrect and build with |
1538 | | // -march=goldmont when targetting boards that are not Goldmont. b/320482539 |
1539 | | // tracks fixing this. |
1540 | | // |
1541 | | // - Sometimes projects build with -march=goldmont as a rough optimized |
1542 | | // baseline. However, Intel CPU capabilities are not strictly linear, so |
1543 | | // this does not quite work. Some combination of -mtune and |
1544 | | // -march=x86-64-v{1,2,3,4} would be a better strategy here. |
1545 | | // |
1546 | | // - QEMU versions before 8.2 do not support SHA extensions and disable it |
1547 | | // with a warning. Projects that target Goldmont and test on QEMU will |
1548 | | // break. The long-term fix is to update to 8.2. A principled short-term fix |
1549 | | // would be -march=goldmont -mno-sha, to reflect that the binary needs to |
1550 | | // run on both QEMU-8.1-Goldmont and actual-Goldmont. |
1551 | | // |
1552 | | // TODO(b/320482539): Once the CrOS toolchain is fixed, try this again. |
1553 | 9.96k | return (OPENSSL_get_ia32cap(2) & (1u << 29)) != 0; |
1554 | 9.96k | } Unexecuted instantiation: a_int.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: asn1_lib.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: cbb.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: cbs.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: convert.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: crypto.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: curve25519.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: digest_extra.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: dsa.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: dsa_asn1.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: e_des.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: e_rc2.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: e_rc4.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: e_tls.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: ecdh_extra.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: engine.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: err.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: evp.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: evp_ctx.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: ex_data.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: file.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: fork_detect.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: forkunsafe.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: md4.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: md5.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: mem.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: obj.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: p_dh_asn1.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: p_ec.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: p_hkdf.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: p_rsa.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: pbkdf.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: poly1305_vec.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: refcount.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: rsa_asn1.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: rsa_crypt.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: scrypt.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: siphash.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: stack.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: thread_pthread.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: tls_cbc.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: urandom.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: a_bitstr.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: a_object.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: asn1_compat.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: bio.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: blake2.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: chacha.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: des.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: ec_asn1.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: lhash.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: tasn_dec.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: tasn_enc.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: tasn_new.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: tasn_utl.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: pool.c:CRYPTO_is_x86_SHA_capable bcm.c:CRYPTO_is_x86_SHA_capable Line | Count | Source | 1532 | 9.96k | OPENSSL_INLINE int CRYPTO_is_x86_SHA_capable(void) { | 1533 | | // We should check __SHA__ here, but for now we ignore it. We've run into a | 1534 | | // few places where projects build with -march=goldmont, but need a build that | 1535 | | // does not require SHA extensions: | 1536 | | // | 1537 | | // - Some CrOS toolchain definitions are incorrect and build with | 1538 | | // -march=goldmont when targetting boards that are not Goldmont. b/320482539 | 1539 | | // tracks fixing this. | 1540 | | // | 1541 | | // - Sometimes projects build with -march=goldmont as a rough optimized | 1542 | | // baseline. However, Intel CPU capabilities are not strictly linear, so | 1543 | | // this does not quite work. Some combination of -mtune and | 1544 | | // -march=x86-64-v{1,2,3,4} would be a better strategy here. | 1545 | | // | 1546 | | // - QEMU versions before 8.2 do not support SHA extensions and disable it | 1547 | | // with a warning. Projects that target Goldmont and test on QEMU will | 1548 | | // break. The long-term fix is to update to 8.2. A principled short-term fix | 1549 | | // would be -march=goldmont -mno-sha, to reflect that the binary needs to | 1550 | | // run on both QEMU-8.1-Goldmont and actual-Goldmont. | 1551 | | // | 1552 | | // TODO(b/320482539): Once the CrOS toolchain is fixed, try this again. | 1553 | 9.96k | return (OPENSSL_get_ia32cap(2) & (1u << 29)) != 0; | 1554 | 9.96k | } |
Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_is_x86_SHA_capable Unexecuted instantiation: cpu_intel.c:CRYPTO_is_x86_SHA_capable |
1555 | | |
1556 | | // CRYPTO_cpu_perf_is_like_silvermont returns one if, based on a heuristic, the |
1557 | | // CPU has Silvermont-like performance characteristics. It is often faster to |
1558 | | // run different codepaths on these CPUs than the available instructions would |
1559 | | // otherwise select. See chacha-x86_64.pl. |
1560 | | // |
1561 | | // Bonnell, Silvermont's predecessor in the Atom lineup, will also be matched by |
1562 | | // this. Goldmont (Silvermont's successor in the Atom lineup) added XSAVE so it |
1563 | | // isn't matched by this. Various sources indicate AMD first implemented MOVBE |
1564 | | // and XSAVE at the same time in Jaguar, so it seems like AMD chips will not be |
1565 | | // matched by this. That seems to be the case for other x86(-64) CPUs. |
1566 | 0 | OPENSSL_INLINE int CRYPTO_cpu_perf_is_like_silvermont(void) { |
1567 | 0 | // WARNING: This MUST NOT be used to guard the execution of the XSAVE |
1568 | 0 | // instruction. This is the "hardware supports XSAVE" bit, not the OSXSAVE bit |
1569 | 0 | // that indicates whether we can safely execute XSAVE. This bit may be set |
1570 | 0 | // even when XSAVE is disabled (by the operating system). See how the users of |
1571 | 0 | // this bit use it. |
1572 | 0 | // |
1573 | 0 | // Historically, the XSAVE bit was artificially cleared on Knights Landing |
1574 | 0 | // and Knights Mill chips, but as Intel has removed all support from GCC, |
1575 | 0 | // LLVM, and SDE, we assume they are no longer worth special-casing. |
1576 | 0 | int hardware_supports_xsave = (OPENSSL_get_ia32cap(1) & (1u << 26)) != 0; |
1577 | 0 | return !hardware_supports_xsave && CRYPTO_is_MOVBE_capable(); |
1578 | 0 | } Unexecuted instantiation: a_int.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: asn1_lib.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: bcm.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: cbb.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: cbs.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: convert.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: crypto.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: curve25519.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: digest_extra.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: dsa.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: dsa_asn1.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: e_des.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: e_rc2.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: e_rc4.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: e_tls.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: ecdh_extra.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: engine.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: err.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: evp.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: evp_ctx.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: ex_data.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: file.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: fork_detect.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: forkunsafe.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: md4.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: md5.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: mem.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: obj.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: p_dh_asn1.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: p_ec.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: p_hkdf.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: p_rsa.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: pbkdf.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: poly1305_vec.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: refcount.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: rsa_asn1.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: rsa_crypt.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: scrypt.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: siphash.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: stack.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: thread_pthread.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: tls_cbc.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: urandom.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: a_bitstr.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: a_object.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: asn1_compat.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: bio.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: blake2.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: chacha.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: des.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: ec_asn1.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: lhash.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: tasn_dec.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: tasn_enc.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: tasn_new.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: tasn_utl.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: pool.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_cpu_perf_is_like_silvermont Unexecuted instantiation: cpu_intel.c:CRYPTO_cpu_perf_is_like_silvermont |
1579 | | |
1580 | 0 | OPENSSL_INLINE int CRYPTO_is_AVX512BW_capable(void) { |
1581 | 0 | #if defined(__AVX512BW__) |
1582 | 0 | return 1; |
1583 | 0 | #else |
1584 | 0 | return (OPENSSL_get_ia32cap(2) & (1u << 30)) != 0; |
1585 | 0 | #endif |
1586 | 0 | } Unexecuted instantiation: a_int.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: asn1_lib.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: bcm.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: cbb.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: cbs.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: convert.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: crypto.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: curve25519.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: digest_extra.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: dsa.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: dsa_asn1.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: e_des.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: e_rc2.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: e_rc4.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: e_tls.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: ecdh_extra.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: engine.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: err.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: evp.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: evp_ctx.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: ex_data.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: file.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: fork_detect.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: forkunsafe.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: md4.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: md5.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: mem.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: obj.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: p_dh_asn1.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: p_ec.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: p_hkdf.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: p_rsa.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: pbkdf.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: poly1305_vec.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: refcount.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: rsa_asn1.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: rsa_crypt.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: scrypt.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: siphash.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: stack.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: thread_pthread.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: tls_cbc.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: urandom.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: a_bitstr.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: a_object.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: asn1_compat.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: bio.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: blake2.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: chacha.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: des.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: ec_asn1.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: lhash.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: tasn_dec.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: tasn_enc.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: tasn_new.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: tasn_utl.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: pool.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_is_AVX512BW_capable Unexecuted instantiation: cpu_intel.c:CRYPTO_is_AVX512BW_capable |
1587 | | |
1588 | 0 | OPENSSL_INLINE int CRYPTO_is_AVX512VL_capable(void) { |
1589 | 0 | #if defined(__AVX512VL__) |
1590 | 0 | return 1; |
1591 | 0 | #else |
1592 | 0 | return (OPENSSL_get_ia32cap(2) & (1u << 31)) != 0; |
1593 | 0 | #endif |
1594 | 0 | } Unexecuted instantiation: a_int.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: asn1_lib.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: bcm.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: cbb.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: cbs.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: convert.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: crypto.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: curve25519.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: digest_extra.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: dsa.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: dsa_asn1.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: e_des.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: e_rc2.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: e_rc4.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: e_tls.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: ecdh_extra.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: engine.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: err.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: evp.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: evp_ctx.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: ex_data.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: file.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: fork_detect.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: forkunsafe.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: md4.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: md5.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: mem.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: obj.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: p_dh_asn1.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: p_ec.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: p_hkdf.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: p_rsa.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: pbkdf.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: poly1305_vec.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: refcount.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: rsa_asn1.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: rsa_crypt.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: scrypt.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: siphash.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: stack.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: thread_pthread.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: tls_cbc.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: urandom.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: a_bitstr.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: a_object.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: asn1_compat.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: bio.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: blake2.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: chacha.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: des.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: ec_asn1.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: lhash.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: tasn_dec.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: tasn_enc.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: tasn_new.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: tasn_utl.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: pool.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_is_AVX512VL_capable Unexecuted instantiation: cpu_intel.c:CRYPTO_is_AVX512VL_capable |
1595 | | |
1596 | | // CRYPTO_cpu_avoid_zmm_registers returns 1 if zmm registers (512-bit vectors) |
1597 | | // should not be used even if the CPU supports them. |
1598 | | // |
1599 | | // Note that this reuses the bit for the removed MPX feature. |
1600 | 0 | OPENSSL_INLINE int CRYPTO_cpu_avoid_zmm_registers(void) { |
1601 | 0 | return (OPENSSL_get_ia32cap(2) & (1u << 14)) != 0; |
1602 | 0 | } Unexecuted instantiation: a_int.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: asn1_lib.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: bcm.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: cbb.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: cbs.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: convert.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: crypto.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: curve25519.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: digest_extra.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: dsa.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: dsa_asn1.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: e_des.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: e_rc2.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: e_rc4.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: e_tls.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: ecdh_extra.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: engine.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: err.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: evp.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: evp_ctx.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: ex_data.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: file.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: fork_detect.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: forkunsafe.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: md4.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: md5.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: mem.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: obj.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: p_dh_asn1.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: p_ec.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: p_hkdf.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: p_rsa.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: pbkdf.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: poly1305_vec.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: refcount.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: rsa_asn1.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: rsa_crypt.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: scrypt.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: siphash.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: stack.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: thread_pthread.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: tls_cbc.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: urandom.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: a_bitstr.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: a_object.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: asn1_compat.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: bio.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: blake2.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: chacha.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: des.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: ec_asn1.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: lhash.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: tasn_dec.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: tasn_enc.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: tasn_new.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: tasn_utl.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: pool.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_cpu_avoid_zmm_registers Unexecuted instantiation: cpu_intel.c:CRYPTO_cpu_avoid_zmm_registers |
1603 | | |
1604 | 0 | OPENSSL_INLINE int CRYPTO_is_VAES_capable(void) { |
1605 | 0 | #if defined(__VAES__) |
1606 | 0 | return 1; |
1607 | 0 | #else |
1608 | 0 | return (OPENSSL_get_ia32cap(3) & (1u << 9)) != 0; |
1609 | 0 | #endif |
1610 | 0 | } Unexecuted instantiation: a_int.c:CRYPTO_is_VAES_capable Unexecuted instantiation: asn1_lib.c:CRYPTO_is_VAES_capable Unexecuted instantiation: bcm.c:CRYPTO_is_VAES_capable Unexecuted instantiation: cbb.c:CRYPTO_is_VAES_capable Unexecuted instantiation: cbs.c:CRYPTO_is_VAES_capable Unexecuted instantiation: convert.c:CRYPTO_is_VAES_capable Unexecuted instantiation: crypto.c:CRYPTO_is_VAES_capable Unexecuted instantiation: curve25519.c:CRYPTO_is_VAES_capable Unexecuted instantiation: digest_extra.c:CRYPTO_is_VAES_capable Unexecuted instantiation: dsa.c:CRYPTO_is_VAES_capable Unexecuted instantiation: dsa_asn1.c:CRYPTO_is_VAES_capable Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_is_VAES_capable Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_is_VAES_capable Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_is_VAES_capable Unexecuted instantiation: e_des.c:CRYPTO_is_VAES_capable Unexecuted instantiation: e_rc2.c:CRYPTO_is_VAES_capable Unexecuted instantiation: e_rc4.c:CRYPTO_is_VAES_capable Unexecuted instantiation: e_tls.c:CRYPTO_is_VAES_capable Unexecuted instantiation: ecdh_extra.c:CRYPTO_is_VAES_capable Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_is_VAES_capable Unexecuted instantiation: engine.c:CRYPTO_is_VAES_capable Unexecuted instantiation: err.c:CRYPTO_is_VAES_capable Unexecuted instantiation: evp.c:CRYPTO_is_VAES_capable Unexecuted instantiation: evp_ctx.c:CRYPTO_is_VAES_capable Unexecuted instantiation: ex_data.c:CRYPTO_is_VAES_capable Unexecuted instantiation: file.c:CRYPTO_is_VAES_capable Unexecuted instantiation: fork_detect.c:CRYPTO_is_VAES_capable Unexecuted instantiation: forkunsafe.c:CRYPTO_is_VAES_capable Unexecuted instantiation: md4.c:CRYPTO_is_VAES_capable Unexecuted instantiation: md5.c:CRYPTO_is_VAES_capable Unexecuted instantiation: mem.c:CRYPTO_is_VAES_capable Unexecuted instantiation: obj.c:CRYPTO_is_VAES_capable Unexecuted instantiation: p_dh_asn1.c:CRYPTO_is_VAES_capable Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_is_VAES_capable Unexecuted instantiation: p_ec.c:CRYPTO_is_VAES_capable Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_is_VAES_capable Unexecuted instantiation: p_hkdf.c:CRYPTO_is_VAES_capable Unexecuted instantiation: p_rsa.c:CRYPTO_is_VAES_capable Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_is_VAES_capable Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_is_VAES_capable Unexecuted instantiation: pbkdf.c:CRYPTO_is_VAES_capable Unexecuted instantiation: poly1305_vec.c:CRYPTO_is_VAES_capable Unexecuted instantiation: refcount.c:CRYPTO_is_VAES_capable Unexecuted instantiation: rsa_asn1.c:CRYPTO_is_VAES_capable Unexecuted instantiation: rsa_crypt.c:CRYPTO_is_VAES_capable Unexecuted instantiation: scrypt.c:CRYPTO_is_VAES_capable Unexecuted instantiation: siphash.c:CRYPTO_is_VAES_capable Unexecuted instantiation: stack.c:CRYPTO_is_VAES_capable Unexecuted instantiation: thread_pthread.c:CRYPTO_is_VAES_capable Unexecuted instantiation: tls_cbc.c:CRYPTO_is_VAES_capable Unexecuted instantiation: urandom.c:CRYPTO_is_VAES_capable Unexecuted instantiation: a_bitstr.c:CRYPTO_is_VAES_capable Unexecuted instantiation: a_object.c:CRYPTO_is_VAES_capable Unexecuted instantiation: asn1_compat.c:CRYPTO_is_VAES_capable Unexecuted instantiation: bio.c:CRYPTO_is_VAES_capable Unexecuted instantiation: blake2.c:CRYPTO_is_VAES_capable Unexecuted instantiation: chacha.c:CRYPTO_is_VAES_capable Unexecuted instantiation: des.c:CRYPTO_is_VAES_capable Unexecuted instantiation: ec_asn1.c:CRYPTO_is_VAES_capable Unexecuted instantiation: lhash.c:CRYPTO_is_VAES_capable Unexecuted instantiation: tasn_dec.c:CRYPTO_is_VAES_capable Unexecuted instantiation: tasn_enc.c:CRYPTO_is_VAES_capable Unexecuted instantiation: tasn_new.c:CRYPTO_is_VAES_capable Unexecuted instantiation: tasn_utl.c:CRYPTO_is_VAES_capable Unexecuted instantiation: pool.c:CRYPTO_is_VAES_capable Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_is_VAES_capable Unexecuted instantiation: cpu_intel.c:CRYPTO_is_VAES_capable |
1611 | | |
1612 | 0 | OPENSSL_INLINE int CRYPTO_is_VPCLMULQDQ_capable(void) { |
1613 | 0 | #if defined(__VPCLMULQDQ__) |
1614 | 0 | return 1; |
1615 | 0 | #else |
1616 | 0 | return (OPENSSL_get_ia32cap(3) & (1u << 10)) != 0; |
1617 | 0 | #endif |
1618 | 0 | } Unexecuted instantiation: a_int.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: asn1_lib.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: bcm.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: cbb.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: cbs.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: convert.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: crypto.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: curve25519.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: digest_extra.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: dsa.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: dsa_asn1.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: e_aesctrhmac.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: e_des.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: e_rc2.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: e_rc4.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: e_tls.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: ecdh_extra.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: engine.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: err.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: evp.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: evp_ctx.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: ex_data.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: file.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: fork_detect.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: forkunsafe.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: md4.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: md5.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: mem.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: obj.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: p_dh_asn1.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: p_dsa_asn1.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: p_ec.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: p_hkdf.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: p_rsa.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: p_rsa_asn1.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: pbkdf.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: poly1305_vec.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: refcount.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: rsa_asn1.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: rsa_crypt.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: scrypt.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: siphash.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: stack.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: thread_pthread.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: tls_cbc.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: urandom.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: a_bitstr.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: a_object.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: asn1_compat.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: bio.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: blake2.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: chacha.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: des.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: ec_asn1.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: lhash.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: tasn_dec.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: tasn_enc.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: tasn_new.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: tasn_utl.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: pool.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: curve25519_64_adx.c:CRYPTO_is_VPCLMULQDQ_capable Unexecuted instantiation: cpu_intel.c:CRYPTO_is_VPCLMULQDQ_capable |
1619 | | |
1620 | | #endif // OPENSSL_X86 || OPENSSL_X86_64 |
1621 | | |
1622 | | #if defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64) |
1623 | | |
1624 | | // OPENSSL_armcap_P contains ARM CPU capabilities. From C, this should only be |
1625 | | // accessed with |OPENSSL_get_armcap|. |
1626 | | extern uint32_t OPENSSL_armcap_P; |
1627 | | |
1628 | | // OPENSSL_get_armcap initializes the library if needed and returns ARM CPU |
1629 | | // capabilities. It is marked as a const function so duplicate calls can be |
1630 | | // merged by the compiler. |
1631 | | OPENSSL_ATTR_CONST uint32_t OPENSSL_get_armcap(void); |
1632 | | |
1633 | | // We do not detect any features at runtime on several 32-bit Arm platforms. |
1634 | | // Apple platforms and OpenBSD require NEON and moved to 64-bit to pick up Armv8 |
1635 | | // extensions. Android baremetal does not aim to support 32-bit Arm at all, but |
1636 | | // it simplifies things to make it build. |
1637 | | #if defined(OPENSSL_ARM) && !defined(OPENSSL_STATIC_ARMCAP) && \ |
1638 | | (defined(OPENSSL_APPLE) || defined(OPENSSL_OPENBSD) || \ |
1639 | | defined(ANDROID_BAREMETAL)) |
1640 | | #define OPENSSL_STATIC_ARMCAP |
1641 | | #endif |
1642 | | |
1643 | | // Normalize some older feature flags to their modern ACLE values. |
1644 | | // https://developer.arm.com/architectures/system-architectures/software-standards/acle |
1645 | | #if defined(__ARM_NEON__) && !defined(__ARM_NEON) |
1646 | | #define __ARM_NEON 1 |
1647 | | #endif |
1648 | | #if defined(__ARM_FEATURE_CRYPTO) |
1649 | | #if !defined(__ARM_FEATURE_AES) |
1650 | | #define __ARM_FEATURE_AES 1 |
1651 | | #endif |
1652 | | #if !defined(__ARM_FEATURE_SHA2) |
1653 | | #define __ARM_FEATURE_SHA2 1 |
1654 | | #endif |
1655 | | #endif |
1656 | | |
1657 | | // CRYPTO_is_NEON_capable returns true if the current CPU has a NEON unit. If |
1658 | | // this is known statically, it is a constant inline function. |
1659 | | OPENSSL_INLINE int CRYPTO_is_NEON_capable(void) { |
1660 | | #if defined(OPENSSL_STATIC_ARMCAP_NEON) || defined(__ARM_NEON) |
1661 | | return 1; |
1662 | | #elif defined(OPENSSL_STATIC_ARMCAP) |
1663 | | return 0; |
1664 | | #else |
1665 | | return (OPENSSL_get_armcap() & ARMV7_NEON) != 0; |
1666 | | #endif |
1667 | | } |
1668 | | |
1669 | | OPENSSL_INLINE int CRYPTO_is_ARMv8_AES_capable(void) { |
1670 | | #if defined(OPENSSL_STATIC_ARMCAP_AES) || defined(__ARM_FEATURE_AES) |
1671 | | return 1; |
1672 | | #elif defined(OPENSSL_STATIC_ARMCAP) |
1673 | | return 0; |
1674 | | #else |
1675 | | return (OPENSSL_get_armcap() & ARMV8_AES) != 0; |
1676 | | #endif |
1677 | | } |
1678 | | |
1679 | | OPENSSL_INLINE int CRYPTO_is_ARMv8_PMULL_capable(void) { |
1680 | | #if defined(OPENSSL_STATIC_ARMCAP_PMULL) || defined(__ARM_FEATURE_AES) |
1681 | | return 1; |
1682 | | #elif defined(OPENSSL_STATIC_ARMCAP) |
1683 | | return 0; |
1684 | | #else |
1685 | | return (OPENSSL_get_armcap() & ARMV8_PMULL) != 0; |
1686 | | #endif |
1687 | | } |
1688 | | |
1689 | | OPENSSL_INLINE int CRYPTO_is_ARMv8_SHA1_capable(void) { |
1690 | | // SHA-1 and SHA-2 (only) share |__ARM_FEATURE_SHA2| but otherwise |
1691 | | // are dealt with independently. |
1692 | | #if defined(OPENSSL_STATIC_ARMCAP_SHA1) || defined(__ARM_FEATURE_SHA2) |
1693 | | return 1; |
1694 | | #elif defined(OPENSSL_STATIC_ARMCAP) |
1695 | | return 0; |
1696 | | #else |
1697 | | return (OPENSSL_get_armcap() & ARMV8_SHA1) != 0; |
1698 | | #endif |
1699 | | } |
1700 | | |
1701 | | OPENSSL_INLINE int CRYPTO_is_ARMv8_SHA256_capable(void) { |
1702 | | // SHA-1 and SHA-2 (only) share |__ARM_FEATURE_SHA2| but otherwise |
1703 | | // are dealt with independently. |
1704 | | #if defined(OPENSSL_STATIC_ARMCAP_SHA256) || defined(__ARM_FEATURE_SHA2) |
1705 | | return 1; |
1706 | | #elif defined(OPENSSL_STATIC_ARMCAP) |
1707 | | return 0; |
1708 | | #else |
1709 | | return (OPENSSL_get_armcap() & ARMV8_SHA256) != 0; |
1710 | | #endif |
1711 | | } |
1712 | | |
1713 | | OPENSSL_INLINE int CRYPTO_is_ARMv8_SHA512_capable(void) { |
1714 | | // There is no |OPENSSL_STATIC_ARMCAP_SHA512|. |
1715 | | #if defined(__ARM_FEATURE_SHA512) |
1716 | | return 1; |
1717 | | #elif defined(OPENSSL_STATIC_ARMCAP) |
1718 | | return 0; |
1719 | | #else |
1720 | | return (OPENSSL_get_armcap() & ARMV8_SHA512) != 0; |
1721 | | #endif |
1722 | | } |
1723 | | |
1724 | | #endif // OPENSSL_ARM || OPENSSL_AARCH64 |
1725 | | |
1726 | | #if defined(BORINGSSL_DISPATCH_TEST) |
1727 | | // Runtime CPU dispatch testing support |
1728 | | |
1729 | | // BORINGSSL_function_hit is an array of flags. The following functions will |
1730 | | // set these flags if BORINGSSL_DISPATCH_TEST is defined. |
1731 | | // 0: aes_hw_ctr32_encrypt_blocks |
1732 | | // 1: aes_hw_encrypt |
1733 | | // 2: aesni_gcm_encrypt |
1734 | | // 3: aes_hw_set_encrypt_key |
1735 | | // 4: vpaes_encrypt |
1736 | | // 5: vpaes_set_encrypt_key |
1737 | | extern uint8_t BORINGSSL_function_hit[7]; |
1738 | | #endif // BORINGSSL_DISPATCH_TEST |
1739 | | |
1740 | | // OPENSSL_vasprintf_internal is just like |vasprintf(3)|. If |system_malloc| is |
1741 | | // 0, memory will be allocated with |OPENSSL_malloc| and must be freed with |
1742 | | // |OPENSSL_free|. Otherwise the system |malloc| function is used and the memory |
1743 | | // must be freed with the system |free| function. |
1744 | | OPENSSL_EXPORT int OPENSSL_vasprintf_internal(char **str, const char *format, |
1745 | | va_list args, int system_malloc) |
1746 | | OPENSSL_PRINTF_FORMAT_FUNC(2, 0); |
1747 | | |
1748 | | #if defined(__cplusplus) |
1749 | | } // extern C |
1750 | | #endif |
1751 | | |
1752 | | #endif // OPENSSL_HEADER_CRYPTO_INTERNAL_H |