/rust/registry/src/index.crates.io-6f17d22bba15001f/aws-lc-sys-0.28.0/aws-lc/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/crypto.h> |
113 | | #include <openssl/ex_data.h> |
114 | | #include <openssl/service_indicator.h> |
115 | | #include <openssl/stack.h> |
116 | | #include <openssl/thread.h> |
117 | | |
118 | | #include "fipsmodule/rand/snapsafe_detect.h" |
119 | | |
120 | | #include <assert.h> |
121 | | #include <string.h> |
122 | | |
123 | | #if defined(BORINGSSL_CONSTANT_TIME_VALIDATION) |
124 | | #include <valgrind/memcheck.h> |
125 | | #endif |
126 | | |
127 | | #if defined(BORINGSSL_FIPS_BREAK_TESTS) |
128 | | #include <stdlib.h> |
129 | | #endif |
130 | | |
131 | | #if !defined(__cplusplus) |
132 | | #if defined(_MSC_VER) |
133 | | #define alignas(x) __declspec(align(x)) |
134 | | #define alignof __alignof |
135 | | #elif !defined(AWS_LC_STDALIGN_AVAILABLE) |
136 | | #define alignas(x) __attribute__ ((aligned (x))) |
137 | | #define alignof(x) __alignof__ (x) |
138 | | #else |
139 | | #include <stdalign.h> |
140 | | #endif |
141 | | #endif |
142 | | |
143 | | #if defined(OPENSSL_THREADS) && \ |
144 | | (!defined(OPENSSL_WINDOWS) || defined(__MINGW32__)) |
145 | | #include <pthread.h> |
146 | | #define OPENSSL_PTHREADS |
147 | | #endif |
148 | | |
149 | | #if defined(OPENSSL_THREADS) && !defined(OPENSSL_PTHREADS) && \ |
150 | | defined(OPENSSL_WINDOWS) |
151 | | #define OPENSSL_WINDOWS_THREADS |
152 | | OPENSSL_MSVC_PRAGMA(warning(push, 3)) |
153 | | #include <windows.h> |
154 | | OPENSSL_MSVC_PRAGMA(warning(pop)) |
155 | | #endif |
156 | | |
157 | | #include <stdbool.h> |
158 | | |
159 | | #if defined(__cplusplus) |
160 | | extern "C" { |
161 | | #endif |
162 | | |
163 | | // On non-MSVC 64-bit targets, we expect __uint128_t support. This includes |
164 | | // clang-cl, which defines both __clang__ and _MSC_VER. |
165 | | #if (!defined(_MSC_VER) || defined(__clang__)) && defined(OPENSSL_64_BIT) |
166 | | #define BORINGSSL_HAS_UINT128 |
167 | | typedef __int128_t int128_t; |
168 | | typedef __uint128_t uint128_t; |
169 | | |
170 | | // __uint128_t division depends on intrinsics in the compiler runtime. Those |
171 | | // intrinsics are missing in clang-cl (https://crbug.com/787617) and nanolibc. |
172 | | // These may be bugs in the toolchain definition, but just disable it for now. |
173 | | #if !defined(_MSC_VER) && !defined(OPENSSL_NANOLIBC) |
174 | | #define BORINGSSL_CAN_DIVIDE_UINT128 |
175 | | #endif |
176 | | #endif |
177 | | |
178 | 0 | #define OPENSSL_ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0])) |
179 | | |
180 | | // Have a generic fall-through for different versions of C/C++. |
181 | | #if defined(__cplusplus) && __cplusplus >= 201703L |
182 | | #define OPENSSL_FALLTHROUGH [[fallthrough]] |
183 | | #elif defined(__cplusplus) && __cplusplus >= 201103L && defined(__clang__) |
184 | | #define OPENSSL_FALLTHROUGH [[clang::fallthrough]] |
185 | | #elif defined(__cplusplus) && __cplusplus >= 201103L && defined(__GNUC__) && \ |
186 | | __GNUC__ >= 7 |
187 | | #define OPENSSL_FALLTHROUGH [[gnu::fallthrough]] |
188 | | #elif defined(__GNUC__) && __GNUC__ >= 7 // gcc 7 |
189 | | #define OPENSSL_FALLTHROUGH __attribute__ ((fallthrough)) |
190 | | #elif defined(__clang__) |
191 | | #if __has_attribute(fallthrough) && __clang_major__ >= 5 |
192 | | // Clang 3.5, at least, complains about "error: declaration does not declare |
193 | | // anything", possibily because we put a semicolon after this macro in |
194 | | // practice. Thus limit it to >= Clang 5, which does work. |
195 | 0 | #define OPENSSL_FALLTHROUGH __attribute__ ((fallthrough)) |
196 | | #else // clang versions that do not support fallthrough. |
197 | | #define OPENSSL_FALLTHROUGH |
198 | | #endif |
199 | | #else // C++11 on gcc 6, and all other cases |
200 | | #define OPENSSL_FALLTHROUGH |
201 | | #endif |
202 | | |
203 | | // GCC-like compilers indicate SSE2 with |__SSE2__|. MSVC leaves the caller to |
204 | | // know that x86_64 has SSE2, and uses _M_IX86_FP to indicate SSE2 on x86. |
205 | | // https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros?view=msvc-170 |
206 | | #if defined(__SSE2__) || defined(_M_AMD64) || defined(_M_X64) || \ |
207 | | (defined(_M_IX86_FP) && _M_IX86_FP >= 2) |
208 | | #define OPENSSL_SSE2 |
209 | | #endif |
210 | | |
211 | | #if defined(OPENSSL_X86) && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_SSE2) |
212 | | #error \ |
213 | | "x86 assembly requires SSE2. Build with -msse2 (recommended), or disable assembly optimizations with -DOPENSSL_NO_ASM." |
214 | | #endif |
215 | | |
216 | | // For convenience in testing the fallback code, we allow disabling SSE2 |
217 | | // intrinsics via |OPENSSL_NO_SSE2_FOR_TESTING|. We require SSE2 on x86 and |
218 | | // x86_64, so we would otherwise need to test such code on a non-x86 platform. |
219 | | // |
220 | | // This does not remove the above requirement for SSE2 support with assembly |
221 | | // optimizations. It only disables some intrinsics-based optimizations so that |
222 | | // we can test the fallback code on CI. |
223 | | #if defined(OPENSSL_SSE2) && defined(OPENSSL_NO_SSE2_FOR_TESTING) |
224 | | #undef OPENSSL_SSE2 |
225 | | #endif |
226 | | |
227 | | #if defined(__GNUC__) || defined(__clang__) |
228 | | #define OPENSSL_ATTR_PURE __attribute__((pure)) |
229 | | #else |
230 | | #define OPENSSL_ATTR_PURE |
231 | | #endif |
232 | | |
233 | | #if defined(__has_builtin) |
234 | | #define OPENSSL_HAS_BUILTIN(x) __has_builtin(x) |
235 | | #else |
236 | | #define OPENSSL_HAS_BUILTIN(x) 0 |
237 | | #endif |
238 | | |
239 | | |
240 | | // Pointer utility functions. |
241 | | |
242 | | // buffers_alias returns one if |a| and |b| alias and zero otherwise. |
243 | | static inline int buffers_alias(const uint8_t *a, size_t a_len, |
244 | 0 | const uint8_t *b, size_t b_len) { |
245 | | // Cast |a| and |b| to integers. In C, pointer comparisons between unrelated |
246 | | // objects are undefined whereas pointer to integer conversions are merely |
247 | | // implementation-defined. We assume the implementation defined it in a sane |
248 | | // way. |
249 | 0 | uintptr_t a_u = (uintptr_t)a; |
250 | 0 | uintptr_t b_u = (uintptr_t)b; |
251 | 0 | return a_u + a_len > b_u && b_u + b_len > a_u; |
252 | 0 | } Unexecuted instantiation: convert.c:buffers_alias Unexecuted instantiation: cbb.c:buffers_alias Unexecuted instantiation: cbs.c:buffers_alias Unexecuted instantiation: e_aesgcmsiv.c:buffers_alias Unexecuted instantiation: e_chacha20poly1305.c:buffers_alias Unexecuted instantiation: crypto.c:buffers_alias Unexecuted instantiation: cfb.c:buffers_alias Unexecuted instantiation: ec_asn1.c:buffers_alias Unexecuted instantiation: ecdsa_asn1.c:buffers_alias Unexecuted instantiation: err.c:buffers_alias Unexecuted instantiation: evp_asn1.c:buffers_alias Unexecuted instantiation: p_methods.c:buffers_alias Unexecuted instantiation: p_pqdsa_asn1.c:buffers_alias Unexecuted instantiation: p_x25519_asn1.c:buffers_alias Unexecuted instantiation: bcm.c:buffers_alias Unexecuted instantiation: kyber1024r3_ref.c:buffers_alias Unexecuted instantiation: kyber512r3_ref.c:buffers_alias Unexecuted instantiation: kyber768r3_ref.c:buffers_alias Unexecuted instantiation: mem.c:buffers_alias Unexecuted instantiation: obj.c:buffers_alias Unexecuted instantiation: obj_xref.c:buffers_alias Unexecuted instantiation: poly1305_vec.c:buffers_alias Unexecuted instantiation: forkunsafe.c:buffers_alias Unexecuted instantiation: refcount_c11.c:buffers_alias Unexecuted instantiation: rsa_asn1.c:buffers_alias Unexecuted instantiation: rsa_crypt.c:buffers_alias Unexecuted instantiation: rsassa_pss_asn1.c:buffers_alias Unexecuted instantiation: stack.c:buffers_alias Unexecuted instantiation: thread_pthread.c:buffers_alias Unexecuted instantiation: a_object.c:buffers_alias Unexecuted instantiation: posix_time.c:buffers_alias Unexecuted instantiation: bio.c:buffers_alias Unexecuted instantiation: file.c:buffers_alias Unexecuted instantiation: asn1_compat.c:buffers_alias Unexecuted instantiation: chacha.c:buffers_alias Unexecuted instantiation: ripemd.c:buffers_alias Unexecuted instantiation: digest_extra.c:buffers_alias Unexecuted instantiation: dsa.c:buffers_alias Unexecuted instantiation: dsa_asn1.c:buffers_alias Unexecuted instantiation: engine.c:buffers_alias Unexecuted instantiation: p_dh_asn1.c:buffers_alias Unexecuted instantiation: p_dsa.c:buffers_alias Unexecuted instantiation: p_ed25519_asn1.c:buffers_alias Unexecuted instantiation: p_hmac_asn1.c:buffers_alias Unexecuted instantiation: p_kem_asn1.c:buffers_alias Unexecuted instantiation: print.c:buffers_alias Unexecuted instantiation: ex_data.c:buffers_alias Unexecuted instantiation: lhash.c:buffers_alias Unexecuted instantiation: blake2.c:buffers_alias Unexecuted instantiation: params.c:buffers_alias |
253 | | |
254 | | typedef uint8_t stack_align_type; |
255 | | OPENSSL_STATIC_ASSERT(sizeof(stack_align_type) == 1, |
256 | | stack_align_type_is_not_8_bits_long) |
257 | | |
258 | | // align_pointer returns |ptr|, advanced to |alignment|. |alignment| must be a |
259 | | // power of two, and |ptr| must have at least |alignment - 1| bytes of scratch |
260 | | // space. |
261 | 0 | static inline void *align_pointer(void *ptr, size_t alignment) { |
262 | | // |alignment| must be a power of two. |
263 | 0 | assert(alignment != 0 && (alignment & (alignment - 1)) == 0); |
264 | | // Instead of aligning |ptr| as a |uintptr_t| and casting back, compute the |
265 | | // offset and advance in pointer space. C guarantees that casting from pointer |
266 | | // to |uintptr_t| and back gives the same pointer, but general |
267 | | // integer-to-pointer conversions are implementation-defined. GCC does define |
268 | | // it in the useful way, but this makes fewer assumptions. |
269 | 0 | uintptr_t offset = (0u - (uintptr_t)ptr) & (alignment - 1); |
270 | 0 | ptr = (char *)ptr + offset; |
271 | 0 | assert(((uintptr_t)ptr & (alignment - 1)) == 0); |
272 | 0 | return ptr; |
273 | 0 | } Unexecuted instantiation: convert.c:align_pointer Unexecuted instantiation: cbb.c:align_pointer Unexecuted instantiation: cbs.c:align_pointer Unexecuted instantiation: e_aesgcmsiv.c:align_pointer Unexecuted instantiation: e_chacha20poly1305.c:align_pointer Unexecuted instantiation: crypto.c:align_pointer Unexecuted instantiation: cfb.c:align_pointer Unexecuted instantiation: ec_asn1.c:align_pointer Unexecuted instantiation: ecdsa_asn1.c:align_pointer Unexecuted instantiation: err.c:align_pointer Unexecuted instantiation: evp_asn1.c:align_pointer Unexecuted instantiation: p_methods.c:align_pointer Unexecuted instantiation: p_pqdsa_asn1.c:align_pointer Unexecuted instantiation: p_x25519_asn1.c:align_pointer Unexecuted instantiation: bcm.c:align_pointer Unexecuted instantiation: kyber1024r3_ref.c:align_pointer Unexecuted instantiation: kyber512r3_ref.c:align_pointer Unexecuted instantiation: kyber768r3_ref.c:align_pointer Unexecuted instantiation: mem.c:align_pointer Unexecuted instantiation: obj.c:align_pointer Unexecuted instantiation: obj_xref.c:align_pointer Unexecuted instantiation: poly1305_vec.c:align_pointer Unexecuted instantiation: forkunsafe.c:align_pointer Unexecuted instantiation: refcount_c11.c:align_pointer Unexecuted instantiation: rsa_asn1.c:align_pointer Unexecuted instantiation: rsa_crypt.c:align_pointer Unexecuted instantiation: rsassa_pss_asn1.c:align_pointer Unexecuted instantiation: stack.c:align_pointer Unexecuted instantiation: thread_pthread.c:align_pointer Unexecuted instantiation: a_object.c:align_pointer Unexecuted instantiation: posix_time.c:align_pointer Unexecuted instantiation: bio.c:align_pointer Unexecuted instantiation: file.c:align_pointer Unexecuted instantiation: asn1_compat.c:align_pointer Unexecuted instantiation: chacha.c:align_pointer Unexecuted instantiation: ripemd.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: engine.c:align_pointer Unexecuted instantiation: p_dh_asn1.c:align_pointer Unexecuted instantiation: p_dsa.c:align_pointer Unexecuted instantiation: p_ed25519_asn1.c:align_pointer Unexecuted instantiation: p_hmac_asn1.c:align_pointer Unexecuted instantiation: p_kem_asn1.c:align_pointer Unexecuted instantiation: print.c:align_pointer Unexecuted instantiation: ex_data.c:align_pointer Unexecuted instantiation: lhash.c:align_pointer Unexecuted instantiation: blake2.c:align_pointer Unexecuted instantiation: params.c:align_pointer |
274 | | |
275 | | |
276 | | // Constant-time utility functions. |
277 | | // |
278 | | // The following methods return a bitmask of all ones (0xff...f) for true and 0 |
279 | | // for false. This is useful for choosing a value based on the result of a |
280 | | // conditional in constant time. For example, |
281 | | // |
282 | | // if (a < b) { |
283 | | // c = a; |
284 | | // } else { |
285 | | // c = b; |
286 | | // } |
287 | | // |
288 | | // can be written as |
289 | | // |
290 | | // crypto_word_t lt = constant_time_lt_w(a, b); |
291 | | // c = constant_time_select_w(lt, a, b); |
292 | | |
293 | | // crypto_word_t is the type that most constant-time functions use. Ideally we |
294 | | // would like it to be |size_t|, but NaCl builds in 64-bit mode with 32-bit |
295 | | // pointers, which means that |size_t| can be 32 bits when |BN_ULONG| is 64 |
296 | | // bits. Since we want to be able to do constant-time operations on a |
297 | | // |BN_ULONG|, |crypto_word_t| is defined as an unsigned value with the native |
298 | | // word length. |
299 | | #if defined(OPENSSL_64_BIT) |
300 | | typedef uint64_t crypto_word_t; |
301 | | #elif defined(OPENSSL_32_BIT) |
302 | | typedef uint32_t crypto_word_t; |
303 | | #else |
304 | | #error "Must define either OPENSSL_32_BIT or OPENSSL_64_BIT" |
305 | | #endif |
306 | | |
307 | 0 | #define CONSTTIME_TRUE_W ~((crypto_word_t)0) |
308 | 0 | #define CONSTTIME_FALSE_W ((crypto_word_t)0) |
309 | | #define CONSTTIME_TRUE_8 ((uint8_t)0xff) |
310 | | #define CONSTTIME_FALSE_8 ((uint8_t)0) |
311 | | |
312 | | // value_barrier_w returns |a|, but prevents GCC and Clang from reasoning about |
313 | | // the returned value. This is used to mitigate compilers undoing constant-time |
314 | | // code, until we can express our requirements directly in the language. |
315 | | // |
316 | | // Note the compiler is aware that |value_barrier_w| has no side effects and |
317 | | // always has the same output for a given input. This allows it to eliminate |
318 | | // dead code, move computations across loops, and vectorize. |
319 | 0 | static inline crypto_word_t value_barrier_w(crypto_word_t a) { |
320 | 0 | #if defined(__GNUC__) || defined(__clang__) |
321 | 0 | __asm__("" : "+r"(a) : /* no inputs */); |
322 | 0 | #endif |
323 | 0 | return a; |
324 | 0 | } Unexecuted instantiation: convert.c:value_barrier_w Unexecuted instantiation: cbb.c:value_barrier_w Unexecuted instantiation: cbs.c:value_barrier_w Unexecuted instantiation: e_aesgcmsiv.c:value_barrier_w Unexecuted instantiation: e_chacha20poly1305.c:value_barrier_w Unexecuted instantiation: crypto.c:value_barrier_w Unexecuted instantiation: cfb.c:value_barrier_w Unexecuted instantiation: ec_asn1.c:value_barrier_w Unexecuted instantiation: ecdsa_asn1.c:value_barrier_w Unexecuted instantiation: err.c:value_barrier_w Unexecuted instantiation: evp_asn1.c:value_barrier_w Unexecuted instantiation: p_methods.c:value_barrier_w Unexecuted instantiation: p_pqdsa_asn1.c:value_barrier_w Unexecuted instantiation: p_x25519_asn1.c:value_barrier_w Unexecuted instantiation: bcm.c:value_barrier_w Unexecuted instantiation: kyber1024r3_ref.c:value_barrier_w Unexecuted instantiation: kyber512r3_ref.c:value_barrier_w Unexecuted instantiation: kyber768r3_ref.c:value_barrier_w Unexecuted instantiation: mem.c:value_barrier_w Unexecuted instantiation: obj.c:value_barrier_w Unexecuted instantiation: obj_xref.c:value_barrier_w Unexecuted instantiation: poly1305_vec.c:value_barrier_w Unexecuted instantiation: forkunsafe.c:value_barrier_w Unexecuted instantiation: refcount_c11.c:value_barrier_w Unexecuted instantiation: rsa_asn1.c:value_barrier_w Unexecuted instantiation: rsa_crypt.c:value_barrier_w Unexecuted instantiation: rsassa_pss_asn1.c:value_barrier_w Unexecuted instantiation: stack.c:value_barrier_w Unexecuted instantiation: thread_pthread.c:value_barrier_w Unexecuted instantiation: a_object.c:value_barrier_w Unexecuted instantiation: posix_time.c:value_barrier_w Unexecuted instantiation: bio.c:value_barrier_w Unexecuted instantiation: file.c:value_barrier_w Unexecuted instantiation: asn1_compat.c:value_barrier_w Unexecuted instantiation: chacha.c:value_barrier_w Unexecuted instantiation: ripemd.c:value_barrier_w 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: engine.c:value_barrier_w Unexecuted instantiation: p_dh_asn1.c:value_barrier_w Unexecuted instantiation: p_dsa.c:value_barrier_w Unexecuted instantiation: p_ed25519_asn1.c:value_barrier_w Unexecuted instantiation: p_hmac_asn1.c:value_barrier_w Unexecuted instantiation: p_kem_asn1.c:value_barrier_w Unexecuted instantiation: print.c:value_barrier_w Unexecuted instantiation: ex_data.c:value_barrier_w Unexecuted instantiation: lhash.c:value_barrier_w Unexecuted instantiation: blake2.c:value_barrier_w Unexecuted instantiation: params.c:value_barrier_w |
325 | | |
326 | | // value_barrier_u32 behaves like |value_barrier_w| but takes a |uint32_t|. |
327 | 0 | static inline uint32_t value_barrier_u32(uint32_t a) { |
328 | 0 | #if defined(__GNUC__) || defined(__clang__) |
329 | 0 | __asm__("" : "+r"(a) : /* no inputs */); |
330 | 0 | #endif |
331 | 0 | return a; |
332 | 0 | } Unexecuted instantiation: convert.c:value_barrier_u32 Unexecuted instantiation: cbb.c:value_barrier_u32 Unexecuted instantiation: cbs.c:value_barrier_u32 Unexecuted instantiation: e_aesgcmsiv.c:value_barrier_u32 Unexecuted instantiation: e_chacha20poly1305.c:value_barrier_u32 Unexecuted instantiation: crypto.c:value_barrier_u32 Unexecuted instantiation: cfb.c:value_barrier_u32 Unexecuted instantiation: ec_asn1.c:value_barrier_u32 Unexecuted instantiation: ecdsa_asn1.c:value_barrier_u32 Unexecuted instantiation: err.c:value_barrier_u32 Unexecuted instantiation: evp_asn1.c:value_barrier_u32 Unexecuted instantiation: p_methods.c:value_barrier_u32 Unexecuted instantiation: p_pqdsa_asn1.c:value_barrier_u32 Unexecuted instantiation: p_x25519_asn1.c:value_barrier_u32 Unexecuted instantiation: bcm.c:value_barrier_u32 Unexecuted instantiation: kyber1024r3_ref.c:value_barrier_u32 Unexecuted instantiation: kyber512r3_ref.c:value_barrier_u32 Unexecuted instantiation: kyber768r3_ref.c:value_barrier_u32 Unexecuted instantiation: mem.c:value_barrier_u32 Unexecuted instantiation: obj.c:value_barrier_u32 Unexecuted instantiation: obj_xref.c:value_barrier_u32 Unexecuted instantiation: poly1305_vec.c:value_barrier_u32 Unexecuted instantiation: forkunsafe.c:value_barrier_u32 Unexecuted instantiation: refcount_c11.c:value_barrier_u32 Unexecuted instantiation: rsa_asn1.c:value_barrier_u32 Unexecuted instantiation: rsa_crypt.c:value_barrier_u32 Unexecuted instantiation: rsassa_pss_asn1.c:value_barrier_u32 Unexecuted instantiation: stack.c:value_barrier_u32 Unexecuted instantiation: thread_pthread.c:value_barrier_u32 Unexecuted instantiation: a_object.c:value_barrier_u32 Unexecuted instantiation: posix_time.c:value_barrier_u32 Unexecuted instantiation: bio.c:value_barrier_u32 Unexecuted instantiation: file.c:value_barrier_u32 Unexecuted instantiation: asn1_compat.c:value_barrier_u32 Unexecuted instantiation: chacha.c:value_barrier_u32 Unexecuted instantiation: ripemd.c:value_barrier_u32 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: engine.c:value_barrier_u32 Unexecuted instantiation: p_dh_asn1.c:value_barrier_u32 Unexecuted instantiation: p_dsa.c:value_barrier_u32 Unexecuted instantiation: p_ed25519_asn1.c:value_barrier_u32 Unexecuted instantiation: p_hmac_asn1.c:value_barrier_u32 Unexecuted instantiation: p_kem_asn1.c:value_barrier_u32 Unexecuted instantiation: print.c:value_barrier_u32 Unexecuted instantiation: ex_data.c:value_barrier_u32 Unexecuted instantiation: lhash.c:value_barrier_u32 Unexecuted instantiation: blake2.c:value_barrier_u32 Unexecuted instantiation: params.c:value_barrier_u32 |
333 | | |
334 | | // value_barrier_u64 behaves like |value_barrier_w| but takes a |uint64_t|. |
335 | 0 | static inline uint64_t value_barrier_u64(uint64_t a) { |
336 | 0 | #if defined(__GNUC__) || defined(__clang__) |
337 | 0 | __asm__("" : "+r"(a) : /* no inputs */); |
338 | 0 | #endif |
339 | 0 | return a; |
340 | 0 | } Unexecuted instantiation: convert.c:value_barrier_u64 Unexecuted instantiation: cbb.c:value_barrier_u64 Unexecuted instantiation: cbs.c:value_barrier_u64 Unexecuted instantiation: e_aesgcmsiv.c:value_barrier_u64 Unexecuted instantiation: e_chacha20poly1305.c:value_barrier_u64 Unexecuted instantiation: crypto.c:value_barrier_u64 Unexecuted instantiation: cfb.c:value_barrier_u64 Unexecuted instantiation: ec_asn1.c:value_barrier_u64 Unexecuted instantiation: ecdsa_asn1.c:value_barrier_u64 Unexecuted instantiation: err.c:value_barrier_u64 Unexecuted instantiation: evp_asn1.c:value_barrier_u64 Unexecuted instantiation: p_methods.c:value_barrier_u64 Unexecuted instantiation: p_pqdsa_asn1.c:value_barrier_u64 Unexecuted instantiation: p_x25519_asn1.c:value_barrier_u64 Unexecuted instantiation: bcm.c:value_barrier_u64 Unexecuted instantiation: kyber1024r3_ref.c:value_barrier_u64 Unexecuted instantiation: kyber512r3_ref.c:value_barrier_u64 Unexecuted instantiation: kyber768r3_ref.c:value_barrier_u64 Unexecuted instantiation: mem.c:value_barrier_u64 Unexecuted instantiation: obj.c:value_barrier_u64 Unexecuted instantiation: obj_xref.c:value_barrier_u64 Unexecuted instantiation: poly1305_vec.c:value_barrier_u64 Unexecuted instantiation: forkunsafe.c:value_barrier_u64 Unexecuted instantiation: refcount_c11.c:value_barrier_u64 Unexecuted instantiation: rsa_asn1.c:value_barrier_u64 Unexecuted instantiation: rsa_crypt.c:value_barrier_u64 Unexecuted instantiation: rsassa_pss_asn1.c:value_barrier_u64 Unexecuted instantiation: stack.c:value_barrier_u64 Unexecuted instantiation: thread_pthread.c:value_barrier_u64 Unexecuted instantiation: a_object.c:value_barrier_u64 Unexecuted instantiation: posix_time.c:value_barrier_u64 Unexecuted instantiation: bio.c:value_barrier_u64 Unexecuted instantiation: file.c:value_barrier_u64 Unexecuted instantiation: asn1_compat.c:value_barrier_u64 Unexecuted instantiation: chacha.c:value_barrier_u64 Unexecuted instantiation: ripemd.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: engine.c:value_barrier_u64 Unexecuted instantiation: p_dh_asn1.c:value_barrier_u64 Unexecuted instantiation: p_dsa.c:value_barrier_u64 Unexecuted instantiation: p_ed25519_asn1.c:value_barrier_u64 Unexecuted instantiation: p_hmac_asn1.c:value_barrier_u64 Unexecuted instantiation: p_kem_asn1.c:value_barrier_u64 Unexecuted instantiation: print.c:value_barrier_u64 Unexecuted instantiation: ex_data.c:value_barrier_u64 Unexecuted instantiation: lhash.c:value_barrier_u64 Unexecuted instantiation: blake2.c:value_barrier_u64 Unexecuted instantiation: params.c:value_barrier_u64 |
341 | | |
342 | | // constant_time_msb_w returns the given value with the MSB copied to all the |
343 | | // other bits. |
344 | 0 | static inline crypto_word_t constant_time_msb_w(crypto_word_t a) { |
345 | 0 | return 0u - (a >> (sizeof(a) * 8 - 1)); |
346 | 0 | } Unexecuted instantiation: convert.c:constant_time_msb_w Unexecuted instantiation: cbb.c:constant_time_msb_w Unexecuted instantiation: cbs.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: crypto.c:constant_time_msb_w Unexecuted instantiation: cfb.c:constant_time_msb_w Unexecuted instantiation: ec_asn1.c:constant_time_msb_w Unexecuted instantiation: ecdsa_asn1.c:constant_time_msb_w Unexecuted instantiation: err.c:constant_time_msb_w Unexecuted instantiation: evp_asn1.c:constant_time_msb_w Unexecuted instantiation: p_methods.c:constant_time_msb_w Unexecuted instantiation: p_pqdsa_asn1.c:constant_time_msb_w Unexecuted instantiation: p_x25519_asn1.c:constant_time_msb_w Unexecuted instantiation: bcm.c:constant_time_msb_w Unexecuted instantiation: kyber1024r3_ref.c:constant_time_msb_w Unexecuted instantiation: kyber512r3_ref.c:constant_time_msb_w Unexecuted instantiation: kyber768r3_ref.c:constant_time_msb_w Unexecuted instantiation: mem.c:constant_time_msb_w Unexecuted instantiation: obj.c:constant_time_msb_w Unexecuted instantiation: obj_xref.c:constant_time_msb_w Unexecuted instantiation: poly1305_vec.c:constant_time_msb_w Unexecuted instantiation: forkunsafe.c:constant_time_msb_w Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:constant_time_msb_w Unexecuted instantiation: stack.c:constant_time_msb_w Unexecuted instantiation: thread_pthread.c:constant_time_msb_w Unexecuted instantiation: a_object.c:constant_time_msb_w Unexecuted instantiation: posix_time.c:constant_time_msb_w Unexecuted instantiation: bio.c:constant_time_msb_w Unexecuted instantiation: file.c:constant_time_msb_w Unexecuted instantiation: asn1_compat.c:constant_time_msb_w Unexecuted instantiation: chacha.c:constant_time_msb_w Unexecuted instantiation: ripemd.c:constant_time_msb_w 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: engine.c:constant_time_msb_w Unexecuted instantiation: p_dh_asn1.c:constant_time_msb_w Unexecuted instantiation: p_dsa.c:constant_time_msb_w Unexecuted instantiation: p_ed25519_asn1.c:constant_time_msb_w Unexecuted instantiation: p_hmac_asn1.c:constant_time_msb_w Unexecuted instantiation: p_kem_asn1.c:constant_time_msb_w Unexecuted instantiation: print.c:constant_time_msb_w Unexecuted instantiation: ex_data.c:constant_time_msb_w Unexecuted instantiation: lhash.c:constant_time_msb_w Unexecuted instantiation: blake2.c:constant_time_msb_w Unexecuted instantiation: params.c:constant_time_msb_w |
347 | | |
348 | | // constant_time_lt_w returns 0xff..f if a < b and 0 otherwise. |
349 | | static inline crypto_word_t constant_time_lt_w(crypto_word_t a, |
350 | 0 | crypto_word_t b) { |
351 | | // Consider the two cases of the problem: |
352 | | // msb(a) == msb(b): a < b iff the MSB of a - b is set. |
353 | | // msb(a) != msb(b): a < b iff the MSB of b is set. |
354 | | // |
355 | | // If msb(a) == msb(b) then the following evaluates as: |
356 | | // msb(a^((a^b)|((a-b)^a))) == |
357 | | // msb(a^((a-b) ^ a)) == (because msb(a^b) == 0) |
358 | | // msb(a^a^(a-b)) == (rearranging) |
359 | | // msb(a-b) (because ∀x. x^x == 0) |
360 | | // |
361 | | // Else, if msb(a) != msb(b) then the following evaluates as: |
362 | | // msb(a^((a^b)|((a-b)^a))) == |
363 | | // msb(a^(𝟙 | ((a-b)^a))) == (because msb(a^b) == 1 and 𝟙 |
364 | | // represents a value s.t. msb(𝟙) = 1) |
365 | | // msb(a^𝟙) == (because ORing with 1 results in 1) |
366 | | // msb(b) |
367 | | // |
368 | | // |
369 | | // Here is an SMT-LIB verification of this formula: |
370 | | // |
371 | | // (define-fun lt ((a (_ BitVec 32)) (b (_ BitVec 32))) (_ BitVec 32) |
372 | | // (bvxor a (bvor (bvxor a b) (bvxor (bvsub a b) a))) |
373 | | // ) |
374 | | // |
375 | | // (declare-fun a () (_ BitVec 32)) |
376 | | // (declare-fun b () (_ BitVec 32)) |
377 | | // |
378 | | // (assert (not (= (= #x00000001 (bvlshr (lt a b) #x0000001f)) (bvult a b)))) |
379 | | // (check-sat) |
380 | | // (get-model) |
381 | 0 | return constant_time_msb_w(a^((a^b)|((a-b)^a))); |
382 | 0 | } Unexecuted instantiation: convert.c:constant_time_lt_w Unexecuted instantiation: cbb.c:constant_time_lt_w Unexecuted instantiation: cbs.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: crypto.c:constant_time_lt_w Unexecuted instantiation: cfb.c:constant_time_lt_w Unexecuted instantiation: ec_asn1.c:constant_time_lt_w Unexecuted instantiation: ecdsa_asn1.c:constant_time_lt_w Unexecuted instantiation: err.c:constant_time_lt_w Unexecuted instantiation: evp_asn1.c:constant_time_lt_w Unexecuted instantiation: p_methods.c:constant_time_lt_w Unexecuted instantiation: p_pqdsa_asn1.c:constant_time_lt_w Unexecuted instantiation: p_x25519_asn1.c:constant_time_lt_w Unexecuted instantiation: bcm.c:constant_time_lt_w Unexecuted instantiation: kyber1024r3_ref.c:constant_time_lt_w Unexecuted instantiation: kyber512r3_ref.c:constant_time_lt_w Unexecuted instantiation: kyber768r3_ref.c:constant_time_lt_w Unexecuted instantiation: mem.c:constant_time_lt_w Unexecuted instantiation: obj.c:constant_time_lt_w Unexecuted instantiation: obj_xref.c:constant_time_lt_w Unexecuted instantiation: poly1305_vec.c:constant_time_lt_w Unexecuted instantiation: forkunsafe.c:constant_time_lt_w Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:constant_time_lt_w Unexecuted instantiation: stack.c:constant_time_lt_w Unexecuted instantiation: thread_pthread.c:constant_time_lt_w Unexecuted instantiation: a_object.c:constant_time_lt_w Unexecuted instantiation: posix_time.c:constant_time_lt_w Unexecuted instantiation: bio.c:constant_time_lt_w Unexecuted instantiation: file.c:constant_time_lt_w Unexecuted instantiation: asn1_compat.c:constant_time_lt_w Unexecuted instantiation: chacha.c:constant_time_lt_w Unexecuted instantiation: ripemd.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: engine.c:constant_time_lt_w Unexecuted instantiation: p_dh_asn1.c:constant_time_lt_w Unexecuted instantiation: p_dsa.c:constant_time_lt_w Unexecuted instantiation: p_ed25519_asn1.c:constant_time_lt_w Unexecuted instantiation: p_hmac_asn1.c:constant_time_lt_w Unexecuted instantiation: p_kem_asn1.c:constant_time_lt_w Unexecuted instantiation: print.c:constant_time_lt_w Unexecuted instantiation: ex_data.c:constant_time_lt_w Unexecuted instantiation: lhash.c:constant_time_lt_w Unexecuted instantiation: blake2.c:constant_time_lt_w Unexecuted instantiation: params.c:constant_time_lt_w |
383 | | |
384 | | // constant_time_lt_8 acts like |constant_time_lt_w| but returns an 8-bit |
385 | | // mask. |
386 | 0 | static inline uint8_t constant_time_lt_8(crypto_word_t a, crypto_word_t b) { |
387 | 0 | return (uint8_t)(constant_time_lt_w(a, b)); |
388 | 0 | } Unexecuted instantiation: convert.c:constant_time_lt_8 Unexecuted instantiation: cbb.c:constant_time_lt_8 Unexecuted instantiation: cbs.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: crypto.c:constant_time_lt_8 Unexecuted instantiation: cfb.c:constant_time_lt_8 Unexecuted instantiation: ec_asn1.c:constant_time_lt_8 Unexecuted instantiation: ecdsa_asn1.c:constant_time_lt_8 Unexecuted instantiation: err.c:constant_time_lt_8 Unexecuted instantiation: evp_asn1.c:constant_time_lt_8 Unexecuted instantiation: p_methods.c:constant_time_lt_8 Unexecuted instantiation: p_pqdsa_asn1.c:constant_time_lt_8 Unexecuted instantiation: p_x25519_asn1.c:constant_time_lt_8 Unexecuted instantiation: bcm.c:constant_time_lt_8 Unexecuted instantiation: kyber1024r3_ref.c:constant_time_lt_8 Unexecuted instantiation: kyber512r3_ref.c:constant_time_lt_8 Unexecuted instantiation: kyber768r3_ref.c:constant_time_lt_8 Unexecuted instantiation: mem.c:constant_time_lt_8 Unexecuted instantiation: obj.c:constant_time_lt_8 Unexecuted instantiation: obj_xref.c:constant_time_lt_8 Unexecuted instantiation: poly1305_vec.c:constant_time_lt_8 Unexecuted instantiation: forkunsafe.c:constant_time_lt_8 Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:constant_time_lt_8 Unexecuted instantiation: stack.c:constant_time_lt_8 Unexecuted instantiation: thread_pthread.c:constant_time_lt_8 Unexecuted instantiation: a_object.c:constant_time_lt_8 Unexecuted instantiation: posix_time.c:constant_time_lt_8 Unexecuted instantiation: bio.c:constant_time_lt_8 Unexecuted instantiation: file.c:constant_time_lt_8 Unexecuted instantiation: asn1_compat.c:constant_time_lt_8 Unexecuted instantiation: chacha.c:constant_time_lt_8 Unexecuted instantiation: ripemd.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: engine.c:constant_time_lt_8 Unexecuted instantiation: p_dh_asn1.c:constant_time_lt_8 Unexecuted instantiation: p_dsa.c:constant_time_lt_8 Unexecuted instantiation: p_ed25519_asn1.c:constant_time_lt_8 Unexecuted instantiation: p_hmac_asn1.c:constant_time_lt_8 Unexecuted instantiation: p_kem_asn1.c:constant_time_lt_8 Unexecuted instantiation: print.c:constant_time_lt_8 Unexecuted instantiation: ex_data.c:constant_time_lt_8 Unexecuted instantiation: lhash.c:constant_time_lt_8 Unexecuted instantiation: blake2.c:constant_time_lt_8 Unexecuted instantiation: params.c:constant_time_lt_8 |
389 | | |
390 | | // constant_time_ge_w returns 0xff..f if a >= b and 0 otherwise. |
391 | | static inline crypto_word_t constant_time_ge_w(crypto_word_t a, |
392 | 0 | crypto_word_t b) { |
393 | 0 | return ~constant_time_lt_w(a, b); |
394 | 0 | } Unexecuted instantiation: convert.c:constant_time_ge_w Unexecuted instantiation: cbb.c:constant_time_ge_w Unexecuted instantiation: cbs.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: crypto.c:constant_time_ge_w Unexecuted instantiation: cfb.c:constant_time_ge_w Unexecuted instantiation: ec_asn1.c:constant_time_ge_w Unexecuted instantiation: ecdsa_asn1.c:constant_time_ge_w Unexecuted instantiation: err.c:constant_time_ge_w Unexecuted instantiation: evp_asn1.c:constant_time_ge_w Unexecuted instantiation: p_methods.c:constant_time_ge_w Unexecuted instantiation: p_pqdsa_asn1.c:constant_time_ge_w Unexecuted instantiation: p_x25519_asn1.c:constant_time_ge_w Unexecuted instantiation: bcm.c:constant_time_ge_w Unexecuted instantiation: kyber1024r3_ref.c:constant_time_ge_w Unexecuted instantiation: kyber512r3_ref.c:constant_time_ge_w Unexecuted instantiation: kyber768r3_ref.c:constant_time_ge_w Unexecuted instantiation: mem.c:constant_time_ge_w Unexecuted instantiation: obj.c:constant_time_ge_w Unexecuted instantiation: obj_xref.c:constant_time_ge_w Unexecuted instantiation: poly1305_vec.c:constant_time_ge_w Unexecuted instantiation: forkunsafe.c:constant_time_ge_w Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:constant_time_ge_w Unexecuted instantiation: stack.c:constant_time_ge_w Unexecuted instantiation: thread_pthread.c:constant_time_ge_w Unexecuted instantiation: a_object.c:constant_time_ge_w Unexecuted instantiation: posix_time.c:constant_time_ge_w Unexecuted instantiation: bio.c:constant_time_ge_w Unexecuted instantiation: file.c:constant_time_ge_w Unexecuted instantiation: asn1_compat.c:constant_time_ge_w Unexecuted instantiation: chacha.c:constant_time_ge_w Unexecuted instantiation: ripemd.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: engine.c:constant_time_ge_w Unexecuted instantiation: p_dh_asn1.c:constant_time_ge_w Unexecuted instantiation: p_dsa.c:constant_time_ge_w Unexecuted instantiation: p_ed25519_asn1.c:constant_time_ge_w Unexecuted instantiation: p_hmac_asn1.c:constant_time_ge_w Unexecuted instantiation: p_kem_asn1.c:constant_time_ge_w Unexecuted instantiation: print.c:constant_time_ge_w Unexecuted instantiation: ex_data.c:constant_time_ge_w Unexecuted instantiation: lhash.c:constant_time_ge_w Unexecuted instantiation: blake2.c:constant_time_ge_w Unexecuted instantiation: params.c:constant_time_ge_w |
395 | | |
396 | | // constant_time_ge_8 acts like |constant_time_ge_w| but returns an 8-bit |
397 | | // mask. |
398 | 0 | static inline uint8_t constant_time_ge_8(crypto_word_t a, crypto_word_t b) { |
399 | 0 | return (uint8_t)(constant_time_ge_w(a, b)); |
400 | 0 | } Unexecuted instantiation: convert.c:constant_time_ge_8 Unexecuted instantiation: cbb.c:constant_time_ge_8 Unexecuted instantiation: cbs.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: crypto.c:constant_time_ge_8 Unexecuted instantiation: cfb.c:constant_time_ge_8 Unexecuted instantiation: ec_asn1.c:constant_time_ge_8 Unexecuted instantiation: ecdsa_asn1.c:constant_time_ge_8 Unexecuted instantiation: err.c:constant_time_ge_8 Unexecuted instantiation: evp_asn1.c:constant_time_ge_8 Unexecuted instantiation: p_methods.c:constant_time_ge_8 Unexecuted instantiation: p_pqdsa_asn1.c:constant_time_ge_8 Unexecuted instantiation: p_x25519_asn1.c:constant_time_ge_8 Unexecuted instantiation: bcm.c:constant_time_ge_8 Unexecuted instantiation: kyber1024r3_ref.c:constant_time_ge_8 Unexecuted instantiation: kyber512r3_ref.c:constant_time_ge_8 Unexecuted instantiation: kyber768r3_ref.c:constant_time_ge_8 Unexecuted instantiation: mem.c:constant_time_ge_8 Unexecuted instantiation: obj.c:constant_time_ge_8 Unexecuted instantiation: obj_xref.c:constant_time_ge_8 Unexecuted instantiation: poly1305_vec.c:constant_time_ge_8 Unexecuted instantiation: forkunsafe.c:constant_time_ge_8 Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:constant_time_ge_8 Unexecuted instantiation: stack.c:constant_time_ge_8 Unexecuted instantiation: thread_pthread.c:constant_time_ge_8 Unexecuted instantiation: a_object.c:constant_time_ge_8 Unexecuted instantiation: posix_time.c:constant_time_ge_8 Unexecuted instantiation: bio.c:constant_time_ge_8 Unexecuted instantiation: file.c:constant_time_ge_8 Unexecuted instantiation: asn1_compat.c:constant_time_ge_8 Unexecuted instantiation: chacha.c:constant_time_ge_8 Unexecuted instantiation: ripemd.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: engine.c:constant_time_ge_8 Unexecuted instantiation: p_dh_asn1.c:constant_time_ge_8 Unexecuted instantiation: p_dsa.c:constant_time_ge_8 Unexecuted instantiation: p_ed25519_asn1.c:constant_time_ge_8 Unexecuted instantiation: p_hmac_asn1.c:constant_time_ge_8 Unexecuted instantiation: p_kem_asn1.c:constant_time_ge_8 Unexecuted instantiation: print.c:constant_time_ge_8 Unexecuted instantiation: ex_data.c:constant_time_ge_8 Unexecuted instantiation: lhash.c:constant_time_ge_8 Unexecuted instantiation: blake2.c:constant_time_ge_8 Unexecuted instantiation: params.c:constant_time_ge_8 |
401 | | |
402 | | // constant_time_is_zero returns 0xff..f if a == 0 and 0 otherwise. |
403 | 0 | static inline crypto_word_t constant_time_is_zero_w(crypto_word_t a) { |
404 | | // Here is an SMT-LIB verification of this formula: |
405 | | // |
406 | | // (define-fun is_zero ((a (_ BitVec 32))) (_ BitVec 32) |
407 | | // (bvand (bvnot a) (bvsub a #x00000001)) |
408 | | // ) |
409 | | // |
410 | | // (declare-fun a () (_ BitVec 32)) |
411 | | // |
412 | | // (assert (not (= (= #x00000001 (bvlshr (is_zero a) #x0000001f)) (= a #x00000000)))) |
413 | | // (check-sat) |
414 | | // (get-model) |
415 | 0 | return constant_time_msb_w(~a & (a - 1)); |
416 | 0 | } Unexecuted instantiation: convert.c:constant_time_is_zero_w Unexecuted instantiation: cbb.c:constant_time_is_zero_w Unexecuted instantiation: cbs.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: crypto.c:constant_time_is_zero_w Unexecuted instantiation: cfb.c:constant_time_is_zero_w Unexecuted instantiation: ec_asn1.c:constant_time_is_zero_w Unexecuted instantiation: ecdsa_asn1.c:constant_time_is_zero_w Unexecuted instantiation: err.c:constant_time_is_zero_w Unexecuted instantiation: evp_asn1.c:constant_time_is_zero_w Unexecuted instantiation: p_methods.c:constant_time_is_zero_w Unexecuted instantiation: p_pqdsa_asn1.c:constant_time_is_zero_w Unexecuted instantiation: p_x25519_asn1.c:constant_time_is_zero_w Unexecuted instantiation: bcm.c:constant_time_is_zero_w Unexecuted instantiation: kyber1024r3_ref.c:constant_time_is_zero_w Unexecuted instantiation: kyber512r3_ref.c:constant_time_is_zero_w Unexecuted instantiation: kyber768r3_ref.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: obj_xref.c:constant_time_is_zero_w Unexecuted instantiation: poly1305_vec.c:constant_time_is_zero_w Unexecuted instantiation: forkunsafe.c:constant_time_is_zero_w Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.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: a_object.c:constant_time_is_zero_w Unexecuted instantiation: posix_time.c:constant_time_is_zero_w Unexecuted instantiation: bio.c:constant_time_is_zero_w Unexecuted instantiation: file.c:constant_time_is_zero_w Unexecuted instantiation: asn1_compat.c:constant_time_is_zero_w Unexecuted instantiation: chacha.c:constant_time_is_zero_w Unexecuted instantiation: ripemd.c:constant_time_is_zero_w 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: engine.c:constant_time_is_zero_w Unexecuted instantiation: p_dh_asn1.c:constant_time_is_zero_w Unexecuted instantiation: p_dsa.c:constant_time_is_zero_w Unexecuted instantiation: p_ed25519_asn1.c:constant_time_is_zero_w Unexecuted instantiation: p_hmac_asn1.c:constant_time_is_zero_w Unexecuted instantiation: p_kem_asn1.c:constant_time_is_zero_w Unexecuted instantiation: print.c:constant_time_is_zero_w Unexecuted instantiation: ex_data.c:constant_time_is_zero_w Unexecuted instantiation: lhash.c:constant_time_is_zero_w Unexecuted instantiation: blake2.c:constant_time_is_zero_w Unexecuted instantiation: params.c:constant_time_is_zero_w |
417 | | |
418 | | // constant_time_is_zero_8 acts like |constant_time_is_zero_w| but returns an |
419 | | // 8-bit mask. |
420 | 0 | static inline uint8_t constant_time_is_zero_8(crypto_word_t a) { |
421 | 0 | return (uint8_t)(constant_time_is_zero_w(a)); |
422 | 0 | } Unexecuted instantiation: convert.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: e_aesgcmsiv.c:constant_time_is_zero_8 Unexecuted instantiation: e_chacha20poly1305.c:constant_time_is_zero_8 Unexecuted instantiation: crypto.c:constant_time_is_zero_8 Unexecuted instantiation: cfb.c:constant_time_is_zero_8 Unexecuted instantiation: ec_asn1.c:constant_time_is_zero_8 Unexecuted instantiation: ecdsa_asn1.c:constant_time_is_zero_8 Unexecuted instantiation: err.c:constant_time_is_zero_8 Unexecuted instantiation: evp_asn1.c:constant_time_is_zero_8 Unexecuted instantiation: p_methods.c:constant_time_is_zero_8 Unexecuted instantiation: p_pqdsa_asn1.c:constant_time_is_zero_8 Unexecuted instantiation: p_x25519_asn1.c:constant_time_is_zero_8 Unexecuted instantiation: bcm.c:constant_time_is_zero_8 Unexecuted instantiation: kyber1024r3_ref.c:constant_time_is_zero_8 Unexecuted instantiation: kyber512r3_ref.c:constant_time_is_zero_8 Unexecuted instantiation: kyber768r3_ref.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: obj_xref.c:constant_time_is_zero_8 Unexecuted instantiation: poly1305_vec.c:constant_time_is_zero_8 Unexecuted instantiation: forkunsafe.c:constant_time_is_zero_8 Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.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: a_object.c:constant_time_is_zero_8 Unexecuted instantiation: posix_time.c:constant_time_is_zero_8 Unexecuted instantiation: bio.c:constant_time_is_zero_8 Unexecuted instantiation: file.c:constant_time_is_zero_8 Unexecuted instantiation: asn1_compat.c:constant_time_is_zero_8 Unexecuted instantiation: chacha.c:constant_time_is_zero_8 Unexecuted instantiation: ripemd.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: engine.c:constant_time_is_zero_8 Unexecuted instantiation: p_dh_asn1.c:constant_time_is_zero_8 Unexecuted instantiation: p_dsa.c:constant_time_is_zero_8 Unexecuted instantiation: p_ed25519_asn1.c:constant_time_is_zero_8 Unexecuted instantiation: p_hmac_asn1.c:constant_time_is_zero_8 Unexecuted instantiation: p_kem_asn1.c:constant_time_is_zero_8 Unexecuted instantiation: print.c:constant_time_is_zero_8 Unexecuted instantiation: ex_data.c:constant_time_is_zero_8 Unexecuted instantiation: lhash.c:constant_time_is_zero_8 Unexecuted instantiation: blake2.c:constant_time_is_zero_8 Unexecuted instantiation: params.c:constant_time_is_zero_8 |
423 | | |
424 | | // constant_time_eq_w returns 0xff..f if a == b and 0 otherwise. |
425 | | static inline crypto_word_t constant_time_eq_w(crypto_word_t a, |
426 | 0 | crypto_word_t b) { |
427 | 0 | return constant_time_is_zero_w(a ^ b); |
428 | 0 | } Unexecuted instantiation: convert.c:constant_time_eq_w Unexecuted instantiation: cbb.c:constant_time_eq_w Unexecuted instantiation: cbs.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: crypto.c:constant_time_eq_w Unexecuted instantiation: cfb.c:constant_time_eq_w Unexecuted instantiation: ec_asn1.c:constant_time_eq_w Unexecuted instantiation: ecdsa_asn1.c:constant_time_eq_w Unexecuted instantiation: err.c:constant_time_eq_w Unexecuted instantiation: evp_asn1.c:constant_time_eq_w Unexecuted instantiation: p_methods.c:constant_time_eq_w Unexecuted instantiation: p_pqdsa_asn1.c:constant_time_eq_w Unexecuted instantiation: p_x25519_asn1.c:constant_time_eq_w Unexecuted instantiation: bcm.c:constant_time_eq_w Unexecuted instantiation: kyber1024r3_ref.c:constant_time_eq_w Unexecuted instantiation: kyber512r3_ref.c:constant_time_eq_w Unexecuted instantiation: kyber768r3_ref.c:constant_time_eq_w Unexecuted instantiation: mem.c:constant_time_eq_w Unexecuted instantiation: obj.c:constant_time_eq_w Unexecuted instantiation: obj_xref.c:constant_time_eq_w Unexecuted instantiation: poly1305_vec.c:constant_time_eq_w Unexecuted instantiation: forkunsafe.c:constant_time_eq_w Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:constant_time_eq_w Unexecuted instantiation: stack.c:constant_time_eq_w Unexecuted instantiation: thread_pthread.c:constant_time_eq_w Unexecuted instantiation: a_object.c:constant_time_eq_w Unexecuted instantiation: posix_time.c:constant_time_eq_w Unexecuted instantiation: bio.c:constant_time_eq_w Unexecuted instantiation: file.c:constant_time_eq_w Unexecuted instantiation: asn1_compat.c:constant_time_eq_w Unexecuted instantiation: chacha.c:constant_time_eq_w Unexecuted instantiation: ripemd.c:constant_time_eq_w 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: engine.c:constant_time_eq_w Unexecuted instantiation: p_dh_asn1.c:constant_time_eq_w Unexecuted instantiation: p_dsa.c:constant_time_eq_w Unexecuted instantiation: p_ed25519_asn1.c:constant_time_eq_w Unexecuted instantiation: p_hmac_asn1.c:constant_time_eq_w Unexecuted instantiation: p_kem_asn1.c:constant_time_eq_w Unexecuted instantiation: print.c:constant_time_eq_w Unexecuted instantiation: ex_data.c:constant_time_eq_w Unexecuted instantiation: lhash.c:constant_time_eq_w Unexecuted instantiation: blake2.c:constant_time_eq_w Unexecuted instantiation: params.c:constant_time_eq_w |
429 | | |
430 | | // constant_time_eq_8 acts like |constant_time_eq_w| but returns an 8-bit |
431 | | // mask. |
432 | 0 | static inline uint8_t constant_time_eq_8(crypto_word_t a, crypto_word_t b) { |
433 | 0 | return (uint8_t)(constant_time_eq_w(a, b)); |
434 | 0 | } Unexecuted instantiation: convert.c:constant_time_eq_8 Unexecuted instantiation: cbb.c:constant_time_eq_8 Unexecuted instantiation: cbs.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: crypto.c:constant_time_eq_8 Unexecuted instantiation: cfb.c:constant_time_eq_8 Unexecuted instantiation: ec_asn1.c:constant_time_eq_8 Unexecuted instantiation: ecdsa_asn1.c:constant_time_eq_8 Unexecuted instantiation: err.c:constant_time_eq_8 Unexecuted instantiation: evp_asn1.c:constant_time_eq_8 Unexecuted instantiation: p_methods.c:constant_time_eq_8 Unexecuted instantiation: p_pqdsa_asn1.c:constant_time_eq_8 Unexecuted instantiation: p_x25519_asn1.c:constant_time_eq_8 Unexecuted instantiation: bcm.c:constant_time_eq_8 Unexecuted instantiation: kyber1024r3_ref.c:constant_time_eq_8 Unexecuted instantiation: kyber512r3_ref.c:constant_time_eq_8 Unexecuted instantiation: kyber768r3_ref.c:constant_time_eq_8 Unexecuted instantiation: mem.c:constant_time_eq_8 Unexecuted instantiation: obj.c:constant_time_eq_8 Unexecuted instantiation: obj_xref.c:constant_time_eq_8 Unexecuted instantiation: poly1305_vec.c:constant_time_eq_8 Unexecuted instantiation: forkunsafe.c:constant_time_eq_8 Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:constant_time_eq_8 Unexecuted instantiation: stack.c:constant_time_eq_8 Unexecuted instantiation: thread_pthread.c:constant_time_eq_8 Unexecuted instantiation: a_object.c:constant_time_eq_8 Unexecuted instantiation: posix_time.c:constant_time_eq_8 Unexecuted instantiation: bio.c:constant_time_eq_8 Unexecuted instantiation: file.c:constant_time_eq_8 Unexecuted instantiation: asn1_compat.c:constant_time_eq_8 Unexecuted instantiation: chacha.c:constant_time_eq_8 Unexecuted instantiation: ripemd.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: engine.c:constant_time_eq_8 Unexecuted instantiation: p_dh_asn1.c:constant_time_eq_8 Unexecuted instantiation: p_dsa.c:constant_time_eq_8 Unexecuted instantiation: p_ed25519_asn1.c:constant_time_eq_8 Unexecuted instantiation: p_hmac_asn1.c:constant_time_eq_8 Unexecuted instantiation: p_kem_asn1.c:constant_time_eq_8 Unexecuted instantiation: print.c:constant_time_eq_8 Unexecuted instantiation: ex_data.c:constant_time_eq_8 Unexecuted instantiation: lhash.c:constant_time_eq_8 Unexecuted instantiation: blake2.c:constant_time_eq_8 Unexecuted instantiation: params.c:constant_time_eq_8 |
435 | | |
436 | | // constant_time_eq_int acts like |constant_time_eq_w| but works on int |
437 | | // values. |
438 | 0 | static inline crypto_word_t constant_time_eq_int(int a, int b) { |
439 | 0 | return constant_time_eq_w((crypto_word_t)(a), (crypto_word_t)(b)); |
440 | 0 | } Unexecuted instantiation: convert.c:constant_time_eq_int Unexecuted instantiation: cbb.c:constant_time_eq_int Unexecuted instantiation: cbs.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: crypto.c:constant_time_eq_int Unexecuted instantiation: cfb.c:constant_time_eq_int Unexecuted instantiation: ec_asn1.c:constant_time_eq_int Unexecuted instantiation: ecdsa_asn1.c:constant_time_eq_int Unexecuted instantiation: err.c:constant_time_eq_int Unexecuted instantiation: evp_asn1.c:constant_time_eq_int Unexecuted instantiation: p_methods.c:constant_time_eq_int Unexecuted instantiation: p_pqdsa_asn1.c:constant_time_eq_int Unexecuted instantiation: p_x25519_asn1.c:constant_time_eq_int Unexecuted instantiation: bcm.c:constant_time_eq_int Unexecuted instantiation: kyber1024r3_ref.c:constant_time_eq_int Unexecuted instantiation: kyber512r3_ref.c:constant_time_eq_int Unexecuted instantiation: kyber768r3_ref.c:constant_time_eq_int Unexecuted instantiation: mem.c:constant_time_eq_int Unexecuted instantiation: obj.c:constant_time_eq_int Unexecuted instantiation: obj_xref.c:constant_time_eq_int Unexecuted instantiation: poly1305_vec.c:constant_time_eq_int Unexecuted instantiation: forkunsafe.c:constant_time_eq_int Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:constant_time_eq_int Unexecuted instantiation: stack.c:constant_time_eq_int Unexecuted instantiation: thread_pthread.c:constant_time_eq_int Unexecuted instantiation: a_object.c:constant_time_eq_int Unexecuted instantiation: posix_time.c:constant_time_eq_int Unexecuted instantiation: bio.c:constant_time_eq_int Unexecuted instantiation: file.c:constant_time_eq_int Unexecuted instantiation: asn1_compat.c:constant_time_eq_int Unexecuted instantiation: chacha.c:constant_time_eq_int Unexecuted instantiation: ripemd.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: engine.c:constant_time_eq_int Unexecuted instantiation: p_dh_asn1.c:constant_time_eq_int Unexecuted instantiation: p_dsa.c:constant_time_eq_int Unexecuted instantiation: p_ed25519_asn1.c:constant_time_eq_int Unexecuted instantiation: p_hmac_asn1.c:constant_time_eq_int Unexecuted instantiation: p_kem_asn1.c:constant_time_eq_int Unexecuted instantiation: print.c:constant_time_eq_int Unexecuted instantiation: ex_data.c:constant_time_eq_int Unexecuted instantiation: lhash.c:constant_time_eq_int Unexecuted instantiation: blake2.c:constant_time_eq_int Unexecuted instantiation: params.c:constant_time_eq_int |
441 | | |
442 | | // constant_time_eq_int_8 acts like |constant_time_eq_int| but returns an 8-bit |
443 | | // mask. |
444 | 0 | static inline uint8_t constant_time_eq_int_8(int a, int b) { |
445 | 0 | return constant_time_eq_8((crypto_word_t)(a), (crypto_word_t)(b)); |
446 | 0 | } Unexecuted instantiation: convert.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: e_aesgcmsiv.c:constant_time_eq_int_8 Unexecuted instantiation: e_chacha20poly1305.c:constant_time_eq_int_8 Unexecuted instantiation: crypto.c:constant_time_eq_int_8 Unexecuted instantiation: cfb.c:constant_time_eq_int_8 Unexecuted instantiation: ec_asn1.c:constant_time_eq_int_8 Unexecuted instantiation: ecdsa_asn1.c:constant_time_eq_int_8 Unexecuted instantiation: err.c:constant_time_eq_int_8 Unexecuted instantiation: evp_asn1.c:constant_time_eq_int_8 Unexecuted instantiation: p_methods.c:constant_time_eq_int_8 Unexecuted instantiation: p_pqdsa_asn1.c:constant_time_eq_int_8 Unexecuted instantiation: p_x25519_asn1.c:constant_time_eq_int_8 Unexecuted instantiation: bcm.c:constant_time_eq_int_8 Unexecuted instantiation: kyber1024r3_ref.c:constant_time_eq_int_8 Unexecuted instantiation: kyber512r3_ref.c:constant_time_eq_int_8 Unexecuted instantiation: kyber768r3_ref.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: obj_xref.c:constant_time_eq_int_8 Unexecuted instantiation: poly1305_vec.c:constant_time_eq_int_8 Unexecuted instantiation: forkunsafe.c:constant_time_eq_int_8 Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.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: a_object.c:constant_time_eq_int_8 Unexecuted instantiation: posix_time.c:constant_time_eq_int_8 Unexecuted instantiation: bio.c:constant_time_eq_int_8 Unexecuted instantiation: file.c:constant_time_eq_int_8 Unexecuted instantiation: asn1_compat.c:constant_time_eq_int_8 Unexecuted instantiation: chacha.c:constant_time_eq_int_8 Unexecuted instantiation: ripemd.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: engine.c:constant_time_eq_int_8 Unexecuted instantiation: p_dh_asn1.c:constant_time_eq_int_8 Unexecuted instantiation: p_dsa.c:constant_time_eq_int_8 Unexecuted instantiation: p_ed25519_asn1.c:constant_time_eq_int_8 Unexecuted instantiation: p_hmac_asn1.c:constant_time_eq_int_8 Unexecuted instantiation: p_kem_asn1.c:constant_time_eq_int_8 Unexecuted instantiation: print.c:constant_time_eq_int_8 Unexecuted instantiation: ex_data.c:constant_time_eq_int_8 Unexecuted instantiation: lhash.c:constant_time_eq_int_8 Unexecuted instantiation: blake2.c:constant_time_eq_int_8 Unexecuted instantiation: params.c:constant_time_eq_int_8 |
447 | | |
448 | | // constant_time_select_w returns (mask & a) | (~mask & b). When |mask| is all |
449 | | // 1s or all 0s (as returned by the methods above), the select methods return |
450 | | // either |a| (if |mask| is nonzero) or |b| (if |mask| is zero). |
451 | | static inline crypto_word_t constant_time_select_w(crypto_word_t mask, |
452 | | crypto_word_t a, |
453 | 0 | crypto_word_t b) { |
454 | | // Clang recognizes this pattern as a select. While it usually transforms it |
455 | | // to a cmov, it sometimes further transforms it into a branch, which we do |
456 | | // not want. |
457 | | // |
458 | | // Adding barriers to both |mask| and |~mask| breaks the relationship between |
459 | | // the two, which makes the compiler stick with bitmasks. |
460 | 0 | return (value_barrier_w(mask) & a) | (value_barrier_w(~mask) & b); |
461 | 0 | } Unexecuted instantiation: convert.c:constant_time_select_w Unexecuted instantiation: cbb.c:constant_time_select_w Unexecuted instantiation: cbs.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: crypto.c:constant_time_select_w Unexecuted instantiation: cfb.c:constant_time_select_w Unexecuted instantiation: ec_asn1.c:constant_time_select_w Unexecuted instantiation: ecdsa_asn1.c:constant_time_select_w Unexecuted instantiation: err.c:constant_time_select_w Unexecuted instantiation: evp_asn1.c:constant_time_select_w Unexecuted instantiation: p_methods.c:constant_time_select_w Unexecuted instantiation: p_pqdsa_asn1.c:constant_time_select_w Unexecuted instantiation: p_x25519_asn1.c:constant_time_select_w Unexecuted instantiation: bcm.c:constant_time_select_w Unexecuted instantiation: kyber1024r3_ref.c:constant_time_select_w Unexecuted instantiation: kyber512r3_ref.c:constant_time_select_w Unexecuted instantiation: kyber768r3_ref.c:constant_time_select_w Unexecuted instantiation: mem.c:constant_time_select_w Unexecuted instantiation: obj.c:constant_time_select_w Unexecuted instantiation: obj_xref.c:constant_time_select_w Unexecuted instantiation: poly1305_vec.c:constant_time_select_w Unexecuted instantiation: forkunsafe.c:constant_time_select_w Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:constant_time_select_w Unexecuted instantiation: stack.c:constant_time_select_w Unexecuted instantiation: thread_pthread.c:constant_time_select_w Unexecuted instantiation: a_object.c:constant_time_select_w Unexecuted instantiation: posix_time.c:constant_time_select_w Unexecuted instantiation: bio.c:constant_time_select_w Unexecuted instantiation: file.c:constant_time_select_w Unexecuted instantiation: asn1_compat.c:constant_time_select_w Unexecuted instantiation: chacha.c:constant_time_select_w Unexecuted instantiation: ripemd.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: engine.c:constant_time_select_w Unexecuted instantiation: p_dh_asn1.c:constant_time_select_w Unexecuted instantiation: p_dsa.c:constant_time_select_w Unexecuted instantiation: p_ed25519_asn1.c:constant_time_select_w Unexecuted instantiation: p_hmac_asn1.c:constant_time_select_w Unexecuted instantiation: p_kem_asn1.c:constant_time_select_w Unexecuted instantiation: print.c:constant_time_select_w Unexecuted instantiation: ex_data.c:constant_time_select_w Unexecuted instantiation: lhash.c:constant_time_select_w Unexecuted instantiation: blake2.c:constant_time_select_w Unexecuted instantiation: params.c:constant_time_select_w |
462 | | |
463 | | // constant_time_select_8 acts like |constant_time_select| but operates on |
464 | | // 8-bit values. |
465 | | static inline uint8_t constant_time_select_8(uint8_t mask, uint8_t a, |
466 | 0 | uint8_t b) { |
467 | 0 | return (uint8_t)(constant_time_select_w(mask, a, b)); |
468 | 0 | } Unexecuted instantiation: convert.c:constant_time_select_8 Unexecuted instantiation: cbb.c:constant_time_select_8 Unexecuted instantiation: cbs.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: crypto.c:constant_time_select_8 Unexecuted instantiation: cfb.c:constant_time_select_8 Unexecuted instantiation: ec_asn1.c:constant_time_select_8 Unexecuted instantiation: ecdsa_asn1.c:constant_time_select_8 Unexecuted instantiation: err.c:constant_time_select_8 Unexecuted instantiation: evp_asn1.c:constant_time_select_8 Unexecuted instantiation: p_methods.c:constant_time_select_8 Unexecuted instantiation: p_pqdsa_asn1.c:constant_time_select_8 Unexecuted instantiation: p_x25519_asn1.c:constant_time_select_8 Unexecuted instantiation: bcm.c:constant_time_select_8 Unexecuted instantiation: kyber1024r3_ref.c:constant_time_select_8 Unexecuted instantiation: kyber512r3_ref.c:constant_time_select_8 Unexecuted instantiation: kyber768r3_ref.c:constant_time_select_8 Unexecuted instantiation: mem.c:constant_time_select_8 Unexecuted instantiation: obj.c:constant_time_select_8 Unexecuted instantiation: obj_xref.c:constant_time_select_8 Unexecuted instantiation: poly1305_vec.c:constant_time_select_8 Unexecuted instantiation: forkunsafe.c:constant_time_select_8 Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:constant_time_select_8 Unexecuted instantiation: stack.c:constant_time_select_8 Unexecuted instantiation: thread_pthread.c:constant_time_select_8 Unexecuted instantiation: a_object.c:constant_time_select_8 Unexecuted instantiation: posix_time.c:constant_time_select_8 Unexecuted instantiation: bio.c:constant_time_select_8 Unexecuted instantiation: file.c:constant_time_select_8 Unexecuted instantiation: asn1_compat.c:constant_time_select_8 Unexecuted instantiation: chacha.c:constant_time_select_8 Unexecuted instantiation: ripemd.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: engine.c:constant_time_select_8 Unexecuted instantiation: p_dh_asn1.c:constant_time_select_8 Unexecuted instantiation: p_dsa.c:constant_time_select_8 Unexecuted instantiation: p_ed25519_asn1.c:constant_time_select_8 Unexecuted instantiation: p_hmac_asn1.c:constant_time_select_8 Unexecuted instantiation: p_kem_asn1.c:constant_time_select_8 Unexecuted instantiation: print.c:constant_time_select_8 Unexecuted instantiation: ex_data.c:constant_time_select_8 Unexecuted instantiation: lhash.c:constant_time_select_8 Unexecuted instantiation: blake2.c:constant_time_select_8 Unexecuted instantiation: params.c:constant_time_select_8 |
469 | | |
470 | | // constant_time_select_int acts like |constant_time_select| but operates on |
471 | | // ints. |
472 | 0 | static inline int constant_time_select_int(crypto_word_t mask, int a, int b) { |
473 | 0 | return (int)(constant_time_select_w(mask, (crypto_word_t)(a), |
474 | 0 | (crypto_word_t)(b))); |
475 | 0 | } Unexecuted instantiation: convert.c:constant_time_select_int Unexecuted instantiation: cbb.c:constant_time_select_int Unexecuted instantiation: cbs.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: crypto.c:constant_time_select_int Unexecuted instantiation: cfb.c:constant_time_select_int Unexecuted instantiation: ec_asn1.c:constant_time_select_int Unexecuted instantiation: ecdsa_asn1.c:constant_time_select_int Unexecuted instantiation: err.c:constant_time_select_int Unexecuted instantiation: evp_asn1.c:constant_time_select_int Unexecuted instantiation: p_methods.c:constant_time_select_int Unexecuted instantiation: p_pqdsa_asn1.c:constant_time_select_int Unexecuted instantiation: p_x25519_asn1.c:constant_time_select_int Unexecuted instantiation: bcm.c:constant_time_select_int Unexecuted instantiation: kyber1024r3_ref.c:constant_time_select_int Unexecuted instantiation: kyber512r3_ref.c:constant_time_select_int Unexecuted instantiation: kyber768r3_ref.c:constant_time_select_int Unexecuted instantiation: mem.c:constant_time_select_int Unexecuted instantiation: obj.c:constant_time_select_int Unexecuted instantiation: obj_xref.c:constant_time_select_int Unexecuted instantiation: poly1305_vec.c:constant_time_select_int Unexecuted instantiation: forkunsafe.c:constant_time_select_int Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:constant_time_select_int Unexecuted instantiation: stack.c:constant_time_select_int Unexecuted instantiation: thread_pthread.c:constant_time_select_int Unexecuted instantiation: a_object.c:constant_time_select_int Unexecuted instantiation: posix_time.c:constant_time_select_int Unexecuted instantiation: bio.c:constant_time_select_int Unexecuted instantiation: file.c:constant_time_select_int Unexecuted instantiation: asn1_compat.c:constant_time_select_int Unexecuted instantiation: chacha.c:constant_time_select_int Unexecuted instantiation: ripemd.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: engine.c:constant_time_select_int Unexecuted instantiation: p_dh_asn1.c:constant_time_select_int Unexecuted instantiation: p_dsa.c:constant_time_select_int Unexecuted instantiation: p_ed25519_asn1.c:constant_time_select_int Unexecuted instantiation: p_hmac_asn1.c:constant_time_select_int Unexecuted instantiation: p_kem_asn1.c:constant_time_select_int Unexecuted instantiation: print.c:constant_time_select_int Unexecuted instantiation: ex_data.c:constant_time_select_int Unexecuted instantiation: lhash.c:constant_time_select_int Unexecuted instantiation: blake2.c:constant_time_select_int Unexecuted instantiation: params.c:constant_time_select_int |
476 | | |
477 | | // constant_time_select_array_w applies |constant_time_select_w| on each |
478 | | // corresponding pair of elements of a and b. |
479 | | static inline void constant_time_select_array_w( |
480 | | crypto_word_t *c, crypto_word_t *a, crypto_word_t *b, |
481 | 0 | crypto_word_t mask, size_t len) { |
482 | 0 | for (size_t i = 0; i < len; i++) { |
483 | 0 | c[i] = constant_time_select_w(mask, a[i], b[i]); |
484 | 0 | } |
485 | 0 | } Unexecuted instantiation: convert.c:constant_time_select_array_w Unexecuted instantiation: cbb.c:constant_time_select_array_w Unexecuted instantiation: cbs.c:constant_time_select_array_w Unexecuted instantiation: e_aesgcmsiv.c:constant_time_select_array_w Unexecuted instantiation: e_chacha20poly1305.c:constant_time_select_array_w Unexecuted instantiation: crypto.c:constant_time_select_array_w Unexecuted instantiation: cfb.c:constant_time_select_array_w Unexecuted instantiation: ec_asn1.c:constant_time_select_array_w Unexecuted instantiation: ecdsa_asn1.c:constant_time_select_array_w Unexecuted instantiation: err.c:constant_time_select_array_w Unexecuted instantiation: evp_asn1.c:constant_time_select_array_w Unexecuted instantiation: p_methods.c:constant_time_select_array_w Unexecuted instantiation: p_pqdsa_asn1.c:constant_time_select_array_w Unexecuted instantiation: p_x25519_asn1.c:constant_time_select_array_w Unexecuted instantiation: bcm.c:constant_time_select_array_w Unexecuted instantiation: kyber1024r3_ref.c:constant_time_select_array_w Unexecuted instantiation: kyber512r3_ref.c:constant_time_select_array_w Unexecuted instantiation: kyber768r3_ref.c:constant_time_select_array_w Unexecuted instantiation: mem.c:constant_time_select_array_w Unexecuted instantiation: obj.c:constant_time_select_array_w Unexecuted instantiation: obj_xref.c:constant_time_select_array_w Unexecuted instantiation: poly1305_vec.c:constant_time_select_array_w Unexecuted instantiation: forkunsafe.c:constant_time_select_array_w Unexecuted instantiation: refcount_c11.c:constant_time_select_array_w Unexecuted instantiation: rsa_asn1.c:constant_time_select_array_w Unexecuted instantiation: rsa_crypt.c:constant_time_select_array_w Unexecuted instantiation: rsassa_pss_asn1.c:constant_time_select_array_w Unexecuted instantiation: stack.c:constant_time_select_array_w Unexecuted instantiation: thread_pthread.c:constant_time_select_array_w Unexecuted instantiation: a_object.c:constant_time_select_array_w Unexecuted instantiation: posix_time.c:constant_time_select_array_w Unexecuted instantiation: bio.c:constant_time_select_array_w Unexecuted instantiation: file.c:constant_time_select_array_w Unexecuted instantiation: asn1_compat.c:constant_time_select_array_w Unexecuted instantiation: chacha.c:constant_time_select_array_w Unexecuted instantiation: ripemd.c:constant_time_select_array_w Unexecuted instantiation: digest_extra.c:constant_time_select_array_w Unexecuted instantiation: dsa.c:constant_time_select_array_w Unexecuted instantiation: dsa_asn1.c:constant_time_select_array_w Unexecuted instantiation: engine.c:constant_time_select_array_w Unexecuted instantiation: p_dh_asn1.c:constant_time_select_array_w Unexecuted instantiation: p_dsa.c:constant_time_select_array_w Unexecuted instantiation: p_ed25519_asn1.c:constant_time_select_array_w Unexecuted instantiation: p_hmac_asn1.c:constant_time_select_array_w Unexecuted instantiation: p_kem_asn1.c:constant_time_select_array_w Unexecuted instantiation: print.c:constant_time_select_array_w Unexecuted instantiation: ex_data.c:constant_time_select_array_w Unexecuted instantiation: lhash.c:constant_time_select_array_w Unexecuted instantiation: blake2.c:constant_time_select_array_w Unexecuted instantiation: params.c:constant_time_select_array_w |
486 | | |
487 | | static inline void constant_time_select_array_8( |
488 | 0 | uint8_t *c, uint8_t *a, uint8_t *b, uint8_t mask, size_t len) { |
489 | 0 | for (size_t i = 0; i < len; i++) { |
490 | 0 | c[i] = constant_time_select_8(mask, a[i], b[i]); |
491 | 0 | } |
492 | 0 | } Unexecuted instantiation: convert.c:constant_time_select_array_8 Unexecuted instantiation: cbb.c:constant_time_select_array_8 Unexecuted instantiation: cbs.c:constant_time_select_array_8 Unexecuted instantiation: e_aesgcmsiv.c:constant_time_select_array_8 Unexecuted instantiation: e_chacha20poly1305.c:constant_time_select_array_8 Unexecuted instantiation: crypto.c:constant_time_select_array_8 Unexecuted instantiation: cfb.c:constant_time_select_array_8 Unexecuted instantiation: ec_asn1.c:constant_time_select_array_8 Unexecuted instantiation: ecdsa_asn1.c:constant_time_select_array_8 Unexecuted instantiation: err.c:constant_time_select_array_8 Unexecuted instantiation: evp_asn1.c:constant_time_select_array_8 Unexecuted instantiation: p_methods.c:constant_time_select_array_8 Unexecuted instantiation: p_pqdsa_asn1.c:constant_time_select_array_8 Unexecuted instantiation: p_x25519_asn1.c:constant_time_select_array_8 Unexecuted instantiation: bcm.c:constant_time_select_array_8 Unexecuted instantiation: kyber1024r3_ref.c:constant_time_select_array_8 Unexecuted instantiation: kyber512r3_ref.c:constant_time_select_array_8 Unexecuted instantiation: kyber768r3_ref.c:constant_time_select_array_8 Unexecuted instantiation: mem.c:constant_time_select_array_8 Unexecuted instantiation: obj.c:constant_time_select_array_8 Unexecuted instantiation: obj_xref.c:constant_time_select_array_8 Unexecuted instantiation: poly1305_vec.c:constant_time_select_array_8 Unexecuted instantiation: forkunsafe.c:constant_time_select_array_8 Unexecuted instantiation: refcount_c11.c:constant_time_select_array_8 Unexecuted instantiation: rsa_asn1.c:constant_time_select_array_8 Unexecuted instantiation: rsa_crypt.c:constant_time_select_array_8 Unexecuted instantiation: rsassa_pss_asn1.c:constant_time_select_array_8 Unexecuted instantiation: stack.c:constant_time_select_array_8 Unexecuted instantiation: thread_pthread.c:constant_time_select_array_8 Unexecuted instantiation: a_object.c:constant_time_select_array_8 Unexecuted instantiation: posix_time.c:constant_time_select_array_8 Unexecuted instantiation: bio.c:constant_time_select_array_8 Unexecuted instantiation: file.c:constant_time_select_array_8 Unexecuted instantiation: asn1_compat.c:constant_time_select_array_8 Unexecuted instantiation: chacha.c:constant_time_select_array_8 Unexecuted instantiation: ripemd.c:constant_time_select_array_8 Unexecuted instantiation: digest_extra.c:constant_time_select_array_8 Unexecuted instantiation: dsa.c:constant_time_select_array_8 Unexecuted instantiation: dsa_asn1.c:constant_time_select_array_8 Unexecuted instantiation: engine.c:constant_time_select_array_8 Unexecuted instantiation: p_dh_asn1.c:constant_time_select_array_8 Unexecuted instantiation: p_dsa.c:constant_time_select_array_8 Unexecuted instantiation: p_ed25519_asn1.c:constant_time_select_array_8 Unexecuted instantiation: p_hmac_asn1.c:constant_time_select_array_8 Unexecuted instantiation: p_kem_asn1.c:constant_time_select_array_8 Unexecuted instantiation: print.c:constant_time_select_array_8 Unexecuted instantiation: ex_data.c:constant_time_select_array_8 Unexecuted instantiation: lhash.c:constant_time_select_array_8 Unexecuted instantiation: blake2.c:constant_time_select_array_8 Unexecuted instantiation: params.c:constant_time_select_array_8 |
493 | | |
494 | | // constant_time_select_entry_from_table_w selects the idx-th entry from table. |
495 | | static inline void constant_time_select_entry_from_table_w( |
496 | | crypto_word_t *out, crypto_word_t *table, |
497 | 0 | size_t idx, size_t num_entries, size_t entry_size) { |
498 | 0 | for (size_t i = 0; i < num_entries; i++) { |
499 | 0 | crypto_word_t mask = constant_time_eq_w(i, idx); |
500 | 0 | constant_time_select_array_w(out, &table[i * entry_size], out, mask, entry_size); |
501 | 0 | } |
502 | 0 | } Unexecuted instantiation: convert.c:constant_time_select_entry_from_table_w Unexecuted instantiation: cbb.c:constant_time_select_entry_from_table_w Unexecuted instantiation: cbs.c:constant_time_select_entry_from_table_w Unexecuted instantiation: e_aesgcmsiv.c:constant_time_select_entry_from_table_w Unexecuted instantiation: e_chacha20poly1305.c:constant_time_select_entry_from_table_w Unexecuted instantiation: crypto.c:constant_time_select_entry_from_table_w Unexecuted instantiation: cfb.c:constant_time_select_entry_from_table_w Unexecuted instantiation: ec_asn1.c:constant_time_select_entry_from_table_w Unexecuted instantiation: ecdsa_asn1.c:constant_time_select_entry_from_table_w Unexecuted instantiation: err.c:constant_time_select_entry_from_table_w Unexecuted instantiation: evp_asn1.c:constant_time_select_entry_from_table_w Unexecuted instantiation: p_methods.c:constant_time_select_entry_from_table_w Unexecuted instantiation: p_pqdsa_asn1.c:constant_time_select_entry_from_table_w Unexecuted instantiation: p_x25519_asn1.c:constant_time_select_entry_from_table_w Unexecuted instantiation: bcm.c:constant_time_select_entry_from_table_w Unexecuted instantiation: kyber1024r3_ref.c:constant_time_select_entry_from_table_w Unexecuted instantiation: kyber512r3_ref.c:constant_time_select_entry_from_table_w Unexecuted instantiation: kyber768r3_ref.c:constant_time_select_entry_from_table_w Unexecuted instantiation: mem.c:constant_time_select_entry_from_table_w Unexecuted instantiation: obj.c:constant_time_select_entry_from_table_w Unexecuted instantiation: obj_xref.c:constant_time_select_entry_from_table_w Unexecuted instantiation: poly1305_vec.c:constant_time_select_entry_from_table_w Unexecuted instantiation: forkunsafe.c:constant_time_select_entry_from_table_w Unexecuted instantiation: refcount_c11.c:constant_time_select_entry_from_table_w Unexecuted instantiation: rsa_asn1.c:constant_time_select_entry_from_table_w Unexecuted instantiation: rsa_crypt.c:constant_time_select_entry_from_table_w Unexecuted instantiation: rsassa_pss_asn1.c:constant_time_select_entry_from_table_w Unexecuted instantiation: stack.c:constant_time_select_entry_from_table_w Unexecuted instantiation: thread_pthread.c:constant_time_select_entry_from_table_w Unexecuted instantiation: a_object.c:constant_time_select_entry_from_table_w Unexecuted instantiation: posix_time.c:constant_time_select_entry_from_table_w Unexecuted instantiation: bio.c:constant_time_select_entry_from_table_w Unexecuted instantiation: file.c:constant_time_select_entry_from_table_w Unexecuted instantiation: asn1_compat.c:constant_time_select_entry_from_table_w Unexecuted instantiation: chacha.c:constant_time_select_entry_from_table_w Unexecuted instantiation: ripemd.c:constant_time_select_entry_from_table_w Unexecuted instantiation: digest_extra.c:constant_time_select_entry_from_table_w Unexecuted instantiation: dsa.c:constant_time_select_entry_from_table_w Unexecuted instantiation: dsa_asn1.c:constant_time_select_entry_from_table_w Unexecuted instantiation: engine.c:constant_time_select_entry_from_table_w Unexecuted instantiation: p_dh_asn1.c:constant_time_select_entry_from_table_w Unexecuted instantiation: p_dsa.c:constant_time_select_entry_from_table_w Unexecuted instantiation: p_ed25519_asn1.c:constant_time_select_entry_from_table_w Unexecuted instantiation: p_hmac_asn1.c:constant_time_select_entry_from_table_w Unexecuted instantiation: p_kem_asn1.c:constant_time_select_entry_from_table_w Unexecuted instantiation: print.c:constant_time_select_entry_from_table_w Unexecuted instantiation: ex_data.c:constant_time_select_entry_from_table_w Unexecuted instantiation: lhash.c:constant_time_select_entry_from_table_w Unexecuted instantiation: blake2.c:constant_time_select_entry_from_table_w Unexecuted instantiation: params.c:constant_time_select_entry_from_table_w |
503 | | |
504 | | static inline void constant_time_select_entry_from_table_8( |
505 | | uint8_t *out, uint8_t *table, size_t idx, |
506 | 0 | size_t num_entries, size_t entry_size) { |
507 | 0 | for (size_t i = 0; i < num_entries; i++) { |
508 | 0 | uint8_t mask = (uint8_t)(constant_time_eq_w(i, idx)); |
509 | 0 | constant_time_select_array_8(out, &table[i * entry_size], out, mask, entry_size); |
510 | 0 | } |
511 | 0 | } Unexecuted instantiation: convert.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: cbb.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: cbs.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: e_aesgcmsiv.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: e_chacha20poly1305.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: crypto.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: cfb.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: ec_asn1.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: ecdsa_asn1.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: err.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: evp_asn1.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: p_methods.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: p_pqdsa_asn1.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: p_x25519_asn1.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: bcm.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: kyber1024r3_ref.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: kyber512r3_ref.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: kyber768r3_ref.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: mem.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: obj.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: obj_xref.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: poly1305_vec.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: forkunsafe.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: refcount_c11.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: rsa_asn1.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: rsa_crypt.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: rsassa_pss_asn1.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: stack.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: thread_pthread.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: a_object.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: posix_time.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: bio.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: file.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: asn1_compat.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: chacha.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: ripemd.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: digest_extra.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: dsa.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: dsa_asn1.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: engine.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: p_dh_asn1.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: p_dsa.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: p_ed25519_asn1.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: p_hmac_asn1.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: p_kem_asn1.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: print.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: ex_data.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: lhash.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: blake2.c:constant_time_select_entry_from_table_8 Unexecuted instantiation: params.c:constant_time_select_entry_from_table_8 |
512 | | |
513 | | #if defined(BORINGSSL_CONSTANT_TIME_VALIDATION) |
514 | | |
515 | | // CONSTTIME_SECRET takes a pointer and a number of bytes and marks that region |
516 | | // of memory as secret. Secret data is tracked as it flows to registers and |
517 | | // other parts of a memory. If secret data is used as a condition for a branch, |
518 | | // or as a memory index, it will trigger warnings in valgrind. |
519 | | #define CONSTTIME_SECRET(ptr, len) VALGRIND_MAKE_MEM_UNDEFINED(ptr, len) |
520 | | |
521 | | // CONSTTIME_DECLASSIFY takes a pointer and a number of bytes and marks that |
522 | | // region of memory as public. Public data is not subject to constant-time |
523 | | // rules. |
524 | | #define CONSTTIME_DECLASSIFY(ptr, len) VALGRIND_MAKE_MEM_DEFINED(ptr, len) |
525 | | |
526 | | #else |
527 | | |
528 | | #define CONSTTIME_SECRET(ptr, len) |
529 | | #define CONSTTIME_DECLASSIFY(ptr, len) |
530 | | |
531 | | #endif // BORINGSSL_CONSTANT_TIME_VALIDATION |
532 | | |
533 | 0 | static inline crypto_word_t constant_time_declassify_w(crypto_word_t v) { |
534 | | // Return |v| through a value barrier to be safe. Valgrind-based constant-time |
535 | | // validation is partly to check the compiler has not undone any constant-time |
536 | | // work. Any place |BORINGSSL_CONSTANT_TIME_VALIDATION| influences |
537 | | // optimizations, this validation is inaccurate. |
538 | | // |
539 | | // However, by sending pointers through valgrind, we likely inhibit escape |
540 | | // analysis. On local variables, particularly booleans, we likely |
541 | | // significantly impact optimizations. |
542 | | // |
543 | | // Thus, to be safe, stick a value barrier, in hopes of comparably inhibiting |
544 | | // compiler analysis. |
545 | 0 | CONSTTIME_DECLASSIFY(&v, sizeof(v)); |
546 | 0 | return value_barrier_w(v); |
547 | 0 | } Unexecuted instantiation: convert.c:constant_time_declassify_w Unexecuted instantiation: cbb.c:constant_time_declassify_w Unexecuted instantiation: cbs.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: crypto.c:constant_time_declassify_w Unexecuted instantiation: cfb.c:constant_time_declassify_w Unexecuted instantiation: ec_asn1.c:constant_time_declassify_w Unexecuted instantiation: ecdsa_asn1.c:constant_time_declassify_w Unexecuted instantiation: err.c:constant_time_declassify_w Unexecuted instantiation: evp_asn1.c:constant_time_declassify_w Unexecuted instantiation: p_methods.c:constant_time_declassify_w Unexecuted instantiation: p_pqdsa_asn1.c:constant_time_declassify_w Unexecuted instantiation: p_x25519_asn1.c:constant_time_declassify_w Unexecuted instantiation: bcm.c:constant_time_declassify_w Unexecuted instantiation: kyber1024r3_ref.c:constant_time_declassify_w Unexecuted instantiation: kyber512r3_ref.c:constant_time_declassify_w Unexecuted instantiation: kyber768r3_ref.c:constant_time_declassify_w Unexecuted instantiation: mem.c:constant_time_declassify_w Unexecuted instantiation: obj.c:constant_time_declassify_w Unexecuted instantiation: obj_xref.c:constant_time_declassify_w Unexecuted instantiation: poly1305_vec.c:constant_time_declassify_w Unexecuted instantiation: forkunsafe.c:constant_time_declassify_w Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:constant_time_declassify_w Unexecuted instantiation: stack.c:constant_time_declassify_w Unexecuted instantiation: thread_pthread.c:constant_time_declassify_w Unexecuted instantiation: a_object.c:constant_time_declassify_w Unexecuted instantiation: posix_time.c:constant_time_declassify_w Unexecuted instantiation: bio.c:constant_time_declassify_w Unexecuted instantiation: file.c:constant_time_declassify_w Unexecuted instantiation: asn1_compat.c:constant_time_declassify_w Unexecuted instantiation: chacha.c:constant_time_declassify_w Unexecuted instantiation: ripemd.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: engine.c:constant_time_declassify_w Unexecuted instantiation: p_dh_asn1.c:constant_time_declassify_w Unexecuted instantiation: p_dsa.c:constant_time_declassify_w Unexecuted instantiation: p_ed25519_asn1.c:constant_time_declassify_w Unexecuted instantiation: p_hmac_asn1.c:constant_time_declassify_w Unexecuted instantiation: p_kem_asn1.c:constant_time_declassify_w Unexecuted instantiation: print.c:constant_time_declassify_w Unexecuted instantiation: ex_data.c:constant_time_declassify_w Unexecuted instantiation: lhash.c:constant_time_declassify_w Unexecuted instantiation: blake2.c:constant_time_declassify_w Unexecuted instantiation: params.c:constant_time_declassify_w |
548 | | |
549 | 0 | static inline int constant_time_declassify_int(int v) { |
550 | 0 | OPENSSL_STATIC_ASSERT(sizeof(uint32_t) == sizeof(int), |
551 | 0 | int_is_not_the_same_size_as_uint32_t); |
552 | | // See comment above. |
553 | 0 | CONSTTIME_DECLASSIFY(&v, sizeof(v)); |
554 | 0 | return value_barrier_u32(v); |
555 | 0 | } Unexecuted instantiation: convert.c:constant_time_declassify_int Unexecuted instantiation: cbb.c:constant_time_declassify_int Unexecuted instantiation: cbs.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: crypto.c:constant_time_declassify_int Unexecuted instantiation: cfb.c:constant_time_declassify_int Unexecuted instantiation: ec_asn1.c:constant_time_declassify_int Unexecuted instantiation: ecdsa_asn1.c:constant_time_declassify_int Unexecuted instantiation: err.c:constant_time_declassify_int Unexecuted instantiation: evp_asn1.c:constant_time_declassify_int Unexecuted instantiation: p_methods.c:constant_time_declassify_int Unexecuted instantiation: p_pqdsa_asn1.c:constant_time_declassify_int Unexecuted instantiation: p_x25519_asn1.c:constant_time_declassify_int Unexecuted instantiation: bcm.c:constant_time_declassify_int Unexecuted instantiation: kyber1024r3_ref.c:constant_time_declassify_int Unexecuted instantiation: kyber512r3_ref.c:constant_time_declassify_int Unexecuted instantiation: kyber768r3_ref.c:constant_time_declassify_int Unexecuted instantiation: mem.c:constant_time_declassify_int Unexecuted instantiation: obj.c:constant_time_declassify_int Unexecuted instantiation: obj_xref.c:constant_time_declassify_int Unexecuted instantiation: poly1305_vec.c:constant_time_declassify_int Unexecuted instantiation: forkunsafe.c:constant_time_declassify_int Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:constant_time_declassify_int Unexecuted instantiation: stack.c:constant_time_declassify_int Unexecuted instantiation: thread_pthread.c:constant_time_declassify_int Unexecuted instantiation: a_object.c:constant_time_declassify_int Unexecuted instantiation: posix_time.c:constant_time_declassify_int Unexecuted instantiation: bio.c:constant_time_declassify_int Unexecuted instantiation: file.c:constant_time_declassify_int Unexecuted instantiation: asn1_compat.c:constant_time_declassify_int Unexecuted instantiation: chacha.c:constant_time_declassify_int Unexecuted instantiation: ripemd.c:constant_time_declassify_int 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: engine.c:constant_time_declassify_int Unexecuted instantiation: p_dh_asn1.c:constant_time_declassify_int Unexecuted instantiation: p_dsa.c:constant_time_declassify_int Unexecuted instantiation: p_ed25519_asn1.c:constant_time_declassify_int Unexecuted instantiation: p_hmac_asn1.c:constant_time_declassify_int Unexecuted instantiation: p_kem_asn1.c:constant_time_declassify_int Unexecuted instantiation: print.c:constant_time_declassify_int Unexecuted instantiation: ex_data.c:constant_time_declassify_int Unexecuted instantiation: lhash.c:constant_time_declassify_int Unexecuted instantiation: blake2.c:constant_time_declassify_int Unexecuted instantiation: params.c:constant_time_declassify_int |
556 | | |
557 | | // declassify_assert behaves like |assert| but declassifies the result of |
558 | | // evaluating |expr|. This allows the assertion to branch on the (presumably |
559 | | // public) result, but still ensures that values leading up to the computation |
560 | | // were secret. |
561 | 0 | #define declassify_assert(expr) assert(constant_time_declassify_int(expr)) |
562 | | |
563 | | |
564 | | // Thread-safe initialisation. |
565 | | |
566 | | #if !defined(OPENSSL_THREADS) |
567 | | typedef uint32_t CRYPTO_once_t; |
568 | | #define CRYPTO_ONCE_INIT 0 |
569 | | #elif defined(OPENSSL_WINDOWS_THREADS) |
570 | | typedef INIT_ONCE CRYPTO_once_t; |
571 | | #define CRYPTO_ONCE_INIT INIT_ONCE_STATIC_INIT |
572 | | #elif defined(OPENSSL_PTHREADS) |
573 | | typedef pthread_once_t CRYPTO_once_t; |
574 | | #define CRYPTO_ONCE_INIT PTHREAD_ONCE_INIT |
575 | | #else |
576 | | #error "Unknown threading library" |
577 | | #endif |
578 | | |
579 | | // CRYPTO_once calls |init| exactly once per process. This is thread-safe: if |
580 | | // concurrent threads call |CRYPTO_once| with the same |CRYPTO_once_t| argument |
581 | | // then they will block until |init| completes, but |init| will have only been |
582 | | // called once. |
583 | | // |
584 | | // The |once| argument must be a |CRYPTO_once_t| that has been initialised with |
585 | | // the value |CRYPTO_ONCE_INIT|. |
586 | | OPENSSL_EXPORT void CRYPTO_once(CRYPTO_once_t *once, void (*init)(void)); |
587 | | |
588 | | |
589 | | // Reference counting. |
590 | | |
591 | | #if !defined(__STDC_NO_ATOMICS__) && defined(__STDC_VERSION__) && \ |
592 | | __STDC_VERSION__ >= 201112L |
593 | | #include <stdatomic.h> |
594 | | // CRYPTO_refcount_t is a |uint32_t| |
595 | | #define AWS_LC_ATOMIC_LOCK_FREE ATOMIC_LONG_LOCK_FREE |
596 | | #else |
597 | | #define AWS_LC_ATOMIC_LOCK_FREE 0 |
598 | | #endif |
599 | | |
600 | | // Automatically enable C11 atomics if implemented and lock free |
601 | | #if !defined(OPENSSL_C11_ATOMIC) && defined(OPENSSL_THREADS) && \ |
602 | | AWS_LC_ATOMIC_LOCK_FREE == 2 |
603 | | #define OPENSSL_C11_ATOMIC |
604 | | #endif |
605 | | |
606 | | // Older MSVC does not support C11 atomics, so we fallback to the Windows APIs. |
607 | | // This can be removed once we can rely on |
608 | | // https://devblogs.microsoft.com/cppblog/c11-atomics-in-visual-studio-2022-version-17-5-preview-2/ |
609 | | #if !defined(OPENSSL_C11_ATOMIC) && defined(OPENSSL_THREADS) && \ |
610 | | defined(OPENSSL_WINDOWS) |
611 | | #define OPENSSL_WINDOWS_ATOMIC |
612 | | #endif |
613 | | |
614 | | // CRYPTO_REFCOUNT_MAX is the value at which the reference count saturates. |
615 | 0 | #define CRYPTO_REFCOUNT_MAX 0xffffffff |
616 | | |
617 | | // CRYPTO_refcount_inc atomically increments the value at |*count| unless the |
618 | | // value would overflow. It's safe for multiple threads to concurrently call |
619 | | // this or |CRYPTO_refcount_dec_and_test_zero| on the same |
620 | | // |CRYPTO_refcount_t|. |
621 | | OPENSSL_EXPORT void CRYPTO_refcount_inc(CRYPTO_refcount_t *count); |
622 | | |
623 | | // CRYPTO_refcount_dec_and_test_zero tests the value at |*count|: |
624 | | // if it's zero, it crashes the address space. |
625 | | // if it's the maximum value, it returns zero. |
626 | | // otherwise, it atomically decrements it and returns one iff the resulting |
627 | | // value is zero. |
628 | | // |
629 | | // It's safe for multiple threads to concurrently call this or |
630 | | // |CRYPTO_refcount_inc| on the same |CRYPTO_refcount_t|. |
631 | | OPENSSL_EXPORT int CRYPTO_refcount_dec_and_test_zero(CRYPTO_refcount_t *count); |
632 | | |
633 | | |
634 | | // Locks. |
635 | | // |
636 | | // Two types of locks are defined: |CRYPTO_MUTEX|, which can be used in |
637 | | // structures as normal, and |struct CRYPTO_STATIC_MUTEX|, which can be used as |
638 | | // a global lock. A global lock must be initialised to the value |
639 | | // |CRYPTO_STATIC_MUTEX_INIT|. |
640 | | // |
641 | | // |CRYPTO_MUTEX| can appear in public structures and so is defined in |
642 | | // thread.h as a structure large enough to fit the real type. The global lock is |
643 | | // a different type so it may be initialized with platform initializer macros. |
644 | | |
645 | | #if !defined(OPENSSL_THREADS) |
646 | | struct CRYPTO_STATIC_MUTEX { |
647 | | char padding; // Empty structs have different sizes in C and C++. |
648 | | }; |
649 | | #define CRYPTO_STATIC_MUTEX_INIT { 0 } |
650 | | #elif defined(OPENSSL_WINDOWS_THREADS) |
651 | | struct CRYPTO_STATIC_MUTEX { |
652 | | SRWLOCK lock; |
653 | | }; |
654 | | #define CRYPTO_STATIC_MUTEX_INIT { SRWLOCK_INIT } |
655 | | #elif defined(OPENSSL_PTHREADS) |
656 | | struct CRYPTO_STATIC_MUTEX { |
657 | | pthread_rwlock_t lock; |
658 | | }; |
659 | | #define CRYPTO_STATIC_MUTEX_INIT { PTHREAD_RWLOCK_INITIALIZER } |
660 | | #else |
661 | | #error "Unknown threading library" |
662 | | #endif |
663 | | |
664 | | // CRYPTO_MUTEX_init initialises |lock|. If |lock| is a static variable, use a |
665 | | // |CRYPTO_STATIC_MUTEX|. |
666 | | OPENSSL_EXPORT void CRYPTO_MUTEX_init(CRYPTO_MUTEX *lock); |
667 | | |
668 | | // CRYPTO_MUTEX_lock_read locks |lock| such that other threads may also have a |
669 | | // read lock, but none may have a write lock. |
670 | | OPENSSL_EXPORT void CRYPTO_MUTEX_lock_read(CRYPTO_MUTEX *lock); |
671 | | |
672 | | // CRYPTO_MUTEX_lock_write locks |lock| such that no other thread has any type |
673 | | // of lock on it. |
674 | | OPENSSL_EXPORT void CRYPTO_MUTEX_lock_write(CRYPTO_MUTEX *lock); |
675 | | |
676 | | // CRYPTO_MUTEX_unlock_read unlocks |lock| for reading. |
677 | | OPENSSL_EXPORT void CRYPTO_MUTEX_unlock_read(CRYPTO_MUTEX *lock); |
678 | | |
679 | | // CRYPTO_MUTEX_unlock_write unlocks |lock| for writing. |
680 | | OPENSSL_EXPORT void CRYPTO_MUTEX_unlock_write(CRYPTO_MUTEX *lock); |
681 | | |
682 | | // CRYPTO_MUTEX_cleanup releases all resources held by |lock|. |
683 | | OPENSSL_EXPORT void CRYPTO_MUTEX_cleanup(CRYPTO_MUTEX *lock); |
684 | | |
685 | | // CRYPTO_STATIC_MUTEX_lock_read locks |lock| such that other threads may also |
686 | | // have a read lock, but none may have a write lock. The |lock| variable does |
687 | | // not need to be initialised by any function, but must have been statically |
688 | | // initialised with |CRYPTO_STATIC_MUTEX_INIT|. |
689 | | OPENSSL_EXPORT void CRYPTO_STATIC_MUTEX_lock_read( |
690 | | struct CRYPTO_STATIC_MUTEX *lock); |
691 | | |
692 | | // CRYPTO_STATIC_MUTEX_lock_write locks |lock| such that no other thread has |
693 | | // any type of lock on it. The |lock| variable does not need to be initialised |
694 | | // by any function, but must have been statically initialised with |
695 | | // |CRYPTO_STATIC_MUTEX_INIT|. |
696 | | OPENSSL_EXPORT void CRYPTO_STATIC_MUTEX_lock_write( |
697 | | struct CRYPTO_STATIC_MUTEX *lock); |
698 | | |
699 | | // CRYPTO_STATIC_MUTEX_unlock_read unlocks |lock| for reading. |
700 | | OPENSSL_EXPORT void CRYPTO_STATIC_MUTEX_unlock_read( |
701 | | struct CRYPTO_STATIC_MUTEX *lock); |
702 | | |
703 | | // CRYPTO_STATIC_MUTEX_unlock_write unlocks |lock| for writing. |
704 | | OPENSSL_EXPORT void CRYPTO_STATIC_MUTEX_unlock_write( |
705 | | struct CRYPTO_STATIC_MUTEX *lock); |
706 | | |
707 | | #if defined(__cplusplus) |
708 | | extern "C++" { |
709 | | |
710 | | BSSL_NAMESPACE_BEGIN |
711 | | |
712 | | namespace internal { |
713 | | |
714 | | // MutexLockBase is a RAII helper for CRYPTO_MUTEX locking. |
715 | | template <void (*LockFunc)(CRYPTO_MUTEX *), void (*ReleaseFunc)(CRYPTO_MUTEX *)> |
716 | | class MutexLockBase { |
717 | | public: |
718 | | explicit MutexLockBase(CRYPTO_MUTEX *mu) : mu_(mu) { |
719 | | assert(mu_ != nullptr); |
720 | | LockFunc(mu_); |
721 | | } |
722 | | ~MutexLockBase() { ReleaseFunc(mu_); } |
723 | | MutexLockBase(const MutexLockBase<LockFunc, ReleaseFunc> &) = delete; |
724 | | MutexLockBase &operator=(const MutexLockBase<LockFunc, ReleaseFunc> &) = |
725 | | delete; |
726 | | |
727 | | private: |
728 | | CRYPTO_MUTEX *const mu_; |
729 | | }; |
730 | | |
731 | | } // namespace internal |
732 | | |
733 | | using MutexWriteLock = |
734 | | internal::MutexLockBase<CRYPTO_MUTEX_lock_write, CRYPTO_MUTEX_unlock_write>; |
735 | | using MutexReadLock = |
736 | | internal::MutexLockBase<CRYPTO_MUTEX_lock_read, CRYPTO_MUTEX_unlock_read>; |
737 | | |
738 | | BSSL_NAMESPACE_END |
739 | | |
740 | | } // extern "C++" |
741 | | #endif // defined(__cplusplus) |
742 | | |
743 | | |
744 | | // Thread local storage. |
745 | | |
746 | | // thread_local_data_t enumerates the types of thread-local data that can be |
747 | | // stored. |
748 | | typedef enum { |
749 | | OPENSSL_THREAD_LOCAL_ERR = 0, |
750 | | OPENSSL_THREAD_LOCAL_RAND, |
751 | | OPENSSL_THREAD_LOCAL_FIPS_COUNTERS, |
752 | | AWSLC_THREAD_LOCAL_FIPS_SERVICE_INDICATOR_STATE, |
753 | | OPENSSL_THREAD_LOCAL_TEST, |
754 | | NUM_OPENSSL_THREAD_LOCALS, |
755 | | } thread_local_data_t; |
756 | | |
757 | | // thread_local_destructor_t is the type of a destructor function that will be |
758 | | // called when a thread exits and its thread-local storage needs to be freed. |
759 | | typedef void (*thread_local_destructor_t)(void *); |
760 | | |
761 | | // CRYPTO_get_thread_local gets the pointer value that is stored for the |
762 | | // current thread for the given index, or NULL if none has been set. |
763 | | OPENSSL_EXPORT void *CRYPTO_get_thread_local(thread_local_data_t value); |
764 | | |
765 | | // CRYPTO_set_thread_local sets a pointer value for the current thread at the |
766 | | // given index. This function should only be called once per thread for a given |
767 | | // |index|: rather than update the pointer value itself, update the data that |
768 | | // is pointed to. |
769 | | // |
770 | | // The destructor function will be called when a thread exits to free this |
771 | | // thread-local data. All calls to |CRYPTO_set_thread_local| with the same |
772 | | // |index| should have the same |destructor| argument. The destructor may be |
773 | | // called with a NULL argument if a thread that never set a thread-local |
774 | | // pointer for |index|, exits. The destructor may be called concurrently with |
775 | | // different arguments. |
776 | | // |
777 | | // This function returns one on success or zero on error. If it returns zero |
778 | | // then |destructor| has been called with |value| already. |
779 | | OPENSSL_EXPORT int CRYPTO_set_thread_local( |
780 | | thread_local_data_t index, void *value, |
781 | | thread_local_destructor_t destructor); |
782 | | |
783 | | |
784 | | // ex_data |
785 | | |
786 | | typedef struct crypto_ex_data_func_st CRYPTO_EX_DATA_FUNCS; |
787 | | |
788 | | DECLARE_STACK_OF(CRYPTO_EX_DATA_FUNCS) |
789 | | |
790 | | // CRYPTO_EX_DATA_CLASS tracks the ex_indices registered for a type which |
791 | | // supports ex_data. It should defined as a static global within the module |
792 | | // which defines that type. |
793 | | typedef struct { |
794 | | struct CRYPTO_STATIC_MUTEX lock; |
795 | | STACK_OF(CRYPTO_EX_DATA_FUNCS) *meth; |
796 | | // num_reserved is one if the ex_data index zero is reserved for legacy |
797 | | // |TYPE_get_app_data| functions. |
798 | | uint8_t num_reserved; |
799 | | } CRYPTO_EX_DATA_CLASS; |
800 | | |
801 | | #define CRYPTO_EX_DATA_CLASS_INIT {CRYPTO_STATIC_MUTEX_INIT, NULL, 0} |
802 | | #define CRYPTO_EX_DATA_CLASS_INIT_WITH_APP_DATA \ |
803 | | {CRYPTO_STATIC_MUTEX_INIT, NULL, 1} |
804 | | |
805 | | // CRYPTO_get_ex_new_index allocates a new index for |ex_data_class| and writes |
806 | | // it to |*out_index|. Each class of object should provide a wrapper function |
807 | | // that uses the correct |CRYPTO_EX_DATA_CLASS|. It returns one on success and |
808 | | // zero otherwise. |
809 | | OPENSSL_EXPORT int CRYPTO_get_ex_new_index(CRYPTO_EX_DATA_CLASS *ex_data_class, |
810 | | int *out_index, long argl, |
811 | | void *argp, |
812 | | CRYPTO_EX_free *free_func); |
813 | | |
814 | | // CRYPTO_set_ex_data sets an extra data pointer on a given object. Each class |
815 | | // of object should provide a wrapper function. |
816 | | OPENSSL_EXPORT int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int index, void *val); |
817 | | |
818 | | // CRYPTO_get_ex_data returns an extra data pointer for a given object, or NULL |
819 | | // if no such index exists. Each class of object should provide a wrapper |
820 | | // function. |
821 | | OPENSSL_EXPORT void *CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int index); |
822 | | |
823 | | // CRYPTO_new_ex_data initialises a newly allocated |CRYPTO_EX_DATA|. |
824 | | OPENSSL_EXPORT void CRYPTO_new_ex_data(CRYPTO_EX_DATA *ad); |
825 | | |
826 | | // CRYPTO_free_ex_data frees |ad|, which is embedded inside |obj|, which is an |
827 | | // object of the given class. |
828 | | OPENSSL_EXPORT void CRYPTO_free_ex_data(CRYPTO_EX_DATA_CLASS *ex_data_class, |
829 | | void *obj, CRYPTO_EX_DATA *ad); |
830 | | |
831 | | |
832 | | // Endianness conversions. |
833 | | |
834 | | #if defined(AWS_LC_BUILTIN_SWAP_SUPPORTED) |
835 | 0 | static inline uint16_t CRYPTO_bswap2(uint16_t x) { |
836 | 0 | return __builtin_bswap16(x); |
837 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_bswap2 Unexecuted instantiation: cbb.c:CRYPTO_bswap2 Unexecuted instantiation: cbs.c:CRYPTO_bswap2 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_bswap2 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_bswap2 Unexecuted instantiation: crypto.c:CRYPTO_bswap2 Unexecuted instantiation: cfb.c:CRYPTO_bswap2 Unexecuted instantiation: ec_asn1.c:CRYPTO_bswap2 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_bswap2 Unexecuted instantiation: err.c:CRYPTO_bswap2 Unexecuted instantiation: evp_asn1.c:CRYPTO_bswap2 Unexecuted instantiation: p_methods.c:CRYPTO_bswap2 Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_bswap2 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_bswap2 Unexecuted instantiation: bcm.c:CRYPTO_bswap2 Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_bswap2 Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_bswap2 Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_bswap2 Unexecuted instantiation: mem.c:CRYPTO_bswap2 Unexecuted instantiation: obj.c:CRYPTO_bswap2 Unexecuted instantiation: obj_xref.c:CRYPTO_bswap2 Unexecuted instantiation: poly1305_vec.c:CRYPTO_bswap2 Unexecuted instantiation: forkunsafe.c:CRYPTO_bswap2 Unexecuted instantiation: refcount_c11.c:CRYPTO_bswap2 Unexecuted instantiation: rsa_asn1.c:CRYPTO_bswap2 Unexecuted instantiation: rsa_crypt.c:CRYPTO_bswap2 Unexecuted instantiation: rsassa_pss_asn1.c:CRYPTO_bswap2 Unexecuted instantiation: stack.c:CRYPTO_bswap2 Unexecuted instantiation: thread_pthread.c:CRYPTO_bswap2 Unexecuted instantiation: a_object.c:CRYPTO_bswap2 Unexecuted instantiation: posix_time.c:CRYPTO_bswap2 Unexecuted instantiation: bio.c:CRYPTO_bswap2 Unexecuted instantiation: file.c:CRYPTO_bswap2 Unexecuted instantiation: asn1_compat.c:CRYPTO_bswap2 Unexecuted instantiation: chacha.c:CRYPTO_bswap2 Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_bswap2 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_bswap2 Unexecuted instantiation: p_dsa.c:CRYPTO_bswap2 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_bswap2 Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_bswap2 Unexecuted instantiation: p_kem_asn1.c:CRYPTO_bswap2 Unexecuted instantiation: print.c:CRYPTO_bswap2 Unexecuted instantiation: ex_data.c:CRYPTO_bswap2 Unexecuted instantiation: lhash.c:CRYPTO_bswap2 Unexecuted instantiation: blake2.c:CRYPTO_bswap2 Unexecuted instantiation: params.c:CRYPTO_bswap2 |
838 | | |
839 | 0 | static inline uint32_t CRYPTO_bswap4(uint32_t x) { |
840 | 0 | return __builtin_bswap32(x); |
841 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_bswap4 Unexecuted instantiation: cbb.c:CRYPTO_bswap4 Unexecuted instantiation: cbs.c:CRYPTO_bswap4 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_bswap4 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_bswap4 Unexecuted instantiation: crypto.c:CRYPTO_bswap4 Unexecuted instantiation: cfb.c:CRYPTO_bswap4 Unexecuted instantiation: ec_asn1.c:CRYPTO_bswap4 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_bswap4 Unexecuted instantiation: err.c:CRYPTO_bswap4 Unexecuted instantiation: evp_asn1.c:CRYPTO_bswap4 Unexecuted instantiation: p_methods.c:CRYPTO_bswap4 Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_bswap4 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_bswap4 Unexecuted instantiation: bcm.c:CRYPTO_bswap4 Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_bswap4 Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_bswap4 Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_bswap4 Unexecuted instantiation: mem.c:CRYPTO_bswap4 Unexecuted instantiation: obj.c:CRYPTO_bswap4 Unexecuted instantiation: obj_xref.c:CRYPTO_bswap4 Unexecuted instantiation: poly1305_vec.c:CRYPTO_bswap4 Unexecuted instantiation: forkunsafe.c:CRYPTO_bswap4 Unexecuted instantiation: refcount_c11.c:CRYPTO_bswap4 Unexecuted instantiation: rsa_asn1.c:CRYPTO_bswap4 Unexecuted instantiation: rsa_crypt.c:CRYPTO_bswap4 Unexecuted instantiation: rsassa_pss_asn1.c:CRYPTO_bswap4 Unexecuted instantiation: stack.c:CRYPTO_bswap4 Unexecuted instantiation: thread_pthread.c:CRYPTO_bswap4 Unexecuted instantiation: a_object.c:CRYPTO_bswap4 Unexecuted instantiation: posix_time.c:CRYPTO_bswap4 Unexecuted instantiation: bio.c:CRYPTO_bswap4 Unexecuted instantiation: file.c:CRYPTO_bswap4 Unexecuted instantiation: asn1_compat.c:CRYPTO_bswap4 Unexecuted instantiation: chacha.c:CRYPTO_bswap4 Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_bswap4 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_bswap4 Unexecuted instantiation: p_dsa.c:CRYPTO_bswap4 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_bswap4 Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_bswap4 Unexecuted instantiation: p_kem_asn1.c:CRYPTO_bswap4 Unexecuted instantiation: print.c:CRYPTO_bswap4 Unexecuted instantiation: ex_data.c:CRYPTO_bswap4 Unexecuted instantiation: lhash.c:CRYPTO_bswap4 Unexecuted instantiation: blake2.c:CRYPTO_bswap4 Unexecuted instantiation: params.c:CRYPTO_bswap4 |
842 | | |
843 | 0 | static inline uint64_t CRYPTO_bswap8(uint64_t x) { |
844 | 0 | return __builtin_bswap64(x); |
845 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_bswap8 Unexecuted instantiation: cbb.c:CRYPTO_bswap8 Unexecuted instantiation: cbs.c:CRYPTO_bswap8 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_bswap8 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_bswap8 Unexecuted instantiation: crypto.c:CRYPTO_bswap8 Unexecuted instantiation: cfb.c:CRYPTO_bswap8 Unexecuted instantiation: ec_asn1.c:CRYPTO_bswap8 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_bswap8 Unexecuted instantiation: err.c:CRYPTO_bswap8 Unexecuted instantiation: evp_asn1.c:CRYPTO_bswap8 Unexecuted instantiation: p_methods.c:CRYPTO_bswap8 Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_bswap8 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_bswap8 Unexecuted instantiation: bcm.c:CRYPTO_bswap8 Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_bswap8 Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_bswap8 Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_bswap8 Unexecuted instantiation: mem.c:CRYPTO_bswap8 Unexecuted instantiation: obj.c:CRYPTO_bswap8 Unexecuted instantiation: obj_xref.c:CRYPTO_bswap8 Unexecuted instantiation: poly1305_vec.c:CRYPTO_bswap8 Unexecuted instantiation: forkunsafe.c:CRYPTO_bswap8 Unexecuted instantiation: refcount_c11.c:CRYPTO_bswap8 Unexecuted instantiation: rsa_asn1.c:CRYPTO_bswap8 Unexecuted instantiation: rsa_crypt.c:CRYPTO_bswap8 Unexecuted instantiation: rsassa_pss_asn1.c:CRYPTO_bswap8 Unexecuted instantiation: stack.c:CRYPTO_bswap8 Unexecuted instantiation: thread_pthread.c:CRYPTO_bswap8 Unexecuted instantiation: a_object.c:CRYPTO_bswap8 Unexecuted instantiation: posix_time.c:CRYPTO_bswap8 Unexecuted instantiation: bio.c:CRYPTO_bswap8 Unexecuted instantiation: file.c:CRYPTO_bswap8 Unexecuted instantiation: asn1_compat.c:CRYPTO_bswap8 Unexecuted instantiation: chacha.c:CRYPTO_bswap8 Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_bswap8 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_bswap8 Unexecuted instantiation: p_dsa.c:CRYPTO_bswap8 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_bswap8 Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_bswap8 Unexecuted instantiation: p_kem_asn1.c:CRYPTO_bswap8 Unexecuted instantiation: print.c:CRYPTO_bswap8 Unexecuted instantiation: ex_data.c:CRYPTO_bswap8 Unexecuted instantiation: lhash.c:CRYPTO_bswap8 Unexecuted instantiation: blake2.c:CRYPTO_bswap8 Unexecuted instantiation: params.c:CRYPTO_bswap8 |
846 | 0 | static inline crypto_word_t CRYPTO_bswap_word(crypto_word_t x) { |
847 | 0 | #if defined(OPENSSL_64_BIT) |
848 | 0 | return CRYPTO_bswap8(x); |
849 | 0 | #else |
850 | 0 | return CRYPTO_bswap4(x); |
851 | 0 | #endif |
852 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_bswap_word Unexecuted instantiation: cbb.c:CRYPTO_bswap_word Unexecuted instantiation: cbs.c:CRYPTO_bswap_word Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_bswap_word Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_bswap_word Unexecuted instantiation: crypto.c:CRYPTO_bswap_word Unexecuted instantiation: cfb.c:CRYPTO_bswap_word Unexecuted instantiation: ec_asn1.c:CRYPTO_bswap_word Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_bswap_word Unexecuted instantiation: err.c:CRYPTO_bswap_word Unexecuted instantiation: evp_asn1.c:CRYPTO_bswap_word Unexecuted instantiation: p_methods.c:CRYPTO_bswap_word Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_bswap_word Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_bswap_word Unexecuted instantiation: bcm.c:CRYPTO_bswap_word Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_bswap_word Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_bswap_word Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_bswap_word Unexecuted instantiation: mem.c:CRYPTO_bswap_word Unexecuted instantiation: obj.c:CRYPTO_bswap_word Unexecuted instantiation: obj_xref.c:CRYPTO_bswap_word Unexecuted instantiation: poly1305_vec.c:CRYPTO_bswap_word Unexecuted instantiation: forkunsafe.c:CRYPTO_bswap_word Unexecuted instantiation: refcount_c11.c:CRYPTO_bswap_word Unexecuted instantiation: rsa_asn1.c:CRYPTO_bswap_word Unexecuted instantiation: rsa_crypt.c:CRYPTO_bswap_word Unexecuted instantiation: rsassa_pss_asn1.c:CRYPTO_bswap_word Unexecuted instantiation: stack.c:CRYPTO_bswap_word Unexecuted instantiation: thread_pthread.c:CRYPTO_bswap_word Unexecuted instantiation: a_object.c:CRYPTO_bswap_word Unexecuted instantiation: posix_time.c:CRYPTO_bswap_word Unexecuted instantiation: bio.c:CRYPTO_bswap_word Unexecuted instantiation: file.c:CRYPTO_bswap_word Unexecuted instantiation: asn1_compat.c:CRYPTO_bswap_word Unexecuted instantiation: chacha.c:CRYPTO_bswap_word Unexecuted instantiation: ripemd.c:CRYPTO_bswap_word Unexecuted instantiation: digest_extra.c:CRYPTO_bswap_word Unexecuted instantiation: dsa.c:CRYPTO_bswap_word Unexecuted instantiation: dsa_asn1.c:CRYPTO_bswap_word Unexecuted instantiation: engine.c:CRYPTO_bswap_word Unexecuted instantiation: p_dh_asn1.c:CRYPTO_bswap_word Unexecuted instantiation: p_dsa.c:CRYPTO_bswap_word Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_bswap_word Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_bswap_word Unexecuted instantiation: p_kem_asn1.c:CRYPTO_bswap_word Unexecuted instantiation: print.c:CRYPTO_bswap_word Unexecuted instantiation: ex_data.c:CRYPTO_bswap_word Unexecuted instantiation: lhash.c:CRYPTO_bswap_word Unexecuted instantiation: blake2.c:CRYPTO_bswap_word Unexecuted instantiation: params.c:CRYPTO_bswap_word |
853 | | |
854 | | |
855 | | #elif defined(_MSC_VER) |
856 | | OPENSSL_MSVC_PRAGMA(warning(push, 3)) |
857 | | #include <stdlib.h> |
858 | | OPENSSL_MSVC_PRAGMA(warning(pop)) |
859 | | #pragma intrinsic(_byteswap_uint64, _byteswap_ulong, _byteswap_ushort) |
860 | | static inline uint16_t CRYPTO_bswap2(uint16_t x) { |
861 | | return _byteswap_ushort(x); |
862 | | } |
863 | | |
864 | | static inline uint32_t CRYPTO_bswap4(uint32_t x) { |
865 | | return _byteswap_ulong(x); |
866 | | } |
867 | | |
868 | | static inline uint64_t CRYPTO_bswap8(uint64_t x) { |
869 | | return _byteswap_uint64(x); |
870 | | } |
871 | | #else |
872 | | static inline uint16_t CRYPTO_bswap2(uint16_t x) { |
873 | | return (x >> 8) | (x << 8); |
874 | | } |
875 | | |
876 | | static inline uint32_t CRYPTO_bswap4(uint32_t x) { |
877 | | x = (x >> 16) | (x << 16); |
878 | | x = ((x & 0xff00ff00) >> 8) | ((x & 0x00ff00ff) << 8); |
879 | | return x; |
880 | | } |
881 | | |
882 | | static inline uint64_t CRYPTO_bswap8(uint64_t x) { |
883 | | return CRYPTO_bswap4(x >> 32) | (((uint64_t)CRYPTO_bswap4(x)) << 32); |
884 | | } |
885 | | #endif |
886 | | |
887 | | |
888 | | // Language bug workarounds. |
889 | | // |
890 | | // Most C standard library functions are undefined if passed NULL, even when the |
891 | | // corresponding length is zero. This gives them (and, in turn, all functions |
892 | | // which call them) surprising behavior on empty arrays. Some compilers will |
893 | | // miscompile code due to this rule. See also |
894 | | // https://www.imperialviolet.org/2016/06/26/nonnull.html |
895 | | // |
896 | | // These wrapper functions behave the same as the corresponding C standard |
897 | | // functions, but behave as expected when passed NULL if the length is zero. |
898 | | // |
899 | | // Note |OPENSSL_memcmp| is a different function from |CRYPTO_memcmp|. |
900 | | |
901 | | // C++ defines |memchr| as a const-correct overload. |
902 | | #if defined(__cplusplus) |
903 | | extern "C++" { |
904 | | |
905 | | static inline const void *OPENSSL_memchr(const void *s, int c, size_t n) { |
906 | | if (n == 0) { |
907 | | return NULL; |
908 | | } |
909 | | |
910 | | return memchr(s, c, n); |
911 | | } |
912 | | |
913 | | static inline void *OPENSSL_memchr(void *s, int c, size_t n) { |
914 | | if (n == 0) { |
915 | | return NULL; |
916 | | } |
917 | | |
918 | | return memchr(s, c, n); |
919 | | } |
920 | | |
921 | | } // extern "C++" |
922 | | #else // __cplusplus |
923 | | |
924 | 0 | static inline void *OPENSSL_memchr(const void *s, int c, size_t n) { |
925 | 0 | if (n == 0) { |
926 | 0 | return NULL; |
927 | 0 | } |
928 | | |
929 | 0 | return memchr(s, c, n); |
930 | 0 | } Unexecuted instantiation: convert.c:OPENSSL_memchr Unexecuted instantiation: cbb.c:OPENSSL_memchr Unexecuted instantiation: cbs.c:OPENSSL_memchr Unexecuted instantiation: e_aesgcmsiv.c:OPENSSL_memchr Unexecuted instantiation: e_chacha20poly1305.c:OPENSSL_memchr Unexecuted instantiation: crypto.c:OPENSSL_memchr Unexecuted instantiation: cfb.c:OPENSSL_memchr Unexecuted instantiation: ec_asn1.c:OPENSSL_memchr Unexecuted instantiation: ecdsa_asn1.c:OPENSSL_memchr Unexecuted instantiation: err.c:OPENSSL_memchr Unexecuted instantiation: evp_asn1.c:OPENSSL_memchr Unexecuted instantiation: p_methods.c:OPENSSL_memchr Unexecuted instantiation: p_pqdsa_asn1.c:OPENSSL_memchr Unexecuted instantiation: p_x25519_asn1.c:OPENSSL_memchr Unexecuted instantiation: bcm.c:OPENSSL_memchr Unexecuted instantiation: kyber1024r3_ref.c:OPENSSL_memchr Unexecuted instantiation: kyber512r3_ref.c:OPENSSL_memchr Unexecuted instantiation: kyber768r3_ref.c:OPENSSL_memchr Unexecuted instantiation: mem.c:OPENSSL_memchr Unexecuted instantiation: obj.c:OPENSSL_memchr Unexecuted instantiation: obj_xref.c:OPENSSL_memchr Unexecuted instantiation: poly1305_vec.c:OPENSSL_memchr Unexecuted instantiation: forkunsafe.c:OPENSSL_memchr Unexecuted instantiation: refcount_c11.c:OPENSSL_memchr Unexecuted instantiation: rsa_asn1.c:OPENSSL_memchr Unexecuted instantiation: rsa_crypt.c:OPENSSL_memchr Unexecuted instantiation: rsassa_pss_asn1.c:OPENSSL_memchr Unexecuted instantiation: stack.c:OPENSSL_memchr Unexecuted instantiation: thread_pthread.c:OPENSSL_memchr Unexecuted instantiation: a_object.c:OPENSSL_memchr Unexecuted instantiation: posix_time.c:OPENSSL_memchr Unexecuted instantiation: bio.c:OPENSSL_memchr Unexecuted instantiation: file.c:OPENSSL_memchr Unexecuted instantiation: asn1_compat.c:OPENSSL_memchr Unexecuted instantiation: chacha.c:OPENSSL_memchr Unexecuted instantiation: ripemd.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: engine.c:OPENSSL_memchr Unexecuted instantiation: p_dh_asn1.c:OPENSSL_memchr Unexecuted instantiation: p_dsa.c:OPENSSL_memchr Unexecuted instantiation: p_ed25519_asn1.c:OPENSSL_memchr Unexecuted instantiation: p_hmac_asn1.c:OPENSSL_memchr Unexecuted instantiation: p_kem_asn1.c:OPENSSL_memchr Unexecuted instantiation: print.c:OPENSSL_memchr Unexecuted instantiation: ex_data.c:OPENSSL_memchr Unexecuted instantiation: lhash.c:OPENSSL_memchr Unexecuted instantiation: blake2.c:OPENSSL_memchr Unexecuted instantiation: params.c:OPENSSL_memchr |
931 | | |
932 | | #endif // __cplusplus |
933 | | |
934 | 0 | static inline int OPENSSL_memcmp(const void *s1, const void *s2, size_t n) { |
935 | 0 | if (n == 0) { |
936 | 0 | return 0; |
937 | 0 | } |
938 | | |
939 | 0 | return memcmp(s1, s2, n); |
940 | 0 | } Unexecuted instantiation: convert.c:OPENSSL_memcmp Unexecuted instantiation: cbb.c:OPENSSL_memcmp Unexecuted instantiation: cbs.c:OPENSSL_memcmp Unexecuted instantiation: e_aesgcmsiv.c:OPENSSL_memcmp Unexecuted instantiation: e_chacha20poly1305.c:OPENSSL_memcmp Unexecuted instantiation: crypto.c:OPENSSL_memcmp Unexecuted instantiation: cfb.c:OPENSSL_memcmp Unexecuted instantiation: ec_asn1.c:OPENSSL_memcmp Unexecuted instantiation: ecdsa_asn1.c:OPENSSL_memcmp Unexecuted instantiation: err.c:OPENSSL_memcmp Unexecuted instantiation: evp_asn1.c:OPENSSL_memcmp Unexecuted instantiation: p_methods.c:OPENSSL_memcmp Unexecuted instantiation: p_pqdsa_asn1.c:OPENSSL_memcmp Unexecuted instantiation: p_x25519_asn1.c:OPENSSL_memcmp Unexecuted instantiation: bcm.c:OPENSSL_memcmp Unexecuted instantiation: kyber1024r3_ref.c:OPENSSL_memcmp Unexecuted instantiation: kyber512r3_ref.c:OPENSSL_memcmp Unexecuted instantiation: kyber768r3_ref.c:OPENSSL_memcmp Unexecuted instantiation: mem.c:OPENSSL_memcmp Unexecuted instantiation: obj.c:OPENSSL_memcmp Unexecuted instantiation: obj_xref.c:OPENSSL_memcmp Unexecuted instantiation: poly1305_vec.c:OPENSSL_memcmp Unexecuted instantiation: forkunsafe.c:OPENSSL_memcmp Unexecuted instantiation: refcount_c11.c:OPENSSL_memcmp Unexecuted instantiation: rsa_asn1.c:OPENSSL_memcmp Unexecuted instantiation: rsa_crypt.c:OPENSSL_memcmp Unexecuted instantiation: rsassa_pss_asn1.c:OPENSSL_memcmp Unexecuted instantiation: stack.c:OPENSSL_memcmp Unexecuted instantiation: thread_pthread.c:OPENSSL_memcmp Unexecuted instantiation: a_object.c:OPENSSL_memcmp Unexecuted instantiation: posix_time.c:OPENSSL_memcmp Unexecuted instantiation: bio.c:OPENSSL_memcmp Unexecuted instantiation: file.c:OPENSSL_memcmp Unexecuted instantiation: asn1_compat.c:OPENSSL_memcmp Unexecuted instantiation: chacha.c:OPENSSL_memcmp Unexecuted instantiation: ripemd.c:OPENSSL_memcmp Unexecuted instantiation: digest_extra.c:OPENSSL_memcmp Unexecuted instantiation: dsa.c:OPENSSL_memcmp Unexecuted instantiation: dsa_asn1.c:OPENSSL_memcmp Unexecuted instantiation: engine.c:OPENSSL_memcmp Unexecuted instantiation: p_dh_asn1.c:OPENSSL_memcmp Unexecuted instantiation: p_dsa.c:OPENSSL_memcmp Unexecuted instantiation: p_ed25519_asn1.c:OPENSSL_memcmp Unexecuted instantiation: p_hmac_asn1.c:OPENSSL_memcmp Unexecuted instantiation: p_kem_asn1.c:OPENSSL_memcmp Unexecuted instantiation: print.c:OPENSSL_memcmp Unexecuted instantiation: ex_data.c:OPENSSL_memcmp Unexecuted instantiation: lhash.c:OPENSSL_memcmp Unexecuted instantiation: blake2.c:OPENSSL_memcmp Unexecuted instantiation: params.c:OPENSSL_memcmp |
941 | | |
942 | 0 | static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) { |
943 | 0 | if (n == 0) { |
944 | 0 | return dst; |
945 | 0 | } |
946 | | |
947 | 0 | return memcpy(dst, src, n); |
948 | 0 | } Unexecuted instantiation: convert.c:OPENSSL_memcpy Unexecuted instantiation: cbb.c:OPENSSL_memcpy Unexecuted instantiation: cbs.c:OPENSSL_memcpy Unexecuted instantiation: e_aesgcmsiv.c:OPENSSL_memcpy Unexecuted instantiation: e_chacha20poly1305.c:OPENSSL_memcpy Unexecuted instantiation: crypto.c:OPENSSL_memcpy Unexecuted instantiation: cfb.c:OPENSSL_memcpy Unexecuted instantiation: ec_asn1.c:OPENSSL_memcpy Unexecuted instantiation: ecdsa_asn1.c:OPENSSL_memcpy Unexecuted instantiation: err.c:OPENSSL_memcpy Unexecuted instantiation: evp_asn1.c:OPENSSL_memcpy Unexecuted instantiation: p_methods.c:OPENSSL_memcpy Unexecuted instantiation: p_pqdsa_asn1.c:OPENSSL_memcpy Unexecuted instantiation: p_x25519_asn1.c:OPENSSL_memcpy Unexecuted instantiation: bcm.c:OPENSSL_memcpy Unexecuted instantiation: kyber1024r3_ref.c:OPENSSL_memcpy Unexecuted instantiation: kyber512r3_ref.c:OPENSSL_memcpy Unexecuted instantiation: kyber768r3_ref.c:OPENSSL_memcpy Unexecuted instantiation: mem.c:OPENSSL_memcpy Unexecuted instantiation: obj.c:OPENSSL_memcpy Unexecuted instantiation: obj_xref.c:OPENSSL_memcpy Unexecuted instantiation: poly1305_vec.c:OPENSSL_memcpy Unexecuted instantiation: forkunsafe.c:OPENSSL_memcpy Unexecuted instantiation: refcount_c11.c:OPENSSL_memcpy Unexecuted instantiation: rsa_asn1.c:OPENSSL_memcpy Unexecuted instantiation: rsa_crypt.c:OPENSSL_memcpy Unexecuted instantiation: rsassa_pss_asn1.c:OPENSSL_memcpy Unexecuted instantiation: stack.c:OPENSSL_memcpy Unexecuted instantiation: thread_pthread.c:OPENSSL_memcpy Unexecuted instantiation: a_object.c:OPENSSL_memcpy Unexecuted instantiation: posix_time.c:OPENSSL_memcpy Unexecuted instantiation: bio.c:OPENSSL_memcpy Unexecuted instantiation: file.c:OPENSSL_memcpy Unexecuted instantiation: asn1_compat.c:OPENSSL_memcpy Unexecuted instantiation: chacha.c:OPENSSL_memcpy Unexecuted instantiation: ripemd.c:OPENSSL_memcpy Unexecuted instantiation: digest_extra.c:OPENSSL_memcpy Unexecuted instantiation: dsa.c:OPENSSL_memcpy Unexecuted instantiation: dsa_asn1.c:OPENSSL_memcpy Unexecuted instantiation: engine.c:OPENSSL_memcpy Unexecuted instantiation: p_dh_asn1.c:OPENSSL_memcpy Unexecuted instantiation: p_dsa.c:OPENSSL_memcpy Unexecuted instantiation: p_ed25519_asn1.c:OPENSSL_memcpy Unexecuted instantiation: p_hmac_asn1.c:OPENSSL_memcpy Unexecuted instantiation: p_kem_asn1.c:OPENSSL_memcpy Unexecuted instantiation: print.c:OPENSSL_memcpy Unexecuted instantiation: ex_data.c:OPENSSL_memcpy Unexecuted instantiation: lhash.c:OPENSSL_memcpy Unexecuted instantiation: blake2.c:OPENSSL_memcpy Unexecuted instantiation: params.c:OPENSSL_memcpy |
949 | | |
950 | 0 | static inline void *OPENSSL_memmove(void *dst, const void *src, size_t n) { |
951 | 0 | if (n == 0) { |
952 | 0 | return dst; |
953 | 0 | } |
954 | | |
955 | 0 | return memmove(dst, src, n); |
956 | 0 | } Unexecuted instantiation: convert.c:OPENSSL_memmove Unexecuted instantiation: cbb.c:OPENSSL_memmove Unexecuted instantiation: cbs.c:OPENSSL_memmove Unexecuted instantiation: e_aesgcmsiv.c:OPENSSL_memmove Unexecuted instantiation: e_chacha20poly1305.c:OPENSSL_memmove Unexecuted instantiation: crypto.c:OPENSSL_memmove Unexecuted instantiation: cfb.c:OPENSSL_memmove Unexecuted instantiation: ec_asn1.c:OPENSSL_memmove Unexecuted instantiation: ecdsa_asn1.c:OPENSSL_memmove Unexecuted instantiation: err.c:OPENSSL_memmove Unexecuted instantiation: evp_asn1.c:OPENSSL_memmove Unexecuted instantiation: p_methods.c:OPENSSL_memmove Unexecuted instantiation: p_pqdsa_asn1.c:OPENSSL_memmove Unexecuted instantiation: p_x25519_asn1.c:OPENSSL_memmove Unexecuted instantiation: bcm.c:OPENSSL_memmove Unexecuted instantiation: kyber1024r3_ref.c:OPENSSL_memmove Unexecuted instantiation: kyber512r3_ref.c:OPENSSL_memmove Unexecuted instantiation: kyber768r3_ref.c:OPENSSL_memmove Unexecuted instantiation: mem.c:OPENSSL_memmove Unexecuted instantiation: obj.c:OPENSSL_memmove Unexecuted instantiation: obj_xref.c:OPENSSL_memmove Unexecuted instantiation: poly1305_vec.c:OPENSSL_memmove Unexecuted instantiation: forkunsafe.c:OPENSSL_memmove Unexecuted instantiation: refcount_c11.c:OPENSSL_memmove Unexecuted instantiation: rsa_asn1.c:OPENSSL_memmove Unexecuted instantiation: rsa_crypt.c:OPENSSL_memmove Unexecuted instantiation: rsassa_pss_asn1.c:OPENSSL_memmove Unexecuted instantiation: stack.c:OPENSSL_memmove Unexecuted instantiation: thread_pthread.c:OPENSSL_memmove Unexecuted instantiation: a_object.c:OPENSSL_memmove Unexecuted instantiation: posix_time.c:OPENSSL_memmove Unexecuted instantiation: bio.c:OPENSSL_memmove Unexecuted instantiation: file.c:OPENSSL_memmove Unexecuted instantiation: asn1_compat.c:OPENSSL_memmove Unexecuted instantiation: chacha.c:OPENSSL_memmove Unexecuted instantiation: ripemd.c:OPENSSL_memmove Unexecuted instantiation: digest_extra.c:OPENSSL_memmove Unexecuted instantiation: dsa.c:OPENSSL_memmove Unexecuted instantiation: dsa_asn1.c:OPENSSL_memmove Unexecuted instantiation: engine.c:OPENSSL_memmove Unexecuted instantiation: p_dh_asn1.c:OPENSSL_memmove Unexecuted instantiation: p_dsa.c:OPENSSL_memmove Unexecuted instantiation: p_ed25519_asn1.c:OPENSSL_memmove Unexecuted instantiation: p_hmac_asn1.c:OPENSSL_memmove Unexecuted instantiation: p_kem_asn1.c:OPENSSL_memmove Unexecuted instantiation: print.c:OPENSSL_memmove Unexecuted instantiation: ex_data.c:OPENSSL_memmove Unexecuted instantiation: lhash.c:OPENSSL_memmove Unexecuted instantiation: blake2.c:OPENSSL_memmove Unexecuted instantiation: params.c:OPENSSL_memmove |
957 | | |
958 | 0 | static inline void *OPENSSL_memset(void *dst, int c, size_t n) { |
959 | 0 | if (n == 0) { |
960 | 0 | return dst; |
961 | 0 | } |
962 | | |
963 | 0 | return memset(dst, c, n); |
964 | 0 | } Unexecuted instantiation: convert.c:OPENSSL_memset Unexecuted instantiation: cbb.c:OPENSSL_memset Unexecuted instantiation: cbs.c:OPENSSL_memset Unexecuted instantiation: e_aesgcmsiv.c:OPENSSL_memset Unexecuted instantiation: e_chacha20poly1305.c:OPENSSL_memset Unexecuted instantiation: crypto.c:OPENSSL_memset Unexecuted instantiation: cfb.c:OPENSSL_memset Unexecuted instantiation: ec_asn1.c:OPENSSL_memset Unexecuted instantiation: ecdsa_asn1.c:OPENSSL_memset Unexecuted instantiation: err.c:OPENSSL_memset Unexecuted instantiation: evp_asn1.c:OPENSSL_memset Unexecuted instantiation: p_methods.c:OPENSSL_memset Unexecuted instantiation: p_pqdsa_asn1.c:OPENSSL_memset Unexecuted instantiation: p_x25519_asn1.c:OPENSSL_memset Unexecuted instantiation: bcm.c:OPENSSL_memset Unexecuted instantiation: kyber1024r3_ref.c:OPENSSL_memset Unexecuted instantiation: kyber512r3_ref.c:OPENSSL_memset Unexecuted instantiation: kyber768r3_ref.c:OPENSSL_memset Unexecuted instantiation: mem.c:OPENSSL_memset Unexecuted instantiation: obj.c:OPENSSL_memset Unexecuted instantiation: obj_xref.c:OPENSSL_memset Unexecuted instantiation: poly1305_vec.c:OPENSSL_memset Unexecuted instantiation: forkunsafe.c:OPENSSL_memset Unexecuted instantiation: refcount_c11.c:OPENSSL_memset Unexecuted instantiation: rsa_asn1.c:OPENSSL_memset Unexecuted instantiation: rsa_crypt.c:OPENSSL_memset Unexecuted instantiation: rsassa_pss_asn1.c:OPENSSL_memset Unexecuted instantiation: stack.c:OPENSSL_memset Unexecuted instantiation: thread_pthread.c:OPENSSL_memset Unexecuted instantiation: a_object.c:OPENSSL_memset Unexecuted instantiation: posix_time.c:OPENSSL_memset Unexecuted instantiation: bio.c:OPENSSL_memset Unexecuted instantiation: file.c:OPENSSL_memset Unexecuted instantiation: asn1_compat.c:OPENSSL_memset Unexecuted instantiation: chacha.c:OPENSSL_memset Unexecuted instantiation: ripemd.c:OPENSSL_memset Unexecuted instantiation: digest_extra.c:OPENSSL_memset Unexecuted instantiation: dsa.c:OPENSSL_memset Unexecuted instantiation: dsa_asn1.c:OPENSSL_memset Unexecuted instantiation: engine.c:OPENSSL_memset Unexecuted instantiation: p_dh_asn1.c:OPENSSL_memset Unexecuted instantiation: p_dsa.c:OPENSSL_memset Unexecuted instantiation: p_ed25519_asn1.c:OPENSSL_memset Unexecuted instantiation: p_hmac_asn1.c:OPENSSL_memset Unexecuted instantiation: p_kem_asn1.c:OPENSSL_memset Unexecuted instantiation: print.c:OPENSSL_memset Unexecuted instantiation: ex_data.c:OPENSSL_memset Unexecuted instantiation: lhash.c:OPENSSL_memset Unexecuted instantiation: blake2.c:OPENSSL_memset Unexecuted instantiation: params.c:OPENSSL_memset |
965 | | |
966 | | |
967 | | // Loads and stores. |
968 | | // |
969 | | // The following functions load and store sized integers with the specified |
970 | | // endianness. They use |memcpy|, and so avoid alignment or strict aliasing |
971 | | // requirements on the input and output pointers. |
972 | | |
973 | 0 | static inline uint16_t CRYPTO_load_u16_le(const void *in) { |
974 | 0 | uint16_t v; |
975 | 0 | OPENSSL_memcpy(&v, in, sizeof(v)); |
976 | 0 | #if defined(OPENSSL_BIG_ENDIAN) |
977 | 0 | return CRYPTO_bswap2(v); |
978 | 0 | #else |
979 | 0 | return v; |
980 | 0 | #endif |
981 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_load_u16_le Unexecuted instantiation: cbb.c:CRYPTO_load_u16_le Unexecuted instantiation: cbs.c:CRYPTO_load_u16_le Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_load_u16_le Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_load_u16_le Unexecuted instantiation: crypto.c:CRYPTO_load_u16_le Unexecuted instantiation: cfb.c:CRYPTO_load_u16_le Unexecuted instantiation: ec_asn1.c:CRYPTO_load_u16_le Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_load_u16_le Unexecuted instantiation: err.c:CRYPTO_load_u16_le Unexecuted instantiation: evp_asn1.c:CRYPTO_load_u16_le Unexecuted instantiation: p_methods.c:CRYPTO_load_u16_le Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_load_u16_le Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_load_u16_le Unexecuted instantiation: bcm.c:CRYPTO_load_u16_le Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_load_u16_le Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_load_u16_le Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_load_u16_le Unexecuted instantiation: mem.c:CRYPTO_load_u16_le Unexecuted instantiation: obj.c:CRYPTO_load_u16_le Unexecuted instantiation: obj_xref.c:CRYPTO_load_u16_le Unexecuted instantiation: poly1305_vec.c:CRYPTO_load_u16_le Unexecuted instantiation: forkunsafe.c:CRYPTO_load_u16_le Unexecuted instantiation: refcount_c11.c:CRYPTO_load_u16_le Unexecuted instantiation: rsa_asn1.c:CRYPTO_load_u16_le Unexecuted instantiation: rsa_crypt.c:CRYPTO_load_u16_le Unexecuted instantiation: rsassa_pss_asn1.c:CRYPTO_load_u16_le Unexecuted instantiation: stack.c:CRYPTO_load_u16_le Unexecuted instantiation: thread_pthread.c:CRYPTO_load_u16_le Unexecuted instantiation: a_object.c:CRYPTO_load_u16_le Unexecuted instantiation: posix_time.c:CRYPTO_load_u16_le Unexecuted instantiation: bio.c:CRYPTO_load_u16_le Unexecuted instantiation: file.c:CRYPTO_load_u16_le Unexecuted instantiation: asn1_compat.c:CRYPTO_load_u16_le Unexecuted instantiation: chacha.c:CRYPTO_load_u16_le Unexecuted instantiation: ripemd.c:CRYPTO_load_u16_le Unexecuted instantiation: digest_extra.c:CRYPTO_load_u16_le Unexecuted instantiation: dsa.c:CRYPTO_load_u16_le Unexecuted instantiation: dsa_asn1.c:CRYPTO_load_u16_le Unexecuted instantiation: engine.c:CRYPTO_load_u16_le Unexecuted instantiation: p_dh_asn1.c:CRYPTO_load_u16_le Unexecuted instantiation: p_dsa.c:CRYPTO_load_u16_le Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_load_u16_le Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_load_u16_le Unexecuted instantiation: p_kem_asn1.c:CRYPTO_load_u16_le Unexecuted instantiation: print.c:CRYPTO_load_u16_le Unexecuted instantiation: ex_data.c:CRYPTO_load_u16_le Unexecuted instantiation: lhash.c:CRYPTO_load_u16_le Unexecuted instantiation: blake2.c:CRYPTO_load_u16_le Unexecuted instantiation: params.c:CRYPTO_load_u16_le |
982 | | |
983 | 0 | static inline void CRYPTO_store_u16_le(void *out, uint16_t v) { |
984 | 0 | #if defined(OPENSSL_BIG_ENDIAN) |
985 | 0 | v = CRYPTO_bswap2(v); |
986 | 0 | #endif |
987 | 0 | OPENSSL_memcpy(out, &v, sizeof(v)); |
988 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_store_u16_le Unexecuted instantiation: cbb.c:CRYPTO_store_u16_le Unexecuted instantiation: cbs.c:CRYPTO_store_u16_le Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_store_u16_le Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_store_u16_le Unexecuted instantiation: crypto.c:CRYPTO_store_u16_le Unexecuted instantiation: cfb.c:CRYPTO_store_u16_le Unexecuted instantiation: ec_asn1.c:CRYPTO_store_u16_le Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_store_u16_le Unexecuted instantiation: err.c:CRYPTO_store_u16_le Unexecuted instantiation: evp_asn1.c:CRYPTO_store_u16_le Unexecuted instantiation: p_methods.c:CRYPTO_store_u16_le Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_store_u16_le Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_store_u16_le Unexecuted instantiation: bcm.c:CRYPTO_store_u16_le Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_store_u16_le Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_store_u16_le Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_store_u16_le Unexecuted instantiation: mem.c:CRYPTO_store_u16_le Unexecuted instantiation: obj.c:CRYPTO_store_u16_le Unexecuted instantiation: obj_xref.c:CRYPTO_store_u16_le Unexecuted instantiation: poly1305_vec.c:CRYPTO_store_u16_le Unexecuted instantiation: forkunsafe.c:CRYPTO_store_u16_le Unexecuted instantiation: refcount_c11.c:CRYPTO_store_u16_le Unexecuted instantiation: rsa_asn1.c:CRYPTO_store_u16_le Unexecuted instantiation: rsa_crypt.c:CRYPTO_store_u16_le Unexecuted instantiation: rsassa_pss_asn1.c:CRYPTO_store_u16_le Unexecuted instantiation: stack.c:CRYPTO_store_u16_le Unexecuted instantiation: thread_pthread.c:CRYPTO_store_u16_le Unexecuted instantiation: a_object.c:CRYPTO_store_u16_le Unexecuted instantiation: posix_time.c:CRYPTO_store_u16_le Unexecuted instantiation: bio.c:CRYPTO_store_u16_le Unexecuted instantiation: file.c:CRYPTO_store_u16_le Unexecuted instantiation: asn1_compat.c:CRYPTO_store_u16_le Unexecuted instantiation: chacha.c:CRYPTO_store_u16_le Unexecuted instantiation: ripemd.c:CRYPTO_store_u16_le Unexecuted instantiation: digest_extra.c:CRYPTO_store_u16_le Unexecuted instantiation: dsa.c:CRYPTO_store_u16_le Unexecuted instantiation: dsa_asn1.c:CRYPTO_store_u16_le Unexecuted instantiation: engine.c:CRYPTO_store_u16_le Unexecuted instantiation: p_dh_asn1.c:CRYPTO_store_u16_le Unexecuted instantiation: p_dsa.c:CRYPTO_store_u16_le Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_store_u16_le Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_store_u16_le Unexecuted instantiation: p_kem_asn1.c:CRYPTO_store_u16_le Unexecuted instantiation: print.c:CRYPTO_store_u16_le Unexecuted instantiation: ex_data.c:CRYPTO_store_u16_le Unexecuted instantiation: lhash.c:CRYPTO_store_u16_le Unexecuted instantiation: blake2.c:CRYPTO_store_u16_le Unexecuted instantiation: params.c:CRYPTO_store_u16_le |
989 | | |
990 | 0 | static inline uint16_t CRYPTO_load_u16_be(const void *in) { |
991 | 0 | uint16_t v; |
992 | 0 | OPENSSL_memcpy(&v, in, sizeof(v)); |
993 | 0 | #if defined(OPENSSL_BIG_ENDIAN) |
994 | 0 | return v; |
995 | 0 | #else |
996 | 0 | return CRYPTO_bswap2(v); |
997 | 0 | #endif |
998 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_load_u16_be Unexecuted instantiation: cbb.c:CRYPTO_load_u16_be Unexecuted instantiation: cbs.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: crypto.c:CRYPTO_load_u16_be Unexecuted instantiation: cfb.c:CRYPTO_load_u16_be Unexecuted instantiation: ec_asn1.c:CRYPTO_load_u16_be Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_load_u16_be Unexecuted instantiation: err.c:CRYPTO_load_u16_be Unexecuted instantiation: evp_asn1.c:CRYPTO_load_u16_be Unexecuted instantiation: p_methods.c:CRYPTO_load_u16_be Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_load_u16_be Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_load_u16_be Unexecuted instantiation: bcm.c:CRYPTO_load_u16_be Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_load_u16_be Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_load_u16_be Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_load_u16_be Unexecuted instantiation: mem.c:CRYPTO_load_u16_be Unexecuted instantiation: obj.c:CRYPTO_load_u16_be Unexecuted instantiation: obj_xref.c:CRYPTO_load_u16_be Unexecuted instantiation: poly1305_vec.c:CRYPTO_load_u16_be Unexecuted instantiation: forkunsafe.c:CRYPTO_load_u16_be Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:CRYPTO_load_u16_be Unexecuted instantiation: stack.c:CRYPTO_load_u16_be Unexecuted instantiation: thread_pthread.c:CRYPTO_load_u16_be Unexecuted instantiation: a_object.c:CRYPTO_load_u16_be Unexecuted instantiation: posix_time.c:CRYPTO_load_u16_be Unexecuted instantiation: bio.c:CRYPTO_load_u16_be Unexecuted instantiation: file.c:CRYPTO_load_u16_be Unexecuted instantiation: asn1_compat.c:CRYPTO_load_u16_be Unexecuted instantiation: chacha.c:CRYPTO_load_u16_be Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_load_u16_be Unexecuted instantiation: p_dh_asn1.c:CRYPTO_load_u16_be Unexecuted instantiation: p_dsa.c:CRYPTO_load_u16_be Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_load_u16_be Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_load_u16_be Unexecuted instantiation: p_kem_asn1.c:CRYPTO_load_u16_be Unexecuted instantiation: print.c:CRYPTO_load_u16_be Unexecuted instantiation: ex_data.c:CRYPTO_load_u16_be Unexecuted instantiation: lhash.c:CRYPTO_load_u16_be Unexecuted instantiation: blake2.c:CRYPTO_load_u16_be Unexecuted instantiation: params.c:CRYPTO_load_u16_be |
999 | | |
1000 | 0 | static inline void CRYPTO_store_u16_be(void *out, uint16_t v) { |
1001 | 0 | #if !defined(OPENSSL_BIG_ENDIAN) |
1002 | 0 | v = CRYPTO_bswap2(v); |
1003 | 0 | #endif |
1004 | 0 | OPENSSL_memcpy(out, &v, sizeof(v)); |
1005 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_store_u16_be Unexecuted instantiation: cbb.c:CRYPTO_store_u16_be Unexecuted instantiation: cbs.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: crypto.c:CRYPTO_store_u16_be Unexecuted instantiation: cfb.c:CRYPTO_store_u16_be Unexecuted instantiation: ec_asn1.c:CRYPTO_store_u16_be Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_store_u16_be Unexecuted instantiation: err.c:CRYPTO_store_u16_be Unexecuted instantiation: evp_asn1.c:CRYPTO_store_u16_be Unexecuted instantiation: p_methods.c:CRYPTO_store_u16_be Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_store_u16_be Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_store_u16_be Unexecuted instantiation: bcm.c:CRYPTO_store_u16_be Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_store_u16_be Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_store_u16_be Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_store_u16_be Unexecuted instantiation: mem.c:CRYPTO_store_u16_be Unexecuted instantiation: obj.c:CRYPTO_store_u16_be Unexecuted instantiation: obj_xref.c:CRYPTO_store_u16_be Unexecuted instantiation: poly1305_vec.c:CRYPTO_store_u16_be Unexecuted instantiation: forkunsafe.c:CRYPTO_store_u16_be Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:CRYPTO_store_u16_be Unexecuted instantiation: stack.c:CRYPTO_store_u16_be Unexecuted instantiation: thread_pthread.c:CRYPTO_store_u16_be Unexecuted instantiation: a_object.c:CRYPTO_store_u16_be Unexecuted instantiation: posix_time.c:CRYPTO_store_u16_be Unexecuted instantiation: bio.c:CRYPTO_store_u16_be Unexecuted instantiation: file.c:CRYPTO_store_u16_be Unexecuted instantiation: asn1_compat.c:CRYPTO_store_u16_be Unexecuted instantiation: chacha.c:CRYPTO_store_u16_be Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_store_u16_be Unexecuted instantiation: p_dh_asn1.c:CRYPTO_store_u16_be Unexecuted instantiation: p_dsa.c:CRYPTO_store_u16_be Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_store_u16_be Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_store_u16_be Unexecuted instantiation: p_kem_asn1.c:CRYPTO_store_u16_be Unexecuted instantiation: print.c:CRYPTO_store_u16_be Unexecuted instantiation: ex_data.c:CRYPTO_store_u16_be Unexecuted instantiation: lhash.c:CRYPTO_store_u16_be Unexecuted instantiation: blake2.c:CRYPTO_store_u16_be Unexecuted instantiation: params.c:CRYPTO_store_u16_be |
1006 | | |
1007 | 0 | static inline uint32_t CRYPTO_load_u32_le(const void *in) { |
1008 | 0 | uint32_t v; |
1009 | 0 | OPENSSL_memcpy(&v, in, sizeof(v)); |
1010 | | #if defined(OPENSSL_BIG_ENDIAN) |
1011 | | return CRYPTO_bswap4(v); |
1012 | | #else |
1013 | 0 | return v; |
1014 | 0 | #endif |
1015 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_load_u32_le Unexecuted instantiation: cbb.c:CRYPTO_load_u32_le Unexecuted instantiation: cbs.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: crypto.c:CRYPTO_load_u32_le Unexecuted instantiation: cfb.c:CRYPTO_load_u32_le Unexecuted instantiation: ec_asn1.c:CRYPTO_load_u32_le Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_load_u32_le Unexecuted instantiation: err.c:CRYPTO_load_u32_le Unexecuted instantiation: evp_asn1.c:CRYPTO_load_u32_le Unexecuted instantiation: p_methods.c:CRYPTO_load_u32_le Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_load_u32_le Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_load_u32_le Unexecuted instantiation: bcm.c:CRYPTO_load_u32_le Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_load_u32_le Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_load_u32_le Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_load_u32_le Unexecuted instantiation: mem.c:CRYPTO_load_u32_le Unexecuted instantiation: obj.c:CRYPTO_load_u32_le Unexecuted instantiation: obj_xref.c:CRYPTO_load_u32_le Unexecuted instantiation: poly1305_vec.c:CRYPTO_load_u32_le Unexecuted instantiation: forkunsafe.c:CRYPTO_load_u32_le Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:CRYPTO_load_u32_le Unexecuted instantiation: stack.c:CRYPTO_load_u32_le Unexecuted instantiation: thread_pthread.c:CRYPTO_load_u32_le Unexecuted instantiation: a_object.c:CRYPTO_load_u32_le Unexecuted instantiation: posix_time.c:CRYPTO_load_u32_le Unexecuted instantiation: bio.c:CRYPTO_load_u32_le Unexecuted instantiation: file.c:CRYPTO_load_u32_le Unexecuted instantiation: asn1_compat.c:CRYPTO_load_u32_le Unexecuted instantiation: chacha.c:CRYPTO_load_u32_le Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_load_u32_le Unexecuted instantiation: p_dh_asn1.c:CRYPTO_load_u32_le Unexecuted instantiation: p_dsa.c:CRYPTO_load_u32_le Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_load_u32_le Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_load_u32_le Unexecuted instantiation: p_kem_asn1.c:CRYPTO_load_u32_le Unexecuted instantiation: print.c:CRYPTO_load_u32_le Unexecuted instantiation: ex_data.c:CRYPTO_load_u32_le Unexecuted instantiation: lhash.c:CRYPTO_load_u32_le Unexecuted instantiation: blake2.c:CRYPTO_load_u32_le Unexecuted instantiation: params.c:CRYPTO_load_u32_le |
1016 | | |
1017 | 0 | static inline void CRYPTO_store_u32_le(void *out, uint32_t v) { |
1018 | | #if defined(OPENSSL_BIG_ENDIAN) |
1019 | | v = CRYPTO_bswap4(v); |
1020 | | #endif |
1021 | 0 | OPENSSL_memcpy(out, &v, sizeof(v)); |
1022 | |
|
1023 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_store_u32_le Unexecuted instantiation: cbb.c:CRYPTO_store_u32_le Unexecuted instantiation: cbs.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: crypto.c:CRYPTO_store_u32_le Unexecuted instantiation: cfb.c:CRYPTO_store_u32_le Unexecuted instantiation: ec_asn1.c:CRYPTO_store_u32_le Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_store_u32_le Unexecuted instantiation: err.c:CRYPTO_store_u32_le Unexecuted instantiation: evp_asn1.c:CRYPTO_store_u32_le Unexecuted instantiation: p_methods.c:CRYPTO_store_u32_le Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_store_u32_le Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_store_u32_le Unexecuted instantiation: bcm.c:CRYPTO_store_u32_le Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_store_u32_le Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_store_u32_le Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_store_u32_le Unexecuted instantiation: mem.c:CRYPTO_store_u32_le Unexecuted instantiation: obj.c:CRYPTO_store_u32_le Unexecuted instantiation: obj_xref.c:CRYPTO_store_u32_le Unexecuted instantiation: poly1305_vec.c:CRYPTO_store_u32_le Unexecuted instantiation: forkunsafe.c:CRYPTO_store_u32_le Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:CRYPTO_store_u32_le Unexecuted instantiation: stack.c:CRYPTO_store_u32_le Unexecuted instantiation: thread_pthread.c:CRYPTO_store_u32_le Unexecuted instantiation: a_object.c:CRYPTO_store_u32_le Unexecuted instantiation: posix_time.c:CRYPTO_store_u32_le Unexecuted instantiation: bio.c:CRYPTO_store_u32_le Unexecuted instantiation: file.c:CRYPTO_store_u32_le Unexecuted instantiation: asn1_compat.c:CRYPTO_store_u32_le Unexecuted instantiation: chacha.c:CRYPTO_store_u32_le Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_store_u32_le Unexecuted instantiation: p_dh_asn1.c:CRYPTO_store_u32_le Unexecuted instantiation: p_dsa.c:CRYPTO_store_u32_le Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_store_u32_le Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_store_u32_le Unexecuted instantiation: p_kem_asn1.c:CRYPTO_store_u32_le Unexecuted instantiation: print.c:CRYPTO_store_u32_le Unexecuted instantiation: ex_data.c:CRYPTO_store_u32_le Unexecuted instantiation: lhash.c:CRYPTO_store_u32_le Unexecuted instantiation: blake2.c:CRYPTO_store_u32_le Unexecuted instantiation: params.c:CRYPTO_store_u32_le |
1024 | | |
1025 | 0 | static inline uint32_t CRYPTO_load_u32_be(const void *in) { |
1026 | 0 | uint32_t v; |
1027 | 0 | OPENSSL_memcpy(&v, in, sizeof(v)); |
1028 | | #if defined(OPENSSL_BIG_ENDIAN) |
1029 | | return v; |
1030 | | #else |
1031 | 0 | return CRYPTO_bswap4(v); |
1032 | 0 | #endif |
1033 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_load_u32_be Unexecuted instantiation: cbb.c:CRYPTO_load_u32_be Unexecuted instantiation: cbs.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: crypto.c:CRYPTO_load_u32_be Unexecuted instantiation: cfb.c:CRYPTO_load_u32_be Unexecuted instantiation: ec_asn1.c:CRYPTO_load_u32_be Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_load_u32_be Unexecuted instantiation: err.c:CRYPTO_load_u32_be Unexecuted instantiation: evp_asn1.c:CRYPTO_load_u32_be Unexecuted instantiation: p_methods.c:CRYPTO_load_u32_be Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_load_u32_be Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_load_u32_be Unexecuted instantiation: bcm.c:CRYPTO_load_u32_be Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_load_u32_be Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_load_u32_be Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_load_u32_be Unexecuted instantiation: mem.c:CRYPTO_load_u32_be Unexecuted instantiation: obj.c:CRYPTO_load_u32_be Unexecuted instantiation: obj_xref.c:CRYPTO_load_u32_be Unexecuted instantiation: poly1305_vec.c:CRYPTO_load_u32_be Unexecuted instantiation: forkunsafe.c:CRYPTO_load_u32_be Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:CRYPTO_load_u32_be Unexecuted instantiation: stack.c:CRYPTO_load_u32_be Unexecuted instantiation: thread_pthread.c:CRYPTO_load_u32_be Unexecuted instantiation: a_object.c:CRYPTO_load_u32_be Unexecuted instantiation: posix_time.c:CRYPTO_load_u32_be Unexecuted instantiation: bio.c:CRYPTO_load_u32_be Unexecuted instantiation: file.c:CRYPTO_load_u32_be Unexecuted instantiation: asn1_compat.c:CRYPTO_load_u32_be Unexecuted instantiation: chacha.c:CRYPTO_load_u32_be Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_load_u32_be Unexecuted instantiation: p_dh_asn1.c:CRYPTO_load_u32_be Unexecuted instantiation: p_dsa.c:CRYPTO_load_u32_be Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_load_u32_be Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_load_u32_be Unexecuted instantiation: p_kem_asn1.c:CRYPTO_load_u32_be Unexecuted instantiation: print.c:CRYPTO_load_u32_be Unexecuted instantiation: ex_data.c:CRYPTO_load_u32_be Unexecuted instantiation: lhash.c:CRYPTO_load_u32_be Unexecuted instantiation: blake2.c:CRYPTO_load_u32_be Unexecuted instantiation: params.c:CRYPTO_load_u32_be |
1034 | | |
1035 | 0 | static inline void CRYPTO_store_u32_be(void *out, uint32_t v) { |
1036 | |
|
1037 | 0 | #if !defined(OPENSSL_BIG_ENDIAN) |
1038 | 0 | v = CRYPTO_bswap4(v); |
1039 | 0 | #endif |
1040 | 0 | OPENSSL_memcpy(out, &v, sizeof(v)); |
1041 | |
|
1042 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_store_u32_be Unexecuted instantiation: cbb.c:CRYPTO_store_u32_be Unexecuted instantiation: cbs.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: crypto.c:CRYPTO_store_u32_be Unexecuted instantiation: cfb.c:CRYPTO_store_u32_be Unexecuted instantiation: ec_asn1.c:CRYPTO_store_u32_be Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_store_u32_be Unexecuted instantiation: err.c:CRYPTO_store_u32_be Unexecuted instantiation: evp_asn1.c:CRYPTO_store_u32_be Unexecuted instantiation: p_methods.c:CRYPTO_store_u32_be Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_store_u32_be Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_store_u32_be Unexecuted instantiation: bcm.c:CRYPTO_store_u32_be Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_store_u32_be Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_store_u32_be Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_store_u32_be Unexecuted instantiation: mem.c:CRYPTO_store_u32_be Unexecuted instantiation: obj.c:CRYPTO_store_u32_be Unexecuted instantiation: obj_xref.c:CRYPTO_store_u32_be Unexecuted instantiation: poly1305_vec.c:CRYPTO_store_u32_be Unexecuted instantiation: forkunsafe.c:CRYPTO_store_u32_be Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:CRYPTO_store_u32_be Unexecuted instantiation: stack.c:CRYPTO_store_u32_be Unexecuted instantiation: thread_pthread.c:CRYPTO_store_u32_be Unexecuted instantiation: a_object.c:CRYPTO_store_u32_be Unexecuted instantiation: posix_time.c:CRYPTO_store_u32_be Unexecuted instantiation: bio.c:CRYPTO_store_u32_be Unexecuted instantiation: file.c:CRYPTO_store_u32_be Unexecuted instantiation: asn1_compat.c:CRYPTO_store_u32_be Unexecuted instantiation: chacha.c:CRYPTO_store_u32_be Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_store_u32_be Unexecuted instantiation: p_dh_asn1.c:CRYPTO_store_u32_be Unexecuted instantiation: p_dsa.c:CRYPTO_store_u32_be Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_store_u32_be Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_store_u32_be Unexecuted instantiation: p_kem_asn1.c:CRYPTO_store_u32_be Unexecuted instantiation: print.c:CRYPTO_store_u32_be Unexecuted instantiation: ex_data.c:CRYPTO_store_u32_be Unexecuted instantiation: lhash.c:CRYPTO_store_u32_be Unexecuted instantiation: blake2.c:CRYPTO_store_u32_be Unexecuted instantiation: params.c:CRYPTO_store_u32_be |
1043 | | |
1044 | 0 | static inline uint64_t CRYPTO_load_u64_le(const void *in) { |
1045 | 0 | uint64_t v; |
1046 | 0 | OPENSSL_memcpy(&v, in, sizeof(v)); |
1047 | | #if defined(OPENSSL_BIG_ENDIAN) |
1048 | | return CRYPTO_bswap8(v); |
1049 | | #else |
1050 | 0 | return v; |
1051 | 0 | #endif |
1052 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_load_u64_le Unexecuted instantiation: cbb.c:CRYPTO_load_u64_le Unexecuted instantiation: cbs.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: crypto.c:CRYPTO_load_u64_le Unexecuted instantiation: cfb.c:CRYPTO_load_u64_le Unexecuted instantiation: ec_asn1.c:CRYPTO_load_u64_le Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_load_u64_le Unexecuted instantiation: err.c:CRYPTO_load_u64_le Unexecuted instantiation: evp_asn1.c:CRYPTO_load_u64_le Unexecuted instantiation: p_methods.c:CRYPTO_load_u64_le Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_load_u64_le Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_load_u64_le Unexecuted instantiation: bcm.c:CRYPTO_load_u64_le Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_load_u64_le Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_load_u64_le Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_load_u64_le Unexecuted instantiation: mem.c:CRYPTO_load_u64_le Unexecuted instantiation: obj.c:CRYPTO_load_u64_le Unexecuted instantiation: obj_xref.c:CRYPTO_load_u64_le Unexecuted instantiation: poly1305_vec.c:CRYPTO_load_u64_le Unexecuted instantiation: forkunsafe.c:CRYPTO_load_u64_le Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:CRYPTO_load_u64_le Unexecuted instantiation: stack.c:CRYPTO_load_u64_le Unexecuted instantiation: thread_pthread.c:CRYPTO_load_u64_le Unexecuted instantiation: a_object.c:CRYPTO_load_u64_le Unexecuted instantiation: posix_time.c:CRYPTO_load_u64_le Unexecuted instantiation: bio.c:CRYPTO_load_u64_le Unexecuted instantiation: file.c:CRYPTO_load_u64_le Unexecuted instantiation: asn1_compat.c:CRYPTO_load_u64_le Unexecuted instantiation: chacha.c:CRYPTO_load_u64_le Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_load_u64_le Unexecuted instantiation: p_dh_asn1.c:CRYPTO_load_u64_le Unexecuted instantiation: p_dsa.c:CRYPTO_load_u64_le Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_load_u64_le Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_load_u64_le Unexecuted instantiation: p_kem_asn1.c:CRYPTO_load_u64_le Unexecuted instantiation: print.c:CRYPTO_load_u64_le Unexecuted instantiation: ex_data.c:CRYPTO_load_u64_le Unexecuted instantiation: lhash.c:CRYPTO_load_u64_le Unexecuted instantiation: blake2.c:CRYPTO_load_u64_le Unexecuted instantiation: params.c:CRYPTO_load_u64_le |
1053 | | |
1054 | 0 | static inline void CRYPTO_store_u64_le(void *out, uint64_t v) { |
1055 | | #if defined(OPENSSL_BIG_ENDIAN) |
1056 | | v = CRYPTO_bswap8(v); |
1057 | | #endif |
1058 | 0 | OPENSSL_memcpy(out, &v, sizeof(v)); |
1059 | |
|
1060 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_store_u64_le Unexecuted instantiation: cbb.c:CRYPTO_store_u64_le Unexecuted instantiation: cbs.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: crypto.c:CRYPTO_store_u64_le Unexecuted instantiation: cfb.c:CRYPTO_store_u64_le Unexecuted instantiation: ec_asn1.c:CRYPTO_store_u64_le Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_store_u64_le Unexecuted instantiation: err.c:CRYPTO_store_u64_le Unexecuted instantiation: evp_asn1.c:CRYPTO_store_u64_le Unexecuted instantiation: p_methods.c:CRYPTO_store_u64_le Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_store_u64_le Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_store_u64_le Unexecuted instantiation: bcm.c:CRYPTO_store_u64_le Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_store_u64_le Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_store_u64_le Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_store_u64_le Unexecuted instantiation: mem.c:CRYPTO_store_u64_le Unexecuted instantiation: obj.c:CRYPTO_store_u64_le Unexecuted instantiation: obj_xref.c:CRYPTO_store_u64_le Unexecuted instantiation: poly1305_vec.c:CRYPTO_store_u64_le Unexecuted instantiation: forkunsafe.c:CRYPTO_store_u64_le Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:CRYPTO_store_u64_le Unexecuted instantiation: stack.c:CRYPTO_store_u64_le Unexecuted instantiation: thread_pthread.c:CRYPTO_store_u64_le Unexecuted instantiation: a_object.c:CRYPTO_store_u64_le Unexecuted instantiation: posix_time.c:CRYPTO_store_u64_le Unexecuted instantiation: bio.c:CRYPTO_store_u64_le Unexecuted instantiation: file.c:CRYPTO_store_u64_le Unexecuted instantiation: asn1_compat.c:CRYPTO_store_u64_le Unexecuted instantiation: chacha.c:CRYPTO_store_u64_le Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_store_u64_le Unexecuted instantiation: p_dh_asn1.c:CRYPTO_store_u64_le Unexecuted instantiation: p_dsa.c:CRYPTO_store_u64_le Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_store_u64_le Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_store_u64_le Unexecuted instantiation: p_kem_asn1.c:CRYPTO_store_u64_le Unexecuted instantiation: print.c:CRYPTO_store_u64_le Unexecuted instantiation: ex_data.c:CRYPTO_store_u64_le Unexecuted instantiation: lhash.c:CRYPTO_store_u64_le Unexecuted instantiation: blake2.c:CRYPTO_store_u64_le Unexecuted instantiation: params.c:CRYPTO_store_u64_le |
1061 | | |
1062 | 0 | static inline uint64_t CRYPTO_load_u64_be(const void *ptr) { |
1063 | 0 | uint64_t ret; |
1064 | 0 | OPENSSL_memcpy(&ret, ptr, sizeof(ret)); |
1065 | | #if defined(OPENSSL_BIG_ENDIAN) |
1066 | | return ret; |
1067 | | #else |
1068 | 0 | return CRYPTO_bswap8(ret); |
1069 | 0 | #endif |
1070 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_load_u64_be Unexecuted instantiation: cbb.c:CRYPTO_load_u64_be Unexecuted instantiation: cbs.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: crypto.c:CRYPTO_load_u64_be Unexecuted instantiation: cfb.c:CRYPTO_load_u64_be Unexecuted instantiation: ec_asn1.c:CRYPTO_load_u64_be Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_load_u64_be Unexecuted instantiation: err.c:CRYPTO_load_u64_be Unexecuted instantiation: evp_asn1.c:CRYPTO_load_u64_be Unexecuted instantiation: p_methods.c:CRYPTO_load_u64_be Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_load_u64_be Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_load_u64_be Unexecuted instantiation: bcm.c:CRYPTO_load_u64_be Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_load_u64_be Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_load_u64_be Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_load_u64_be Unexecuted instantiation: mem.c:CRYPTO_load_u64_be Unexecuted instantiation: obj.c:CRYPTO_load_u64_be Unexecuted instantiation: obj_xref.c:CRYPTO_load_u64_be Unexecuted instantiation: poly1305_vec.c:CRYPTO_load_u64_be Unexecuted instantiation: forkunsafe.c:CRYPTO_load_u64_be Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:CRYPTO_load_u64_be Unexecuted instantiation: stack.c:CRYPTO_load_u64_be Unexecuted instantiation: thread_pthread.c:CRYPTO_load_u64_be Unexecuted instantiation: a_object.c:CRYPTO_load_u64_be Unexecuted instantiation: posix_time.c:CRYPTO_load_u64_be Unexecuted instantiation: bio.c:CRYPTO_load_u64_be Unexecuted instantiation: file.c:CRYPTO_load_u64_be Unexecuted instantiation: asn1_compat.c:CRYPTO_load_u64_be Unexecuted instantiation: chacha.c:CRYPTO_load_u64_be Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_load_u64_be Unexecuted instantiation: p_dh_asn1.c:CRYPTO_load_u64_be Unexecuted instantiation: p_dsa.c:CRYPTO_load_u64_be Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_load_u64_be Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_load_u64_be Unexecuted instantiation: p_kem_asn1.c:CRYPTO_load_u64_be Unexecuted instantiation: print.c:CRYPTO_load_u64_be Unexecuted instantiation: ex_data.c:CRYPTO_load_u64_be Unexecuted instantiation: lhash.c:CRYPTO_load_u64_be Unexecuted instantiation: blake2.c:CRYPTO_load_u64_be Unexecuted instantiation: params.c:CRYPTO_load_u64_be |
1071 | | |
1072 | 0 | static inline void CRYPTO_store_u64_be(void *out, uint64_t v) { |
1073 | | #if defined(OPENSSL_BIG_ENDIAN) |
1074 | | #else |
1075 | 0 | v = CRYPTO_bswap8(v); |
1076 | 0 | #endif |
1077 | 0 | OPENSSL_memcpy(out, &v, sizeof(v)); |
1078 | |
|
1079 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_store_u64_be Unexecuted instantiation: cbb.c:CRYPTO_store_u64_be Unexecuted instantiation: cbs.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: crypto.c:CRYPTO_store_u64_be Unexecuted instantiation: cfb.c:CRYPTO_store_u64_be Unexecuted instantiation: ec_asn1.c:CRYPTO_store_u64_be Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_store_u64_be Unexecuted instantiation: err.c:CRYPTO_store_u64_be Unexecuted instantiation: evp_asn1.c:CRYPTO_store_u64_be Unexecuted instantiation: p_methods.c:CRYPTO_store_u64_be Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_store_u64_be Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_store_u64_be Unexecuted instantiation: bcm.c:CRYPTO_store_u64_be Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_store_u64_be Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_store_u64_be Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_store_u64_be Unexecuted instantiation: mem.c:CRYPTO_store_u64_be Unexecuted instantiation: obj.c:CRYPTO_store_u64_be Unexecuted instantiation: obj_xref.c:CRYPTO_store_u64_be Unexecuted instantiation: poly1305_vec.c:CRYPTO_store_u64_be Unexecuted instantiation: forkunsafe.c:CRYPTO_store_u64_be Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:CRYPTO_store_u64_be Unexecuted instantiation: stack.c:CRYPTO_store_u64_be Unexecuted instantiation: thread_pthread.c:CRYPTO_store_u64_be Unexecuted instantiation: a_object.c:CRYPTO_store_u64_be Unexecuted instantiation: posix_time.c:CRYPTO_store_u64_be Unexecuted instantiation: bio.c:CRYPTO_store_u64_be Unexecuted instantiation: file.c:CRYPTO_store_u64_be Unexecuted instantiation: asn1_compat.c:CRYPTO_store_u64_be Unexecuted instantiation: chacha.c:CRYPTO_store_u64_be Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_store_u64_be Unexecuted instantiation: p_dh_asn1.c:CRYPTO_store_u64_be Unexecuted instantiation: p_dsa.c:CRYPTO_store_u64_be Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_store_u64_be Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_store_u64_be Unexecuted instantiation: p_kem_asn1.c:CRYPTO_store_u64_be Unexecuted instantiation: print.c:CRYPTO_store_u64_be Unexecuted instantiation: ex_data.c:CRYPTO_store_u64_be Unexecuted instantiation: lhash.c:CRYPTO_store_u64_be Unexecuted instantiation: blake2.c:CRYPTO_store_u64_be Unexecuted instantiation: params.c:CRYPTO_store_u64_be |
1080 | | |
1081 | 0 | static inline crypto_word_t CRYPTO_load_word_le(const void *in) { |
1082 | |
|
1083 | 0 | crypto_word_t v; |
1084 | 0 | OPENSSL_memcpy(&v, in, sizeof(v)); |
1085 | | #if defined(OPENSSL_BIG_ENDIAN) |
1086 | | return CRYPTO_bswap_word(v); |
1087 | | #else |
1088 | 0 | return v; |
1089 | 0 | #endif |
1090 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_load_word_le Unexecuted instantiation: cbb.c:CRYPTO_load_word_le Unexecuted instantiation: cbs.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: crypto.c:CRYPTO_load_word_le Unexecuted instantiation: cfb.c:CRYPTO_load_word_le Unexecuted instantiation: ec_asn1.c:CRYPTO_load_word_le Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_load_word_le Unexecuted instantiation: err.c:CRYPTO_load_word_le Unexecuted instantiation: evp_asn1.c:CRYPTO_load_word_le Unexecuted instantiation: p_methods.c:CRYPTO_load_word_le Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_load_word_le Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_load_word_le Unexecuted instantiation: bcm.c:CRYPTO_load_word_le Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_load_word_le Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_load_word_le Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_load_word_le Unexecuted instantiation: mem.c:CRYPTO_load_word_le Unexecuted instantiation: obj.c:CRYPTO_load_word_le Unexecuted instantiation: obj_xref.c:CRYPTO_load_word_le Unexecuted instantiation: poly1305_vec.c:CRYPTO_load_word_le Unexecuted instantiation: forkunsafe.c:CRYPTO_load_word_le Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:CRYPTO_load_word_le Unexecuted instantiation: stack.c:CRYPTO_load_word_le Unexecuted instantiation: thread_pthread.c:CRYPTO_load_word_le Unexecuted instantiation: a_object.c:CRYPTO_load_word_le Unexecuted instantiation: posix_time.c:CRYPTO_load_word_le Unexecuted instantiation: bio.c:CRYPTO_load_word_le Unexecuted instantiation: file.c:CRYPTO_load_word_le Unexecuted instantiation: asn1_compat.c:CRYPTO_load_word_le Unexecuted instantiation: chacha.c:CRYPTO_load_word_le Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_load_word_le Unexecuted instantiation: p_dh_asn1.c:CRYPTO_load_word_le Unexecuted instantiation: p_dsa.c:CRYPTO_load_word_le Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_load_word_le Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_load_word_le Unexecuted instantiation: p_kem_asn1.c:CRYPTO_load_word_le Unexecuted instantiation: print.c:CRYPTO_load_word_le Unexecuted instantiation: ex_data.c:CRYPTO_load_word_le Unexecuted instantiation: lhash.c:CRYPTO_load_word_le Unexecuted instantiation: blake2.c:CRYPTO_load_word_le Unexecuted instantiation: params.c:CRYPTO_load_word_le |
1091 | | |
1092 | 0 | static inline void CRYPTO_store_word_le(void *out, crypto_word_t v) { |
1093 | | |
1094 | |
|
1095 | | #if defined(OPENSSL_BIG_ENDIAN) |
1096 | | v = CRYPTO_bswap_word(v); |
1097 | | #endif |
1098 | 0 | OPENSSL_memcpy(out, &v, sizeof(v)); |
1099 | |
|
1100 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_store_word_le Unexecuted instantiation: cbb.c:CRYPTO_store_word_le Unexecuted instantiation: cbs.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: crypto.c:CRYPTO_store_word_le Unexecuted instantiation: cfb.c:CRYPTO_store_word_le Unexecuted instantiation: ec_asn1.c:CRYPTO_store_word_le Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_store_word_le Unexecuted instantiation: err.c:CRYPTO_store_word_le Unexecuted instantiation: evp_asn1.c:CRYPTO_store_word_le Unexecuted instantiation: p_methods.c:CRYPTO_store_word_le Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_store_word_le Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_store_word_le Unexecuted instantiation: bcm.c:CRYPTO_store_word_le Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_store_word_le Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_store_word_le Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_store_word_le Unexecuted instantiation: mem.c:CRYPTO_store_word_le Unexecuted instantiation: obj.c:CRYPTO_store_word_le Unexecuted instantiation: obj_xref.c:CRYPTO_store_word_le Unexecuted instantiation: poly1305_vec.c:CRYPTO_store_word_le Unexecuted instantiation: forkunsafe.c:CRYPTO_store_word_le Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:CRYPTO_store_word_le Unexecuted instantiation: stack.c:CRYPTO_store_word_le Unexecuted instantiation: thread_pthread.c:CRYPTO_store_word_le Unexecuted instantiation: a_object.c:CRYPTO_store_word_le Unexecuted instantiation: posix_time.c:CRYPTO_store_word_le Unexecuted instantiation: bio.c:CRYPTO_store_word_le Unexecuted instantiation: file.c:CRYPTO_store_word_le Unexecuted instantiation: asn1_compat.c:CRYPTO_store_word_le Unexecuted instantiation: chacha.c:CRYPTO_store_word_le Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_store_word_le Unexecuted instantiation: p_dh_asn1.c:CRYPTO_store_word_le Unexecuted instantiation: p_dsa.c:CRYPTO_store_word_le Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_store_word_le Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_store_word_le Unexecuted instantiation: p_kem_asn1.c:CRYPTO_store_word_le Unexecuted instantiation: print.c:CRYPTO_store_word_le Unexecuted instantiation: ex_data.c:CRYPTO_store_word_le Unexecuted instantiation: lhash.c:CRYPTO_store_word_le Unexecuted instantiation: blake2.c:CRYPTO_store_word_le Unexecuted instantiation: params.c:CRYPTO_store_word_le |
1101 | | |
1102 | 0 | static inline crypto_word_t CRYPTO_load_word_be(const void *in) { |
1103 | 0 | crypto_word_t v; |
1104 | 0 | OPENSSL_memcpy(&v, in, sizeof(v)); |
1105 | | #if defined(OPENSSL_BIG_ENDIAN) |
1106 | | return v; |
1107 | | #else |
1108 | 0 | #if defined(OPENSSL_64_BIT) |
1109 | 0 | assert(sizeof(v) == 8); |
1110 | 0 | return CRYPTO_bswap8(v); |
1111 | | #else |
1112 | | assert(sizeof(v) == 4); |
1113 | | return CRYPTO_bswap4(v); |
1114 | | #endif |
1115 | 0 | #endif |
1116 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_load_word_be Unexecuted instantiation: cbb.c:CRYPTO_load_word_be Unexecuted instantiation: cbs.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: crypto.c:CRYPTO_load_word_be Unexecuted instantiation: cfb.c:CRYPTO_load_word_be Unexecuted instantiation: ec_asn1.c:CRYPTO_load_word_be Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_load_word_be Unexecuted instantiation: err.c:CRYPTO_load_word_be Unexecuted instantiation: evp_asn1.c:CRYPTO_load_word_be Unexecuted instantiation: p_methods.c:CRYPTO_load_word_be Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_load_word_be Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_load_word_be Unexecuted instantiation: bcm.c:CRYPTO_load_word_be Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_load_word_be Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_load_word_be Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_load_word_be Unexecuted instantiation: mem.c:CRYPTO_load_word_be Unexecuted instantiation: obj.c:CRYPTO_load_word_be Unexecuted instantiation: obj_xref.c:CRYPTO_load_word_be Unexecuted instantiation: poly1305_vec.c:CRYPTO_load_word_be Unexecuted instantiation: forkunsafe.c:CRYPTO_load_word_be Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:CRYPTO_load_word_be Unexecuted instantiation: stack.c:CRYPTO_load_word_be Unexecuted instantiation: thread_pthread.c:CRYPTO_load_word_be Unexecuted instantiation: a_object.c:CRYPTO_load_word_be Unexecuted instantiation: posix_time.c:CRYPTO_load_word_be Unexecuted instantiation: bio.c:CRYPTO_load_word_be Unexecuted instantiation: file.c:CRYPTO_load_word_be Unexecuted instantiation: asn1_compat.c:CRYPTO_load_word_be Unexecuted instantiation: chacha.c:CRYPTO_load_word_be Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_load_word_be Unexecuted instantiation: p_dh_asn1.c:CRYPTO_load_word_be Unexecuted instantiation: p_dsa.c:CRYPTO_load_word_be Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_load_word_be Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_load_word_be Unexecuted instantiation: p_kem_asn1.c:CRYPTO_load_word_be Unexecuted instantiation: print.c:CRYPTO_load_word_be Unexecuted instantiation: ex_data.c:CRYPTO_load_word_be Unexecuted instantiation: lhash.c:CRYPTO_load_word_be Unexecuted instantiation: blake2.c:CRYPTO_load_word_be Unexecuted instantiation: params.c:CRYPTO_load_word_be |
1117 | | |
1118 | | // Bit rotation functions. |
1119 | | // |
1120 | | // Note these functions use |(-shift) & 31|, etc., because shifting by the bit |
1121 | | // width is undefined. Both Clang and GCC recognize this pattern as a rotation, |
1122 | | // but MSVC does not. Instead, we call MSVC's built-in functions. |
1123 | | |
1124 | 0 | static inline uint32_t CRYPTO_rotl_u32(uint32_t value, int shift) { |
1125 | | #if defined(_MSC_VER) |
1126 | | return _rotl(value, shift); |
1127 | | #else |
1128 | 0 | return (value << shift) | (value >> ((-shift) & 31)); |
1129 | 0 | #endif |
1130 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_rotl_u32 Unexecuted instantiation: cbb.c:CRYPTO_rotl_u32 Unexecuted instantiation: cbs.c:CRYPTO_rotl_u32 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_rotl_u32 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_rotl_u32 Unexecuted instantiation: crypto.c:CRYPTO_rotl_u32 Unexecuted instantiation: cfb.c:CRYPTO_rotl_u32 Unexecuted instantiation: ec_asn1.c:CRYPTO_rotl_u32 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_rotl_u32 Unexecuted instantiation: err.c:CRYPTO_rotl_u32 Unexecuted instantiation: evp_asn1.c:CRYPTO_rotl_u32 Unexecuted instantiation: p_methods.c:CRYPTO_rotl_u32 Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_rotl_u32 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_rotl_u32 Unexecuted instantiation: bcm.c:CRYPTO_rotl_u32 Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_rotl_u32 Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_rotl_u32 Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_rotl_u32 Unexecuted instantiation: mem.c:CRYPTO_rotl_u32 Unexecuted instantiation: obj.c:CRYPTO_rotl_u32 Unexecuted instantiation: obj_xref.c:CRYPTO_rotl_u32 Unexecuted instantiation: poly1305_vec.c:CRYPTO_rotl_u32 Unexecuted instantiation: forkunsafe.c:CRYPTO_rotl_u32 Unexecuted instantiation: refcount_c11.c:CRYPTO_rotl_u32 Unexecuted instantiation: rsa_asn1.c:CRYPTO_rotl_u32 Unexecuted instantiation: rsa_crypt.c:CRYPTO_rotl_u32 Unexecuted instantiation: rsassa_pss_asn1.c:CRYPTO_rotl_u32 Unexecuted instantiation: stack.c:CRYPTO_rotl_u32 Unexecuted instantiation: thread_pthread.c:CRYPTO_rotl_u32 Unexecuted instantiation: a_object.c:CRYPTO_rotl_u32 Unexecuted instantiation: posix_time.c:CRYPTO_rotl_u32 Unexecuted instantiation: bio.c:CRYPTO_rotl_u32 Unexecuted instantiation: file.c:CRYPTO_rotl_u32 Unexecuted instantiation: asn1_compat.c:CRYPTO_rotl_u32 Unexecuted instantiation: chacha.c:CRYPTO_rotl_u32 Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_rotl_u32 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_rotl_u32 Unexecuted instantiation: p_dsa.c:CRYPTO_rotl_u32 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_rotl_u32 Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_rotl_u32 Unexecuted instantiation: p_kem_asn1.c:CRYPTO_rotl_u32 Unexecuted instantiation: print.c:CRYPTO_rotl_u32 Unexecuted instantiation: ex_data.c:CRYPTO_rotl_u32 Unexecuted instantiation: lhash.c:CRYPTO_rotl_u32 Unexecuted instantiation: blake2.c:CRYPTO_rotl_u32 Unexecuted instantiation: params.c:CRYPTO_rotl_u32 |
1131 | | |
1132 | 0 | static inline uint32_t CRYPTO_rotr_u32(uint32_t value, int shift) { |
1133 | 0 | #if defined(_MSC_VER) |
1134 | 0 | return _rotr(value, shift); |
1135 | 0 | #else |
1136 | 0 | return (value >> shift) | (value << ((-shift) & 31)); |
1137 | 0 | #endif |
1138 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_rotr_u32 Unexecuted instantiation: cbb.c:CRYPTO_rotr_u32 Unexecuted instantiation: cbs.c:CRYPTO_rotr_u32 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_rotr_u32 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_rotr_u32 Unexecuted instantiation: crypto.c:CRYPTO_rotr_u32 Unexecuted instantiation: cfb.c:CRYPTO_rotr_u32 Unexecuted instantiation: ec_asn1.c:CRYPTO_rotr_u32 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_rotr_u32 Unexecuted instantiation: err.c:CRYPTO_rotr_u32 Unexecuted instantiation: evp_asn1.c:CRYPTO_rotr_u32 Unexecuted instantiation: p_methods.c:CRYPTO_rotr_u32 Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_rotr_u32 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_rotr_u32 Unexecuted instantiation: bcm.c:CRYPTO_rotr_u32 Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_rotr_u32 Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_rotr_u32 Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_rotr_u32 Unexecuted instantiation: mem.c:CRYPTO_rotr_u32 Unexecuted instantiation: obj.c:CRYPTO_rotr_u32 Unexecuted instantiation: obj_xref.c:CRYPTO_rotr_u32 Unexecuted instantiation: poly1305_vec.c:CRYPTO_rotr_u32 Unexecuted instantiation: forkunsafe.c:CRYPTO_rotr_u32 Unexecuted instantiation: refcount_c11.c:CRYPTO_rotr_u32 Unexecuted instantiation: rsa_asn1.c:CRYPTO_rotr_u32 Unexecuted instantiation: rsa_crypt.c:CRYPTO_rotr_u32 Unexecuted instantiation: rsassa_pss_asn1.c:CRYPTO_rotr_u32 Unexecuted instantiation: stack.c:CRYPTO_rotr_u32 Unexecuted instantiation: thread_pthread.c:CRYPTO_rotr_u32 Unexecuted instantiation: a_object.c:CRYPTO_rotr_u32 Unexecuted instantiation: posix_time.c:CRYPTO_rotr_u32 Unexecuted instantiation: bio.c:CRYPTO_rotr_u32 Unexecuted instantiation: file.c:CRYPTO_rotr_u32 Unexecuted instantiation: asn1_compat.c:CRYPTO_rotr_u32 Unexecuted instantiation: chacha.c:CRYPTO_rotr_u32 Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_rotr_u32 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_rotr_u32 Unexecuted instantiation: p_dsa.c:CRYPTO_rotr_u32 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_rotr_u32 Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_rotr_u32 Unexecuted instantiation: p_kem_asn1.c:CRYPTO_rotr_u32 Unexecuted instantiation: print.c:CRYPTO_rotr_u32 Unexecuted instantiation: ex_data.c:CRYPTO_rotr_u32 Unexecuted instantiation: lhash.c:CRYPTO_rotr_u32 Unexecuted instantiation: blake2.c:CRYPTO_rotr_u32 Unexecuted instantiation: params.c:CRYPTO_rotr_u32 |
1139 | | |
1140 | 0 | static inline uint64_t CRYPTO_rotl_u64(uint64_t value, int shift) { |
1141 | 0 | #if defined(_MSC_VER) |
1142 | 0 | return _rotl64(value, shift); |
1143 | 0 | #else |
1144 | 0 | return (value << shift) | (value >> ((-shift) & 63)); |
1145 | 0 | #endif |
1146 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_rotl_u64 Unexecuted instantiation: cbb.c:CRYPTO_rotl_u64 Unexecuted instantiation: cbs.c:CRYPTO_rotl_u64 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_rotl_u64 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_rotl_u64 Unexecuted instantiation: crypto.c:CRYPTO_rotl_u64 Unexecuted instantiation: cfb.c:CRYPTO_rotl_u64 Unexecuted instantiation: ec_asn1.c:CRYPTO_rotl_u64 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_rotl_u64 Unexecuted instantiation: err.c:CRYPTO_rotl_u64 Unexecuted instantiation: evp_asn1.c:CRYPTO_rotl_u64 Unexecuted instantiation: p_methods.c:CRYPTO_rotl_u64 Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_rotl_u64 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_rotl_u64 Unexecuted instantiation: bcm.c:CRYPTO_rotl_u64 Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_rotl_u64 Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_rotl_u64 Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_rotl_u64 Unexecuted instantiation: mem.c:CRYPTO_rotl_u64 Unexecuted instantiation: obj.c:CRYPTO_rotl_u64 Unexecuted instantiation: obj_xref.c:CRYPTO_rotl_u64 Unexecuted instantiation: poly1305_vec.c:CRYPTO_rotl_u64 Unexecuted instantiation: forkunsafe.c:CRYPTO_rotl_u64 Unexecuted instantiation: refcount_c11.c:CRYPTO_rotl_u64 Unexecuted instantiation: rsa_asn1.c:CRYPTO_rotl_u64 Unexecuted instantiation: rsa_crypt.c:CRYPTO_rotl_u64 Unexecuted instantiation: rsassa_pss_asn1.c:CRYPTO_rotl_u64 Unexecuted instantiation: stack.c:CRYPTO_rotl_u64 Unexecuted instantiation: thread_pthread.c:CRYPTO_rotl_u64 Unexecuted instantiation: a_object.c:CRYPTO_rotl_u64 Unexecuted instantiation: posix_time.c:CRYPTO_rotl_u64 Unexecuted instantiation: bio.c:CRYPTO_rotl_u64 Unexecuted instantiation: file.c:CRYPTO_rotl_u64 Unexecuted instantiation: asn1_compat.c:CRYPTO_rotl_u64 Unexecuted instantiation: chacha.c:CRYPTO_rotl_u64 Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_rotl_u64 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_rotl_u64 Unexecuted instantiation: p_dsa.c:CRYPTO_rotl_u64 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_rotl_u64 Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_rotl_u64 Unexecuted instantiation: p_kem_asn1.c:CRYPTO_rotl_u64 Unexecuted instantiation: print.c:CRYPTO_rotl_u64 Unexecuted instantiation: ex_data.c:CRYPTO_rotl_u64 Unexecuted instantiation: lhash.c:CRYPTO_rotl_u64 Unexecuted instantiation: blake2.c:CRYPTO_rotl_u64 Unexecuted instantiation: params.c:CRYPTO_rotl_u64 |
1147 | | |
1148 | 0 | static inline uint64_t CRYPTO_rotr_u64(uint64_t value, int shift) { |
1149 | | #if defined(_MSC_VER) |
1150 | | return _rotr64(value, shift); |
1151 | | #else |
1152 | 0 | return (value >> shift) | (value << ((-shift) & 63)); |
1153 | 0 | #endif |
1154 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_rotr_u64 Unexecuted instantiation: cbb.c:CRYPTO_rotr_u64 Unexecuted instantiation: cbs.c:CRYPTO_rotr_u64 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_rotr_u64 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_rotr_u64 Unexecuted instantiation: crypto.c:CRYPTO_rotr_u64 Unexecuted instantiation: cfb.c:CRYPTO_rotr_u64 Unexecuted instantiation: ec_asn1.c:CRYPTO_rotr_u64 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_rotr_u64 Unexecuted instantiation: err.c:CRYPTO_rotr_u64 Unexecuted instantiation: evp_asn1.c:CRYPTO_rotr_u64 Unexecuted instantiation: p_methods.c:CRYPTO_rotr_u64 Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_rotr_u64 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_rotr_u64 Unexecuted instantiation: bcm.c:CRYPTO_rotr_u64 Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_rotr_u64 Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_rotr_u64 Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_rotr_u64 Unexecuted instantiation: mem.c:CRYPTO_rotr_u64 Unexecuted instantiation: obj.c:CRYPTO_rotr_u64 Unexecuted instantiation: obj_xref.c:CRYPTO_rotr_u64 Unexecuted instantiation: poly1305_vec.c:CRYPTO_rotr_u64 Unexecuted instantiation: forkunsafe.c:CRYPTO_rotr_u64 Unexecuted instantiation: refcount_c11.c:CRYPTO_rotr_u64 Unexecuted instantiation: rsa_asn1.c:CRYPTO_rotr_u64 Unexecuted instantiation: rsa_crypt.c:CRYPTO_rotr_u64 Unexecuted instantiation: rsassa_pss_asn1.c:CRYPTO_rotr_u64 Unexecuted instantiation: stack.c:CRYPTO_rotr_u64 Unexecuted instantiation: thread_pthread.c:CRYPTO_rotr_u64 Unexecuted instantiation: a_object.c:CRYPTO_rotr_u64 Unexecuted instantiation: posix_time.c:CRYPTO_rotr_u64 Unexecuted instantiation: bio.c:CRYPTO_rotr_u64 Unexecuted instantiation: file.c:CRYPTO_rotr_u64 Unexecuted instantiation: asn1_compat.c:CRYPTO_rotr_u64 Unexecuted instantiation: chacha.c:CRYPTO_rotr_u64 Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_rotr_u64 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_rotr_u64 Unexecuted instantiation: p_dsa.c:CRYPTO_rotr_u64 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_rotr_u64 Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_rotr_u64 Unexecuted instantiation: p_kem_asn1.c:CRYPTO_rotr_u64 Unexecuted instantiation: print.c:CRYPTO_rotr_u64 Unexecuted instantiation: ex_data.c:CRYPTO_rotr_u64 Unexecuted instantiation: lhash.c:CRYPTO_rotr_u64 Unexecuted instantiation: blake2.c:CRYPTO_rotr_u64 Unexecuted instantiation: params.c:CRYPTO_rotr_u64 |
1155 | | |
1156 | | |
1157 | | // Arithmetic functions. |
1158 | | |
1159 | | // The most efficient versions of these functions on GCC and Clang depend on C11 |
1160 | | // |_Generic|. If we ever need to call these from C++, we'll need to add a |
1161 | | // variant that uses C++ overloads instead. |
1162 | | #if !defined(__cplusplus) |
1163 | | |
1164 | | // CRYPTO_addc_* returns |x + y + carry|, and sets |*out_carry| to the carry |
1165 | | // bit. |carry| must be zero or one. |
1166 | | #if OPENSSL_HAS_BUILTIN(__builtin_addc) |
1167 | | |
1168 | | #define CRYPTO_GENERIC_ADDC(x, y, carry, out_carry) \ |
1169 | 0 | (_Generic((x), \ |
1170 | 0 | unsigned: __builtin_addc, \ |
1171 | 0 | unsigned long: __builtin_addcl, \ |
1172 | 0 | unsigned long long: __builtin_addcll))((x), (y), (carry), (out_carry)) |
1173 | | |
1174 | | static inline uint32_t CRYPTO_addc_u32(uint32_t x, uint32_t y, uint32_t carry, |
1175 | 0 | uint32_t *out_carry) { |
1176 | 0 | declassify_assert(carry <= 1); |
1177 | 0 | return CRYPTO_GENERIC_ADDC(x, y, carry, out_carry); |
1178 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_addc_u32 Unexecuted instantiation: cbb.c:CRYPTO_addc_u32 Unexecuted instantiation: cbs.c:CRYPTO_addc_u32 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_addc_u32 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_addc_u32 Unexecuted instantiation: crypto.c:CRYPTO_addc_u32 Unexecuted instantiation: cfb.c:CRYPTO_addc_u32 Unexecuted instantiation: ec_asn1.c:CRYPTO_addc_u32 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_addc_u32 Unexecuted instantiation: err.c:CRYPTO_addc_u32 Unexecuted instantiation: evp_asn1.c:CRYPTO_addc_u32 Unexecuted instantiation: p_methods.c:CRYPTO_addc_u32 Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_addc_u32 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_addc_u32 Unexecuted instantiation: bcm.c:CRYPTO_addc_u32 Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_addc_u32 Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_addc_u32 Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_addc_u32 Unexecuted instantiation: mem.c:CRYPTO_addc_u32 Unexecuted instantiation: obj.c:CRYPTO_addc_u32 Unexecuted instantiation: obj_xref.c:CRYPTO_addc_u32 Unexecuted instantiation: poly1305_vec.c:CRYPTO_addc_u32 Unexecuted instantiation: forkunsafe.c:CRYPTO_addc_u32 Unexecuted instantiation: refcount_c11.c:CRYPTO_addc_u32 Unexecuted instantiation: rsa_asn1.c:CRYPTO_addc_u32 Unexecuted instantiation: rsa_crypt.c:CRYPTO_addc_u32 Unexecuted instantiation: rsassa_pss_asn1.c:CRYPTO_addc_u32 Unexecuted instantiation: stack.c:CRYPTO_addc_u32 Unexecuted instantiation: thread_pthread.c:CRYPTO_addc_u32 Unexecuted instantiation: a_object.c:CRYPTO_addc_u32 Unexecuted instantiation: posix_time.c:CRYPTO_addc_u32 Unexecuted instantiation: bio.c:CRYPTO_addc_u32 Unexecuted instantiation: file.c:CRYPTO_addc_u32 Unexecuted instantiation: asn1_compat.c:CRYPTO_addc_u32 Unexecuted instantiation: chacha.c:CRYPTO_addc_u32 Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_addc_u32 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_addc_u32 Unexecuted instantiation: p_dsa.c:CRYPTO_addc_u32 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_addc_u32 Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_addc_u32 Unexecuted instantiation: p_kem_asn1.c:CRYPTO_addc_u32 Unexecuted instantiation: print.c:CRYPTO_addc_u32 Unexecuted instantiation: ex_data.c:CRYPTO_addc_u32 Unexecuted instantiation: lhash.c:CRYPTO_addc_u32 Unexecuted instantiation: blake2.c:CRYPTO_addc_u32 Unexecuted instantiation: params.c:CRYPTO_addc_u32 |
1179 | | |
1180 | | static inline uint64_t CRYPTO_addc_u64(uint64_t x, uint64_t y, uint64_t carry, |
1181 | 0 | uint64_t *out_carry) { |
1182 | 0 | declassify_assert(carry <= 1); |
1183 | 0 | return CRYPTO_GENERIC_ADDC(x, y, carry, out_carry); |
1184 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_addc_u64 Unexecuted instantiation: cbb.c:CRYPTO_addc_u64 Unexecuted instantiation: cbs.c:CRYPTO_addc_u64 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_addc_u64 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_addc_u64 Unexecuted instantiation: crypto.c:CRYPTO_addc_u64 Unexecuted instantiation: cfb.c:CRYPTO_addc_u64 Unexecuted instantiation: ec_asn1.c:CRYPTO_addc_u64 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_addc_u64 Unexecuted instantiation: err.c:CRYPTO_addc_u64 Unexecuted instantiation: evp_asn1.c:CRYPTO_addc_u64 Unexecuted instantiation: p_methods.c:CRYPTO_addc_u64 Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_addc_u64 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_addc_u64 Unexecuted instantiation: bcm.c:CRYPTO_addc_u64 Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_addc_u64 Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_addc_u64 Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_addc_u64 Unexecuted instantiation: mem.c:CRYPTO_addc_u64 Unexecuted instantiation: obj.c:CRYPTO_addc_u64 Unexecuted instantiation: obj_xref.c:CRYPTO_addc_u64 Unexecuted instantiation: poly1305_vec.c:CRYPTO_addc_u64 Unexecuted instantiation: forkunsafe.c:CRYPTO_addc_u64 Unexecuted instantiation: refcount_c11.c:CRYPTO_addc_u64 Unexecuted instantiation: rsa_asn1.c:CRYPTO_addc_u64 Unexecuted instantiation: rsa_crypt.c:CRYPTO_addc_u64 Unexecuted instantiation: rsassa_pss_asn1.c:CRYPTO_addc_u64 Unexecuted instantiation: stack.c:CRYPTO_addc_u64 Unexecuted instantiation: thread_pthread.c:CRYPTO_addc_u64 Unexecuted instantiation: a_object.c:CRYPTO_addc_u64 Unexecuted instantiation: posix_time.c:CRYPTO_addc_u64 Unexecuted instantiation: bio.c:CRYPTO_addc_u64 Unexecuted instantiation: file.c:CRYPTO_addc_u64 Unexecuted instantiation: asn1_compat.c:CRYPTO_addc_u64 Unexecuted instantiation: chacha.c:CRYPTO_addc_u64 Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_addc_u64 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_addc_u64 Unexecuted instantiation: p_dsa.c:CRYPTO_addc_u64 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_addc_u64 Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_addc_u64 Unexecuted instantiation: p_kem_asn1.c:CRYPTO_addc_u64 Unexecuted instantiation: print.c:CRYPTO_addc_u64 Unexecuted instantiation: ex_data.c:CRYPTO_addc_u64 Unexecuted instantiation: lhash.c:CRYPTO_addc_u64 Unexecuted instantiation: blake2.c:CRYPTO_addc_u64 Unexecuted instantiation: params.c:CRYPTO_addc_u64 |
1185 | | |
1186 | | #else |
1187 | | |
1188 | | static inline uint32_t CRYPTO_addc_u32(uint32_t x, uint32_t y, uint32_t carry, |
1189 | | uint32_t *out_carry) { |
1190 | | declassify_assert(carry <= 1); |
1191 | | uint64_t ret = carry; |
1192 | | ret += (uint64_t)x + y; |
1193 | | *out_carry = (uint32_t)(ret >> 32); |
1194 | | return (uint32_t)ret; |
1195 | | } |
1196 | | |
1197 | | static inline uint64_t CRYPTO_addc_u64(uint64_t x, uint64_t y, uint64_t carry, |
1198 | | uint64_t *out_carry) { |
1199 | | declassify_assert(carry <= 1); |
1200 | | #if defined(BORINGSSL_HAS_UINT128) |
1201 | | uint128_t ret = carry; |
1202 | | ret += (uint128_t)x + y; |
1203 | | *out_carry = (uint64_t)(ret >> 64); |
1204 | | return (uint64_t)ret; |
1205 | | #else |
1206 | | x += carry; |
1207 | | carry = x < carry; |
1208 | | uint64_t ret = x + y; |
1209 | | carry += ret < x; |
1210 | | *out_carry = carry; |
1211 | | return ret; |
1212 | | #endif |
1213 | | } |
1214 | | #endif |
1215 | | |
1216 | | // CRYPTO_subc_* returns |x - y - borrow|, and sets |*out_borrow| to the borrow |
1217 | | // bit. |borrow| must be zero or one. |
1218 | | #if OPENSSL_HAS_BUILTIN(__builtin_subc) |
1219 | | |
1220 | | #define CRYPTO_GENERIC_SUBC(x, y, borrow, out_borrow) \ |
1221 | 0 | (_Generic((x), \ |
1222 | 0 | unsigned: __builtin_subc, \ |
1223 | 0 | unsigned long: __builtin_subcl, \ |
1224 | 0 | unsigned long long: __builtin_subcll))((x), (y), (borrow), (out_borrow)) |
1225 | | |
1226 | | static inline uint32_t CRYPTO_subc_u32(uint32_t x, uint32_t y, uint32_t borrow, |
1227 | 0 | uint32_t *out_borrow) { |
1228 | 0 | declassify_assert(borrow <= 1); |
1229 | 0 | return CRYPTO_GENERIC_SUBC(x, y, borrow, out_borrow); |
1230 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_subc_u32 Unexecuted instantiation: cbb.c:CRYPTO_subc_u32 Unexecuted instantiation: cbs.c:CRYPTO_subc_u32 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_subc_u32 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_subc_u32 Unexecuted instantiation: crypto.c:CRYPTO_subc_u32 Unexecuted instantiation: cfb.c:CRYPTO_subc_u32 Unexecuted instantiation: ec_asn1.c:CRYPTO_subc_u32 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_subc_u32 Unexecuted instantiation: err.c:CRYPTO_subc_u32 Unexecuted instantiation: evp_asn1.c:CRYPTO_subc_u32 Unexecuted instantiation: p_methods.c:CRYPTO_subc_u32 Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_subc_u32 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_subc_u32 Unexecuted instantiation: bcm.c:CRYPTO_subc_u32 Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_subc_u32 Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_subc_u32 Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_subc_u32 Unexecuted instantiation: mem.c:CRYPTO_subc_u32 Unexecuted instantiation: obj.c:CRYPTO_subc_u32 Unexecuted instantiation: obj_xref.c:CRYPTO_subc_u32 Unexecuted instantiation: poly1305_vec.c:CRYPTO_subc_u32 Unexecuted instantiation: forkunsafe.c:CRYPTO_subc_u32 Unexecuted instantiation: refcount_c11.c:CRYPTO_subc_u32 Unexecuted instantiation: rsa_asn1.c:CRYPTO_subc_u32 Unexecuted instantiation: rsa_crypt.c:CRYPTO_subc_u32 Unexecuted instantiation: rsassa_pss_asn1.c:CRYPTO_subc_u32 Unexecuted instantiation: stack.c:CRYPTO_subc_u32 Unexecuted instantiation: thread_pthread.c:CRYPTO_subc_u32 Unexecuted instantiation: a_object.c:CRYPTO_subc_u32 Unexecuted instantiation: posix_time.c:CRYPTO_subc_u32 Unexecuted instantiation: bio.c:CRYPTO_subc_u32 Unexecuted instantiation: file.c:CRYPTO_subc_u32 Unexecuted instantiation: asn1_compat.c:CRYPTO_subc_u32 Unexecuted instantiation: chacha.c:CRYPTO_subc_u32 Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_subc_u32 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_subc_u32 Unexecuted instantiation: p_dsa.c:CRYPTO_subc_u32 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_subc_u32 Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_subc_u32 Unexecuted instantiation: p_kem_asn1.c:CRYPTO_subc_u32 Unexecuted instantiation: print.c:CRYPTO_subc_u32 Unexecuted instantiation: ex_data.c:CRYPTO_subc_u32 Unexecuted instantiation: lhash.c:CRYPTO_subc_u32 Unexecuted instantiation: blake2.c:CRYPTO_subc_u32 Unexecuted instantiation: params.c:CRYPTO_subc_u32 |
1231 | | |
1232 | | static inline uint64_t CRYPTO_subc_u64(uint64_t x, uint64_t y, uint64_t borrow, |
1233 | 0 | uint64_t *out_borrow) { |
1234 | 0 | declassify_assert(borrow <= 1); |
1235 | 0 | return CRYPTO_GENERIC_SUBC(x, y, borrow, out_borrow); |
1236 | 0 | } Unexecuted instantiation: convert.c:CRYPTO_subc_u64 Unexecuted instantiation: cbb.c:CRYPTO_subc_u64 Unexecuted instantiation: cbs.c:CRYPTO_subc_u64 Unexecuted instantiation: e_aesgcmsiv.c:CRYPTO_subc_u64 Unexecuted instantiation: e_chacha20poly1305.c:CRYPTO_subc_u64 Unexecuted instantiation: crypto.c:CRYPTO_subc_u64 Unexecuted instantiation: cfb.c:CRYPTO_subc_u64 Unexecuted instantiation: ec_asn1.c:CRYPTO_subc_u64 Unexecuted instantiation: ecdsa_asn1.c:CRYPTO_subc_u64 Unexecuted instantiation: err.c:CRYPTO_subc_u64 Unexecuted instantiation: evp_asn1.c:CRYPTO_subc_u64 Unexecuted instantiation: p_methods.c:CRYPTO_subc_u64 Unexecuted instantiation: p_pqdsa_asn1.c:CRYPTO_subc_u64 Unexecuted instantiation: p_x25519_asn1.c:CRYPTO_subc_u64 Unexecuted instantiation: bcm.c:CRYPTO_subc_u64 Unexecuted instantiation: kyber1024r3_ref.c:CRYPTO_subc_u64 Unexecuted instantiation: kyber512r3_ref.c:CRYPTO_subc_u64 Unexecuted instantiation: kyber768r3_ref.c:CRYPTO_subc_u64 Unexecuted instantiation: mem.c:CRYPTO_subc_u64 Unexecuted instantiation: obj.c:CRYPTO_subc_u64 Unexecuted instantiation: obj_xref.c:CRYPTO_subc_u64 Unexecuted instantiation: poly1305_vec.c:CRYPTO_subc_u64 Unexecuted instantiation: forkunsafe.c:CRYPTO_subc_u64 Unexecuted instantiation: refcount_c11.c:CRYPTO_subc_u64 Unexecuted instantiation: rsa_asn1.c:CRYPTO_subc_u64 Unexecuted instantiation: rsa_crypt.c:CRYPTO_subc_u64 Unexecuted instantiation: rsassa_pss_asn1.c:CRYPTO_subc_u64 Unexecuted instantiation: stack.c:CRYPTO_subc_u64 Unexecuted instantiation: thread_pthread.c:CRYPTO_subc_u64 Unexecuted instantiation: a_object.c:CRYPTO_subc_u64 Unexecuted instantiation: posix_time.c:CRYPTO_subc_u64 Unexecuted instantiation: bio.c:CRYPTO_subc_u64 Unexecuted instantiation: file.c:CRYPTO_subc_u64 Unexecuted instantiation: asn1_compat.c:CRYPTO_subc_u64 Unexecuted instantiation: chacha.c:CRYPTO_subc_u64 Unexecuted instantiation: ripemd.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: engine.c:CRYPTO_subc_u64 Unexecuted instantiation: p_dh_asn1.c:CRYPTO_subc_u64 Unexecuted instantiation: p_dsa.c:CRYPTO_subc_u64 Unexecuted instantiation: p_ed25519_asn1.c:CRYPTO_subc_u64 Unexecuted instantiation: p_hmac_asn1.c:CRYPTO_subc_u64 Unexecuted instantiation: p_kem_asn1.c:CRYPTO_subc_u64 Unexecuted instantiation: print.c:CRYPTO_subc_u64 Unexecuted instantiation: ex_data.c:CRYPTO_subc_u64 Unexecuted instantiation: lhash.c:CRYPTO_subc_u64 Unexecuted instantiation: blake2.c:CRYPTO_subc_u64 Unexecuted instantiation: params.c:CRYPTO_subc_u64 |
1237 | | |
1238 | | #else |
1239 | | |
1240 | | static inline uint32_t CRYPTO_subc_u32(uint32_t x, uint32_t y, uint32_t borrow, |
1241 | | uint32_t *out_borrow) { |
1242 | | declassify_assert(borrow <= 1); |
1243 | | uint32_t ret = x - y - borrow; |
1244 | | *out_borrow = (x < y) | ((x == y) & borrow); |
1245 | | return ret; |
1246 | | } |
1247 | | |
1248 | | static inline uint64_t CRYPTO_subc_u64(uint64_t x, uint64_t y, uint64_t borrow, |
1249 | | uint64_t *out_borrow) { |
1250 | | declassify_assert(borrow <= 1); |
1251 | | uint64_t ret = x - y - borrow; |
1252 | | *out_borrow = (x < y) | ((x == y) & borrow); |
1253 | | return ret; |
1254 | | } |
1255 | | #endif |
1256 | | |
1257 | | #if defined(OPENSSL_64_BIT) |
1258 | 0 | #define CRYPTO_addc_w CRYPTO_addc_u64 |
1259 | 0 | #define CRYPTO_subc_w CRYPTO_subc_u64 |
1260 | | #else |
1261 | | #define CRYPTO_addc_w CRYPTO_addc_u32 |
1262 | | #define CRYPTO_subc_w CRYPTO_subc_u32 |
1263 | | #endif |
1264 | | |
1265 | | #endif // !__cplusplus |
1266 | | |
1267 | | |
1268 | | // FIPS functions. |
1269 | | |
1270 | | #if defined(BORINGSSL_FIPS) |
1271 | | |
1272 | | // AWS_LC_FIPS_failure is called when a FIPS power-on or continuous test |
1273 | | // fails. The behavior depends on how AWS-LC is built: |
1274 | | // - When AWS-LC is not in FIPS mode it prints |message| to |stderr|. |
1275 | | // - If AWS-LC is built with FIPS it prints |message| to |stderr| and prevents |
1276 | | // any further cryptographic operations by the current process. |
1277 | | // - If AWS-LC is built with FIPS, AWSLC_FIPS_FAILURE_CALLBACK, and the |
1278 | | // application does not define the AWS_LC_fips_failure_callback function |
1279 | | // the normal behavior FIPS behavior is used. |
1280 | | // - If AWS-LC is built with FIPS, AWSLC_FIPS_FAILURE_CALLBACK, and the |
1281 | | // application defines the AWS_LC_fips_failure_callback function that |
1282 | | // function is called with |message|. |
1283 | | #if defined(AWSLC_FIPS_FAILURE_CALLBACK) |
1284 | | void AWS_LC_FIPS_failure(const char* message); |
1285 | | #else |
1286 | | #if defined(_MSC_VER) |
1287 | | __declspec(noreturn) void AWS_LC_FIPS_failure(const char* message); |
1288 | | #else |
1289 | | void AWS_LC_FIPS_failure(const char* message) __attribute__((noreturn)); |
1290 | | #endif |
1291 | | #endif |
1292 | | // boringssl_self_test_startup runs all startup self tests and returns one on |
1293 | | // success or zero on error. Startup self tests do not include lazy tests. |
1294 | | // Call |BORINGSSL_self_test| to run every self test. |
1295 | | int boringssl_self_test_startup(void); |
1296 | | |
1297 | | // boringssl_ensure_rsa_self_test checks whether the RSA self-test has been run |
1298 | | // in this address space. If not, it runs it and crashes the address space if |
1299 | | // unsuccessful. |
1300 | | void boringssl_ensure_rsa_self_test(void); |
1301 | | |
1302 | | // boringssl_ensure_ecc_self_test checks whether the ECDSA and ECDH self-test |
1303 | | // has been run in this address space. If not, it runs it and crashes the |
1304 | | // address space if unsuccessful. |
1305 | | void boringssl_ensure_ecc_self_test(void); |
1306 | | |
1307 | | // boringssl_ensure_ffdh_self_test checks whether the FFDH self-test has been |
1308 | | // run in this address space. If not, it runs it and crashes the address space |
1309 | | // if unsuccessful. |
1310 | | void boringssl_ensure_ffdh_self_test(void); |
1311 | | |
1312 | | // boringssl_ensure_ml_kem_self_test checks whether the ML-KEM self-test |
1313 | | // has been run in this address space. If not, it runs it and crashes the |
1314 | | // address space if unsuccessful. |
1315 | | void boringssl_ensure_ml_kem_self_test(void); |
1316 | | |
1317 | | // boringssl_ensure_ml_dsa_self_test checks whether the ML-DSA self-test |
1318 | | // has been run in this address space. If not, it runs it and crashes the |
1319 | | // address space if unsuccessful. |
1320 | | void boringssl_ensure_ml_dsa_self_test(void); |
1321 | | |
1322 | | // boringssl_ensure_eddsa_self_test checks whether the EdDSA self-test |
1323 | | // has been run in this address space. If not, it runs it and crashes the |
1324 | | // address space if unsuccessful. |
1325 | | void boringssl_ensure_eddsa_self_test(void); |
1326 | | |
1327 | | // boringssl_ensure_hasheddsa_self_test checks whether the HashEdDSA self-test |
1328 | | // has been run in this address space. If not, it runs it and crashes the |
1329 | | // address space if unsuccessful. |
1330 | | void boringssl_ensure_hasheddsa_self_test(void); |
1331 | | |
1332 | | #else |
1333 | | |
1334 | | // Outside of FIPS mode, the lazy tests are no-ops. |
1335 | | |
1336 | 0 | OPENSSL_INLINE void boringssl_ensure_rsa_self_test(void) {} Unexecuted instantiation: convert.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: e_aesgcmsiv.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: e_chacha20poly1305.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: crypto.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: cfb.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: ec_asn1.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: ecdsa_asn1.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: err.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: evp_asn1.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: p_methods.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: p_pqdsa_asn1.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: p_x25519_asn1.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: bcm.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: kyber1024r3_ref.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: kyber512r3_ref.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: kyber768r3_ref.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: obj_xref.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: poly1305_vec.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: forkunsafe.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.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: a_object.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: posix_time.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: bio.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: file.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: asn1_compat.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: chacha.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: ripemd.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: engine.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: p_dh_asn1.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: p_dsa.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: p_ed25519_asn1.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: p_hmac_asn1.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: p_kem_asn1.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: print.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: ex_data.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: lhash.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: blake2.c:boringssl_ensure_rsa_self_test Unexecuted instantiation: params.c:boringssl_ensure_rsa_self_test |
1337 | 0 | OPENSSL_INLINE void boringssl_ensure_ecc_self_test(void) {} Unexecuted instantiation: convert.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: cbb.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: cbs.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: crypto.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: cfb.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: ec_asn1.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: ecdsa_asn1.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: err.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: evp_asn1.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: p_methods.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: p_pqdsa_asn1.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: p_x25519_asn1.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: bcm.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: kyber1024r3_ref.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: kyber512r3_ref.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: kyber768r3_ref.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: obj_xref.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: poly1305_vec.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: forkunsafe.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.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: a_object.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: posix_time.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: bio.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: file.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: asn1_compat.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: chacha.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: ripemd.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: engine.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: p_dh_asn1.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: p_dsa.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: p_ed25519_asn1.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: p_hmac_asn1.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: p_kem_asn1.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: print.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: ex_data.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: lhash.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: blake2.c:boringssl_ensure_ecc_self_test Unexecuted instantiation: params.c:boringssl_ensure_ecc_self_test |
1338 | 0 | OPENSSL_INLINE void boringssl_ensure_ffdh_self_test(void) {} Unexecuted instantiation: convert.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: cbb.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: cbs.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: crypto.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: cfb.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: ec_asn1.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: ecdsa_asn1.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: err.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: evp_asn1.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: p_methods.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: p_pqdsa_asn1.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: p_x25519_asn1.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: bcm.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: kyber1024r3_ref.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: kyber512r3_ref.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: kyber768r3_ref.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: obj_xref.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: poly1305_vec.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: forkunsafe.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.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: a_object.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: posix_time.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: bio.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: file.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: asn1_compat.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: chacha.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: ripemd.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: engine.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: p_dh_asn1.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: p_dsa.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: p_ed25519_asn1.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: p_hmac_asn1.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: p_kem_asn1.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: print.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: ex_data.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: lhash.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: blake2.c:boringssl_ensure_ffdh_self_test Unexecuted instantiation: params.c:boringssl_ensure_ffdh_self_test |
1339 | 0 | OPENSSL_INLINE void boringssl_ensure_ml_kem_self_test(void) {} Unexecuted instantiation: convert.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: cbb.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: cbs.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: e_aesgcmsiv.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: e_chacha20poly1305.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: crypto.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: cfb.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: ec_asn1.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: ecdsa_asn1.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: err.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: evp_asn1.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: p_methods.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: p_pqdsa_asn1.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: p_x25519_asn1.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: bcm.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: kyber1024r3_ref.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: kyber512r3_ref.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: kyber768r3_ref.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: mem.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: obj.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: obj_xref.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: poly1305_vec.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: forkunsafe.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: refcount_c11.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: rsa_asn1.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: rsa_crypt.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: rsassa_pss_asn1.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: stack.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: thread_pthread.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: a_object.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: posix_time.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: bio.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: file.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: asn1_compat.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: chacha.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: ripemd.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: digest_extra.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: dsa.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: dsa_asn1.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: engine.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: p_dh_asn1.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: p_dsa.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: p_ed25519_asn1.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: p_hmac_asn1.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: p_kem_asn1.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: print.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: ex_data.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: lhash.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: blake2.c:boringssl_ensure_ml_kem_self_test Unexecuted instantiation: params.c:boringssl_ensure_ml_kem_self_test |
1340 | 0 | OPENSSL_INLINE void boringssl_ensure_ml_dsa_self_test(void) {} Unexecuted instantiation: convert.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: cbb.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: cbs.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: e_aesgcmsiv.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: e_chacha20poly1305.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: crypto.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: cfb.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: ec_asn1.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: ecdsa_asn1.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: err.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: evp_asn1.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: p_methods.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: p_pqdsa_asn1.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: p_x25519_asn1.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: bcm.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: kyber1024r3_ref.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: kyber512r3_ref.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: kyber768r3_ref.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: mem.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: obj.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: obj_xref.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: poly1305_vec.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: forkunsafe.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: refcount_c11.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: rsa_asn1.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: rsa_crypt.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: rsassa_pss_asn1.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: stack.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: thread_pthread.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: a_object.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: posix_time.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: bio.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: file.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: asn1_compat.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: chacha.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: ripemd.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: digest_extra.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: dsa.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: dsa_asn1.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: engine.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: p_dh_asn1.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: p_dsa.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: p_ed25519_asn1.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: p_hmac_asn1.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: p_kem_asn1.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: print.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: ex_data.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: lhash.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: blake2.c:boringssl_ensure_ml_dsa_self_test Unexecuted instantiation: params.c:boringssl_ensure_ml_dsa_self_test |
1341 | 0 | OPENSSL_INLINE void boringssl_ensure_eddsa_self_test(void) {} Unexecuted instantiation: convert.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: cbb.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: cbs.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: e_aesgcmsiv.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: e_chacha20poly1305.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: crypto.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: cfb.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: ec_asn1.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: ecdsa_asn1.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: err.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: evp_asn1.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: p_methods.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: p_pqdsa_asn1.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: p_x25519_asn1.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: bcm.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: kyber1024r3_ref.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: kyber512r3_ref.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: kyber768r3_ref.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: mem.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: obj.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: obj_xref.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: poly1305_vec.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: forkunsafe.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: refcount_c11.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: rsa_asn1.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: rsa_crypt.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: rsassa_pss_asn1.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: stack.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: thread_pthread.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: a_object.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: posix_time.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: bio.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: file.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: asn1_compat.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: chacha.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: ripemd.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: digest_extra.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: dsa.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: dsa_asn1.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: engine.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: p_dh_asn1.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: p_dsa.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: p_ed25519_asn1.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: p_hmac_asn1.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: p_kem_asn1.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: print.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: ex_data.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: lhash.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: blake2.c:boringssl_ensure_eddsa_self_test Unexecuted instantiation: params.c:boringssl_ensure_eddsa_self_test |
1342 | 0 | OPENSSL_INLINE void boringssl_ensure_hasheddsa_self_test(void) {} Unexecuted instantiation: convert.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: cbb.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: cbs.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: e_aesgcmsiv.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: e_chacha20poly1305.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: crypto.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: cfb.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: ec_asn1.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: ecdsa_asn1.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: err.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: evp_asn1.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: p_methods.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: p_pqdsa_asn1.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: p_x25519_asn1.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: bcm.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: kyber1024r3_ref.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: kyber512r3_ref.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: kyber768r3_ref.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: mem.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: obj.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: obj_xref.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: poly1305_vec.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: forkunsafe.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: refcount_c11.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: rsa_asn1.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: rsa_crypt.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: rsassa_pss_asn1.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: stack.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: thread_pthread.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: a_object.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: posix_time.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: bio.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: file.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: asn1_compat.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: chacha.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: ripemd.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: digest_extra.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: dsa.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: dsa_asn1.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: engine.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: p_dh_asn1.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: p_dsa.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: p_ed25519_asn1.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: p_hmac_asn1.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: p_kem_asn1.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: print.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: ex_data.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: lhash.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: blake2.c:boringssl_ensure_hasheddsa_self_test Unexecuted instantiation: params.c:boringssl_ensure_hasheddsa_self_test |
1343 | | |
1344 | | // Outside of FIPS mode AWS_LC_FIPS_failure simply logs the message to stderr |
1345 | | void AWS_LC_FIPS_failure(const char* message); |
1346 | | |
1347 | | #endif // FIPS |
1348 | | |
1349 | | // boringssl_self_test_sha256 performs a SHA-256 KAT |
1350 | | int boringssl_self_test_sha256(void); |
1351 | | |
1352 | | // boringssl_self_test_hmac_sha256 performs an HMAC-SHA-256 KAT |
1353 | | int boringssl_self_test_hmac_sha256(void); |
1354 | | |
1355 | | #if defined(BORINGSSL_FIPS_COUNTERS) |
1356 | | void boringssl_fips_inc_counter(enum fips_counter_t counter); |
1357 | | #else |
1358 | 0 | OPENSSL_INLINE void boringssl_fips_inc_counter(enum fips_counter_t counter) {} Unexecuted instantiation: convert.c:boringssl_fips_inc_counter Unexecuted instantiation: cbb.c:boringssl_fips_inc_counter Unexecuted instantiation: cbs.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: crypto.c:boringssl_fips_inc_counter Unexecuted instantiation: cfb.c:boringssl_fips_inc_counter Unexecuted instantiation: ec_asn1.c:boringssl_fips_inc_counter Unexecuted instantiation: ecdsa_asn1.c:boringssl_fips_inc_counter Unexecuted instantiation: err.c:boringssl_fips_inc_counter Unexecuted instantiation: evp_asn1.c:boringssl_fips_inc_counter Unexecuted instantiation: p_methods.c:boringssl_fips_inc_counter Unexecuted instantiation: p_pqdsa_asn1.c:boringssl_fips_inc_counter Unexecuted instantiation: p_x25519_asn1.c:boringssl_fips_inc_counter Unexecuted instantiation: bcm.c:boringssl_fips_inc_counter Unexecuted instantiation: kyber1024r3_ref.c:boringssl_fips_inc_counter Unexecuted instantiation: kyber512r3_ref.c:boringssl_fips_inc_counter Unexecuted instantiation: kyber768r3_ref.c:boringssl_fips_inc_counter Unexecuted instantiation: mem.c:boringssl_fips_inc_counter Unexecuted instantiation: obj.c:boringssl_fips_inc_counter Unexecuted instantiation: obj_xref.c:boringssl_fips_inc_counter Unexecuted instantiation: poly1305_vec.c:boringssl_fips_inc_counter Unexecuted instantiation: forkunsafe.c:boringssl_fips_inc_counter Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:boringssl_fips_inc_counter Unexecuted instantiation: stack.c:boringssl_fips_inc_counter Unexecuted instantiation: thread_pthread.c:boringssl_fips_inc_counter Unexecuted instantiation: a_object.c:boringssl_fips_inc_counter Unexecuted instantiation: posix_time.c:boringssl_fips_inc_counter Unexecuted instantiation: bio.c:boringssl_fips_inc_counter Unexecuted instantiation: file.c:boringssl_fips_inc_counter Unexecuted instantiation: asn1_compat.c:boringssl_fips_inc_counter Unexecuted instantiation: chacha.c:boringssl_fips_inc_counter Unexecuted instantiation: ripemd.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: engine.c:boringssl_fips_inc_counter Unexecuted instantiation: p_dh_asn1.c:boringssl_fips_inc_counter Unexecuted instantiation: p_dsa.c:boringssl_fips_inc_counter Unexecuted instantiation: p_ed25519_asn1.c:boringssl_fips_inc_counter Unexecuted instantiation: p_hmac_asn1.c:boringssl_fips_inc_counter Unexecuted instantiation: p_kem_asn1.c:boringssl_fips_inc_counter Unexecuted instantiation: print.c:boringssl_fips_inc_counter Unexecuted instantiation: ex_data.c:boringssl_fips_inc_counter Unexecuted instantiation: lhash.c:boringssl_fips_inc_counter Unexecuted instantiation: blake2.c:boringssl_fips_inc_counter Unexecuted instantiation: params.c:boringssl_fips_inc_counter |
1359 | | #endif |
1360 | | |
1361 | | #if defined(BORINGSSL_FIPS_BREAK_TESTS) |
1362 | | OPENSSL_INLINE int boringssl_fips_break_test(const char *test) { |
1363 | | const char *const value = getenv("BORINGSSL_FIPS_BREAK_TEST"); |
1364 | | return value != NULL && strcmp(value, test) == 0; |
1365 | | } |
1366 | | #else |
1367 | 0 | OPENSSL_INLINE int boringssl_fips_break_test(const char *test) { |
1368 | 0 | return 0; |
1369 | 0 | } Unexecuted instantiation: convert.c:boringssl_fips_break_test Unexecuted instantiation: cbb.c:boringssl_fips_break_test Unexecuted instantiation: cbs.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: crypto.c:boringssl_fips_break_test Unexecuted instantiation: cfb.c:boringssl_fips_break_test Unexecuted instantiation: ec_asn1.c:boringssl_fips_break_test Unexecuted instantiation: ecdsa_asn1.c:boringssl_fips_break_test Unexecuted instantiation: err.c:boringssl_fips_break_test Unexecuted instantiation: evp_asn1.c:boringssl_fips_break_test Unexecuted instantiation: p_methods.c:boringssl_fips_break_test Unexecuted instantiation: p_pqdsa_asn1.c:boringssl_fips_break_test Unexecuted instantiation: p_x25519_asn1.c:boringssl_fips_break_test Unexecuted instantiation: bcm.c:boringssl_fips_break_test Unexecuted instantiation: kyber1024r3_ref.c:boringssl_fips_break_test Unexecuted instantiation: kyber512r3_ref.c:boringssl_fips_break_test Unexecuted instantiation: kyber768r3_ref.c:boringssl_fips_break_test Unexecuted instantiation: mem.c:boringssl_fips_break_test Unexecuted instantiation: obj.c:boringssl_fips_break_test Unexecuted instantiation: obj_xref.c:boringssl_fips_break_test Unexecuted instantiation: poly1305_vec.c:boringssl_fips_break_test Unexecuted instantiation: forkunsafe.c:boringssl_fips_break_test Unexecuted instantiation: refcount_c11.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: rsassa_pss_asn1.c:boringssl_fips_break_test Unexecuted instantiation: stack.c:boringssl_fips_break_test Unexecuted instantiation: thread_pthread.c:boringssl_fips_break_test Unexecuted instantiation: a_object.c:boringssl_fips_break_test Unexecuted instantiation: posix_time.c:boringssl_fips_break_test Unexecuted instantiation: bio.c:boringssl_fips_break_test Unexecuted instantiation: file.c:boringssl_fips_break_test Unexecuted instantiation: asn1_compat.c:boringssl_fips_break_test Unexecuted instantiation: chacha.c:boringssl_fips_break_test Unexecuted instantiation: ripemd.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: engine.c:boringssl_fips_break_test Unexecuted instantiation: p_dh_asn1.c:boringssl_fips_break_test Unexecuted instantiation: p_dsa.c:boringssl_fips_break_test Unexecuted instantiation: p_ed25519_asn1.c:boringssl_fips_break_test Unexecuted instantiation: p_hmac_asn1.c:boringssl_fips_break_test Unexecuted instantiation: p_kem_asn1.c:boringssl_fips_break_test Unexecuted instantiation: print.c:boringssl_fips_break_test Unexecuted instantiation: ex_data.c:boringssl_fips_break_test Unexecuted instantiation: lhash.c:boringssl_fips_break_test Unexecuted instantiation: blake2.c:boringssl_fips_break_test Unexecuted instantiation: params.c:boringssl_fips_break_test |
1370 | | #endif // BORINGSSL_FIPS_BREAK_TESTS |
1371 | | |
1372 | | #if defined(BORINGSSL_DISPATCH_TEST) |
1373 | | // Runtime CPU dispatch testing support |
1374 | | |
1375 | | // BORINGSSL_function_hit is an array of flags. The following functions will |
1376 | | // set these flags if BORINGSSL_DISPATCH_TEST is defined. |
1377 | | // On x86 and x86_64: |
1378 | | // 0: aes_hw_ctr32_encrypt_blocks |
1379 | | // 1: aes_hw_encrypt |
1380 | | // 2: aesni_gcm_encrypt |
1381 | | // 3: aes_hw_set_encrypt_key |
1382 | | // 4: vpaes_encrypt |
1383 | | // 5: vpaes_set_encrypt_key |
1384 | | // 6: sha256_block_data_order_shaext |
1385 | | // 7: aes_gcm_encrypt_avx512 |
1386 | | // 8: RSAZ_mod_exp_avx512_x2 |
1387 | | // On AARCH64: |
1388 | | // 0: aes_hw_ctr32_encrypt_blocks |
1389 | | // 1: aes_hw_encrypt |
1390 | | // 2: aes_gcm_enc_kernel |
1391 | | // 3: aes_hw_set_encrypt_key |
1392 | | // 4: vpaes_encrypt |
1393 | | // 5: vpaes_set_encrypt_key |
1394 | | // 6: sha256_block_armv8 |
1395 | | // 7: aesv8_gcm_8x_enc_128 |
1396 | | // 8: sha512_block_armv8 |
1397 | | extern uint8_t BORINGSSL_function_hit[9]; |
1398 | | #endif // BORINGSSL_DISPATCH_TEST |
1399 | | |
1400 | | #if !defined(AWSLC_FIPS) && !defined(BORINGSSL_SHARED_LIBRARY) |
1401 | | // This function is defined in |bcm.c|, see the comment therein for explanation. |
1402 | | void dummy_func_for_constructor(void); |
1403 | | #endif |
1404 | | // OPENSSL_vasprintf_internal is just like |vasprintf(3)|. If |system_malloc| is |
1405 | | // 0, memory will be allocated with |OPENSSL_malloc| and must be freed with |
1406 | | // |OPENSSL_free|. Otherwise the system |malloc| function is used and the memory |
1407 | | // must be freed with the system |free| function. |
1408 | | OPENSSL_EXPORT int OPENSSL_vasprintf_internal(char **str, const char *format, |
1409 | | va_list args, int system_malloc) |
1410 | | OPENSSL_PRINTF_FORMAT_FUNC(2, 0); |
1411 | | |
1412 | | |
1413 | | // Experimental safety macros inspired by s2n-tls. |
1414 | | |
1415 | | // If |cond| is false |action| is invoked, otherwise nothing happens. |
1416 | | #define __AWS_LC_ENSURE(cond, action) \ |
1417 | 0 | do { \ |
1418 | 0 | if (!(cond)) { \ |
1419 | 0 | action; \ |
1420 | 0 | } \ |
1421 | 0 | } while (0) |
1422 | | |
1423 | | #define AWS_LC_ERROR 0 |
1424 | | #define AWS_LC_SUCCESS 1 |
1425 | | |
1426 | | // GUARD_PTR checks |ptr|: if it is NULL it adds |ERR_R_PASSED_NULL_PARAMETER| |
1427 | | // to the error queue and returns 0, if it is not NULL nothing happens. |
1428 | | // |
1429 | | // NOTE: this macro should only be used with functions that return 0 (for error) |
1430 | | // and 1 (for success). |
1431 | 0 | #define GUARD_PTR(ptr) __AWS_LC_ENSURE((ptr) != NULL, OPENSSL_PUT_ERROR(CRYPTO, ERR_R_PASSED_NULL_PARAMETER); \ |
1432 | 0 | return AWS_LC_ERROR) |
1433 | | |
1434 | | |
1435 | | // Windows doesn't really support weak symbols as of May 2019, and Clang on |
1436 | | // Windows will emit strong symbols instead. See |
1437 | | // https://bugs.llvm.org/show_bug.cgi?id=37598 |
1438 | | #if defined(__ELF__) && defined(__GNUC__) |
1439 | | #define WEAK_SYMBOL_FUNC(rettype, name, args) \ |
1440 | | rettype name args __attribute__((weak)); |
1441 | | #else |
1442 | | #define WEAK_SYMBOL_FUNC(rettype, name, args) static rettype(*name) args = NULL; |
1443 | | #endif |
1444 | | |
1445 | | #if defined(__cplusplus) |
1446 | | } // extern C |
1447 | | #endif |
1448 | | |
1449 | | #endif // OPENSSL_HEADER_CRYPTO_INTERNAL_H |