Coverage Report

Created: 2023-06-08 06:40

/src/openssl111/include/internal/constant_time.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright 2014-2019 The OpenSSL Project Authors. All Rights Reserved.
3
 *
4
 * Licensed under the OpenSSL license (the "License").  You may not use
5
 * this file except in compliance with the License.  You can obtain a copy
6
 * in the file LICENSE in the source distribution or at
7
 * https://www.openssl.org/source/license.html
8
 */
9
10
#ifndef OSSL_INTERNAL_CONSTANT_TIME_H
11
# define OSSL_INTERNAL_CONSTANT_TIME_H
12
13
# include <stdlib.h>
14
# include <string.h>
15
# include <openssl/e_os2.h>              /* For 'ossl_inline' */
16
17
/*-
18
 * The boolean methods return a bitmask of all ones (0xff...f) for true
19
 * and 0 for false. This is useful for choosing a value based on the result
20
 * of a conditional in constant time. For example,
21
 *      if (a < b) {
22
 *        c = a;
23
 *      } else {
24
 *        c = b;
25
 *      }
26
 * can be written as
27
 *      unsigned int lt = constant_time_lt(a, b);
28
 *      c = constant_time_select(lt, a, b);
29
 */
30
31
/* Returns the given value with the MSB copied to all the other bits. */
32
static ossl_inline unsigned int constant_time_msb(unsigned int a);
33
/* Convenience method for uint32_t. */
34
static ossl_inline uint32_t constant_time_msb_32(uint32_t a);
35
/* Convenience method for uint64_t. */
36
static ossl_inline uint64_t constant_time_msb_64(uint64_t a);
37
38
/* Returns 0xff..f if a < b and 0 otherwise. */
39
static ossl_inline unsigned int constant_time_lt(unsigned int a,
40
                                                 unsigned int b);
41
/* Convenience method for getting an 8-bit mask. */
42
static ossl_inline unsigned char constant_time_lt_8(unsigned int a,
43
                                                    unsigned int b);
44
/* Convenience method for uint64_t. */
45
static ossl_inline uint64_t constant_time_lt_64(uint64_t a, uint64_t b);
46
47
/* Returns 0xff..f if a >= b and 0 otherwise. */
48
static ossl_inline unsigned int constant_time_ge(unsigned int a,
49
                                                 unsigned int b);
50
/* Convenience method for getting an 8-bit mask. */
51
static ossl_inline unsigned char constant_time_ge_8(unsigned int a,
52
                                                    unsigned int b);
53
54
/* Returns 0xff..f if a == 0 and 0 otherwise. */
55
static ossl_inline unsigned int constant_time_is_zero(unsigned int a);
56
/* Convenience method for getting an 8-bit mask. */
57
static ossl_inline unsigned char constant_time_is_zero_8(unsigned int a);
58
/* Convenience method for getting a 32-bit mask. */
59
static ossl_inline uint32_t constant_time_is_zero_32(uint32_t a);
60
61
/* Returns 0xff..f if a == b and 0 otherwise. */
62
static ossl_inline unsigned int constant_time_eq(unsigned int a,
63
                                                 unsigned int b);
64
/* Convenience method for getting an 8-bit mask. */
65
static ossl_inline unsigned char constant_time_eq_8(unsigned int a,
66
                                                    unsigned int b);
67
/* Signed integers. */
68
static ossl_inline unsigned int constant_time_eq_int(int a, int b);
69
/* Convenience method for getting an 8-bit mask. */
70
static ossl_inline unsigned char constant_time_eq_int_8(int a, int b);
71
72
/*-
73
 * Returns (mask & a) | (~mask & b).
74
 *
75
 * When |mask| is all 1s or all 0s (as returned by the methods above),
76
 * the select methods return either |a| (if |mask| is nonzero) or |b|
77
 * (if |mask| is zero).
78
 */
79
static ossl_inline unsigned int constant_time_select(unsigned int mask,
80
                                                     unsigned int a,
81
                                                     unsigned int b);
82
/* Convenience method for unsigned chars. */
83
static ossl_inline unsigned char constant_time_select_8(unsigned char mask,
84
                                                        unsigned char a,
85
                                                        unsigned char b);
86
87
/* Convenience method for uint32_t. */
88
static ossl_inline uint32_t constant_time_select_32(uint32_t mask, uint32_t a,
89
                                                    uint32_t b);
90
91
/* Convenience method for uint64_t. */
92
static ossl_inline uint64_t constant_time_select_64(uint64_t mask, uint64_t a,
93
                                                    uint64_t b);
94
/* Convenience method for signed integers. */
95
static ossl_inline int constant_time_select_int(unsigned int mask, int a,
96
                                                int b);
97
98
99
static ossl_inline unsigned int constant_time_msb(unsigned int a)
100
0
{
101
0
    return 0 - (a >> (sizeof(a) * 8 - 1));
102
0
}
Unexecuted instantiation: bn_exp.c:constant_time_msb
Unexecuted instantiation: bn_lib.c:constant_time_msb
Unexecuted instantiation: rsaz_exp.c:constant_time_msb
Unexecuted instantiation: err.c:constant_time_msb
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_msb
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_msb
Unexecuted instantiation: rsa_ossl.c:constant_time_msb
Unexecuted instantiation: rsa_pk1.c:constant_time_msb
Unexecuted instantiation: rsa_pmeth.c:constant_time_msb
Unexecuted instantiation: rsa_ssl.c:constant_time_msb
Unexecuted instantiation: rsa_oaep.c:constant_time_msb
Unexecuted instantiation: curve448.c:constant_time_msb
Unexecuted instantiation: curve448_tables.c:constant_time_msb
Unexecuted instantiation: eddsa.c:constant_time_msb
Unexecuted instantiation: f_generic.c:constant_time_msb
Unexecuted instantiation: scalar.c:constant_time_msb
Unexecuted instantiation: f_impl.c:constant_time_msb
103
104
105
static ossl_inline uint32_t constant_time_msb_32(uint32_t a)
106
0
{
107
0
    return 0 - (a >> 31);
108
0
}
Unexecuted instantiation: bn_exp.c:constant_time_msb_32
Unexecuted instantiation: bn_lib.c:constant_time_msb_32
Unexecuted instantiation: rsaz_exp.c:constant_time_msb_32
Unexecuted instantiation: err.c:constant_time_msb_32
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_msb_32
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_msb_32
Unexecuted instantiation: rsa_ossl.c:constant_time_msb_32
Unexecuted instantiation: rsa_pk1.c:constant_time_msb_32
Unexecuted instantiation: rsa_pmeth.c:constant_time_msb_32
Unexecuted instantiation: rsa_ssl.c:constant_time_msb_32
Unexecuted instantiation: rsa_oaep.c:constant_time_msb_32
Unexecuted instantiation: curve448.c:constant_time_msb_32
Unexecuted instantiation: curve448_tables.c:constant_time_msb_32
Unexecuted instantiation: eddsa.c:constant_time_msb_32
Unexecuted instantiation: f_generic.c:constant_time_msb_32
Unexecuted instantiation: scalar.c:constant_time_msb_32
Unexecuted instantiation: f_impl.c:constant_time_msb_32
109
110
static ossl_inline uint64_t constant_time_msb_64(uint64_t a)
111
0
{
112
0
    return 0 - (a >> 63);
113
0
}
Unexecuted instantiation: bn_exp.c:constant_time_msb_64
Unexecuted instantiation: bn_lib.c:constant_time_msb_64
Unexecuted instantiation: rsaz_exp.c:constant_time_msb_64
Unexecuted instantiation: err.c:constant_time_msb_64
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_msb_64
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_msb_64
Unexecuted instantiation: rsa_ossl.c:constant_time_msb_64
Unexecuted instantiation: rsa_pk1.c:constant_time_msb_64
Unexecuted instantiation: rsa_pmeth.c:constant_time_msb_64
Unexecuted instantiation: rsa_ssl.c:constant_time_msb_64
Unexecuted instantiation: rsa_oaep.c:constant_time_msb_64
Unexecuted instantiation: curve448.c:constant_time_msb_64
Unexecuted instantiation: curve448_tables.c:constant_time_msb_64
Unexecuted instantiation: eddsa.c:constant_time_msb_64
Unexecuted instantiation: f_generic.c:constant_time_msb_64
Unexecuted instantiation: scalar.c:constant_time_msb_64
Unexecuted instantiation: f_impl.c:constant_time_msb_64
114
115
static ossl_inline size_t constant_time_msb_s(size_t a)
116
0
{
117
0
    return 0 - (a >> (sizeof(a) * 8 - 1));
118
0
}
Unexecuted instantiation: bn_exp.c:constant_time_msb_s
Unexecuted instantiation: bn_lib.c:constant_time_msb_s
Unexecuted instantiation: rsaz_exp.c:constant_time_msb_s
Unexecuted instantiation: err.c:constant_time_msb_s
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_msb_s
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_msb_s
Unexecuted instantiation: rsa_ossl.c:constant_time_msb_s
Unexecuted instantiation: rsa_pk1.c:constant_time_msb_s
Unexecuted instantiation: rsa_pmeth.c:constant_time_msb_s
Unexecuted instantiation: rsa_ssl.c:constant_time_msb_s
Unexecuted instantiation: rsa_oaep.c:constant_time_msb_s
Unexecuted instantiation: curve448.c:constant_time_msb_s
Unexecuted instantiation: curve448_tables.c:constant_time_msb_s
Unexecuted instantiation: eddsa.c:constant_time_msb_s
Unexecuted instantiation: f_generic.c:constant_time_msb_s
Unexecuted instantiation: scalar.c:constant_time_msb_s
Unexecuted instantiation: f_impl.c:constant_time_msb_s
119
120
static ossl_inline unsigned int constant_time_lt(unsigned int a,
121
                                                 unsigned int b)
122
0
{
123
0
    return constant_time_msb(a ^ ((a ^ b) | ((a - b) ^ b)));
124
0
}
Unexecuted instantiation: bn_exp.c:constant_time_lt
Unexecuted instantiation: bn_lib.c:constant_time_lt
Unexecuted instantiation: rsaz_exp.c:constant_time_lt
Unexecuted instantiation: err.c:constant_time_lt
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_lt
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_lt
Unexecuted instantiation: rsa_ossl.c:constant_time_lt
Unexecuted instantiation: rsa_pk1.c:constant_time_lt
Unexecuted instantiation: rsa_pmeth.c:constant_time_lt
Unexecuted instantiation: rsa_ssl.c:constant_time_lt
Unexecuted instantiation: rsa_oaep.c:constant_time_lt
Unexecuted instantiation: curve448.c:constant_time_lt
Unexecuted instantiation: curve448_tables.c:constant_time_lt
Unexecuted instantiation: eddsa.c:constant_time_lt
Unexecuted instantiation: f_generic.c:constant_time_lt
Unexecuted instantiation: scalar.c:constant_time_lt
Unexecuted instantiation: f_impl.c:constant_time_lt
125
126
static ossl_inline size_t constant_time_lt_s(size_t a, size_t b)
127
0
{
128
0
    return constant_time_msb_s(a ^ ((a ^ b) | ((a - b) ^ b)));
129
0
}
Unexecuted instantiation: bn_exp.c:constant_time_lt_s
Unexecuted instantiation: bn_lib.c:constant_time_lt_s
Unexecuted instantiation: rsaz_exp.c:constant_time_lt_s
Unexecuted instantiation: err.c:constant_time_lt_s
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_lt_s
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_lt_s
Unexecuted instantiation: rsa_ossl.c:constant_time_lt_s
Unexecuted instantiation: rsa_pk1.c:constant_time_lt_s
Unexecuted instantiation: rsa_pmeth.c:constant_time_lt_s
Unexecuted instantiation: rsa_ssl.c:constant_time_lt_s
Unexecuted instantiation: rsa_oaep.c:constant_time_lt_s
Unexecuted instantiation: curve448.c:constant_time_lt_s
Unexecuted instantiation: curve448_tables.c:constant_time_lt_s
Unexecuted instantiation: eddsa.c:constant_time_lt_s
Unexecuted instantiation: f_generic.c:constant_time_lt_s
Unexecuted instantiation: scalar.c:constant_time_lt_s
Unexecuted instantiation: f_impl.c:constant_time_lt_s
130
131
static ossl_inline unsigned char constant_time_lt_8(unsigned int a,
132
                                                    unsigned int b)
133
0
{
134
0
    return (unsigned char)constant_time_lt(a, b);
135
0
}
Unexecuted instantiation: bn_exp.c:constant_time_lt_8
Unexecuted instantiation: bn_lib.c:constant_time_lt_8
Unexecuted instantiation: rsaz_exp.c:constant_time_lt_8
Unexecuted instantiation: err.c:constant_time_lt_8
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_lt_8
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_lt_8
Unexecuted instantiation: rsa_ossl.c:constant_time_lt_8
Unexecuted instantiation: rsa_pk1.c:constant_time_lt_8
Unexecuted instantiation: rsa_pmeth.c:constant_time_lt_8
Unexecuted instantiation: rsa_ssl.c:constant_time_lt_8
Unexecuted instantiation: rsa_oaep.c:constant_time_lt_8
Unexecuted instantiation: curve448.c:constant_time_lt_8
Unexecuted instantiation: curve448_tables.c:constant_time_lt_8
Unexecuted instantiation: eddsa.c:constant_time_lt_8
Unexecuted instantiation: f_generic.c:constant_time_lt_8
Unexecuted instantiation: scalar.c:constant_time_lt_8
Unexecuted instantiation: f_impl.c:constant_time_lt_8
136
137
static ossl_inline uint64_t constant_time_lt_64(uint64_t a, uint64_t b)
138
0
{
139
0
    return constant_time_msb_64(a ^ ((a ^ b) | ((a - b) ^ b)));
140
0
}
Unexecuted instantiation: bn_exp.c:constant_time_lt_64
Unexecuted instantiation: bn_lib.c:constant_time_lt_64
Unexecuted instantiation: rsaz_exp.c:constant_time_lt_64
Unexecuted instantiation: err.c:constant_time_lt_64
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_lt_64
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_lt_64
Unexecuted instantiation: rsa_ossl.c:constant_time_lt_64
Unexecuted instantiation: rsa_pk1.c:constant_time_lt_64
Unexecuted instantiation: rsa_pmeth.c:constant_time_lt_64
Unexecuted instantiation: rsa_ssl.c:constant_time_lt_64
Unexecuted instantiation: rsa_oaep.c:constant_time_lt_64
Unexecuted instantiation: curve448.c:constant_time_lt_64
Unexecuted instantiation: curve448_tables.c:constant_time_lt_64
Unexecuted instantiation: eddsa.c:constant_time_lt_64
Unexecuted instantiation: f_generic.c:constant_time_lt_64
Unexecuted instantiation: scalar.c:constant_time_lt_64
Unexecuted instantiation: f_impl.c:constant_time_lt_64
141
142
static ossl_inline unsigned int constant_time_ge(unsigned int a,
143
                                                 unsigned int b)
144
0
{
145
0
    return ~constant_time_lt(a, b);
146
0
}
Unexecuted instantiation: bn_exp.c:constant_time_ge
Unexecuted instantiation: bn_lib.c:constant_time_ge
Unexecuted instantiation: rsaz_exp.c:constant_time_ge
Unexecuted instantiation: err.c:constant_time_ge
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_ge
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_ge
Unexecuted instantiation: rsa_ossl.c:constant_time_ge
Unexecuted instantiation: rsa_pk1.c:constant_time_ge
Unexecuted instantiation: rsa_pmeth.c:constant_time_ge
Unexecuted instantiation: rsa_ssl.c:constant_time_ge
Unexecuted instantiation: rsa_oaep.c:constant_time_ge
Unexecuted instantiation: curve448.c:constant_time_ge
Unexecuted instantiation: curve448_tables.c:constant_time_ge
Unexecuted instantiation: eddsa.c:constant_time_ge
Unexecuted instantiation: f_generic.c:constant_time_ge
Unexecuted instantiation: scalar.c:constant_time_ge
Unexecuted instantiation: f_impl.c:constant_time_ge
147
148
static ossl_inline size_t constant_time_ge_s(size_t a, size_t b)
149
0
{
150
0
    return ~constant_time_lt_s(a, b);
151
0
}
Unexecuted instantiation: bn_exp.c:constant_time_ge_s
Unexecuted instantiation: bn_lib.c:constant_time_ge_s
Unexecuted instantiation: rsaz_exp.c:constant_time_ge_s
Unexecuted instantiation: err.c:constant_time_ge_s
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_ge_s
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_ge_s
Unexecuted instantiation: rsa_ossl.c:constant_time_ge_s
Unexecuted instantiation: rsa_pk1.c:constant_time_ge_s
Unexecuted instantiation: rsa_pmeth.c:constant_time_ge_s
Unexecuted instantiation: rsa_ssl.c:constant_time_ge_s
Unexecuted instantiation: rsa_oaep.c:constant_time_ge_s
Unexecuted instantiation: curve448.c:constant_time_ge_s
Unexecuted instantiation: curve448_tables.c:constant_time_ge_s
Unexecuted instantiation: eddsa.c:constant_time_ge_s
Unexecuted instantiation: f_generic.c:constant_time_ge_s
Unexecuted instantiation: scalar.c:constant_time_ge_s
Unexecuted instantiation: f_impl.c:constant_time_ge_s
152
153
static ossl_inline unsigned char constant_time_ge_8(unsigned int a,
154
                                                    unsigned int b)
155
0
{
156
0
    return (unsigned char)constant_time_ge(a, b);
157
0
}
Unexecuted instantiation: bn_exp.c:constant_time_ge_8
Unexecuted instantiation: bn_lib.c:constant_time_ge_8
Unexecuted instantiation: rsaz_exp.c:constant_time_ge_8
Unexecuted instantiation: err.c:constant_time_ge_8
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_ge_8
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_ge_8
Unexecuted instantiation: rsa_ossl.c:constant_time_ge_8
Unexecuted instantiation: rsa_pk1.c:constant_time_ge_8
Unexecuted instantiation: rsa_pmeth.c:constant_time_ge_8
Unexecuted instantiation: rsa_ssl.c:constant_time_ge_8
Unexecuted instantiation: rsa_oaep.c:constant_time_ge_8
Unexecuted instantiation: curve448.c:constant_time_ge_8
Unexecuted instantiation: curve448_tables.c:constant_time_ge_8
Unexecuted instantiation: eddsa.c:constant_time_ge_8
Unexecuted instantiation: f_generic.c:constant_time_ge_8
Unexecuted instantiation: scalar.c:constant_time_ge_8
Unexecuted instantiation: f_impl.c:constant_time_ge_8
158
159
static ossl_inline unsigned char constant_time_ge_8_s(size_t a, size_t b)
160
0
{
161
0
    return (unsigned char)constant_time_ge_s(a, b);
162
0
}
Unexecuted instantiation: bn_exp.c:constant_time_ge_8_s
Unexecuted instantiation: bn_lib.c:constant_time_ge_8_s
Unexecuted instantiation: rsaz_exp.c:constant_time_ge_8_s
Unexecuted instantiation: err.c:constant_time_ge_8_s
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_ge_8_s
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_ge_8_s
Unexecuted instantiation: rsa_ossl.c:constant_time_ge_8_s
Unexecuted instantiation: rsa_pk1.c:constant_time_ge_8_s
Unexecuted instantiation: rsa_pmeth.c:constant_time_ge_8_s
Unexecuted instantiation: rsa_ssl.c:constant_time_ge_8_s
Unexecuted instantiation: rsa_oaep.c:constant_time_ge_8_s
Unexecuted instantiation: curve448.c:constant_time_ge_8_s
Unexecuted instantiation: curve448_tables.c:constant_time_ge_8_s
Unexecuted instantiation: eddsa.c:constant_time_ge_8_s
Unexecuted instantiation: f_generic.c:constant_time_ge_8_s
Unexecuted instantiation: scalar.c:constant_time_ge_8_s
Unexecuted instantiation: f_impl.c:constant_time_ge_8_s
163
164
static ossl_inline unsigned int constant_time_is_zero(unsigned int a)
165
0
{
166
0
    return constant_time_msb(~a & (a - 1));
167
0
}
Unexecuted instantiation: bn_exp.c:constant_time_is_zero
Unexecuted instantiation: bn_lib.c:constant_time_is_zero
Unexecuted instantiation: rsaz_exp.c:constant_time_is_zero
Unexecuted instantiation: err.c:constant_time_is_zero
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_is_zero
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_is_zero
Unexecuted instantiation: rsa_ossl.c:constant_time_is_zero
Unexecuted instantiation: rsa_pk1.c:constant_time_is_zero
Unexecuted instantiation: rsa_pmeth.c:constant_time_is_zero
Unexecuted instantiation: rsa_ssl.c:constant_time_is_zero
Unexecuted instantiation: rsa_oaep.c:constant_time_is_zero
Unexecuted instantiation: curve448.c:constant_time_is_zero
Unexecuted instantiation: curve448_tables.c:constant_time_is_zero
Unexecuted instantiation: eddsa.c:constant_time_is_zero
Unexecuted instantiation: f_generic.c:constant_time_is_zero
Unexecuted instantiation: scalar.c:constant_time_is_zero
Unexecuted instantiation: f_impl.c:constant_time_is_zero
168
169
static ossl_inline size_t constant_time_is_zero_s(size_t a)
170
0
{
171
0
    return constant_time_msb_s(~a & (a - 1));
172
0
}
Unexecuted instantiation: bn_exp.c:constant_time_is_zero_s
Unexecuted instantiation: bn_lib.c:constant_time_is_zero_s
Unexecuted instantiation: rsaz_exp.c:constant_time_is_zero_s
Unexecuted instantiation: err.c:constant_time_is_zero_s
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_is_zero_s
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_is_zero_s
Unexecuted instantiation: rsa_ossl.c:constant_time_is_zero_s
Unexecuted instantiation: rsa_pk1.c:constant_time_is_zero_s
Unexecuted instantiation: rsa_pmeth.c:constant_time_is_zero_s
Unexecuted instantiation: rsa_ssl.c:constant_time_is_zero_s
Unexecuted instantiation: rsa_oaep.c:constant_time_is_zero_s
Unexecuted instantiation: curve448.c:constant_time_is_zero_s
Unexecuted instantiation: curve448_tables.c:constant_time_is_zero_s
Unexecuted instantiation: eddsa.c:constant_time_is_zero_s
Unexecuted instantiation: f_generic.c:constant_time_is_zero_s
Unexecuted instantiation: scalar.c:constant_time_is_zero_s
Unexecuted instantiation: f_impl.c:constant_time_is_zero_s
173
174
static ossl_inline unsigned char constant_time_is_zero_8(unsigned int a)
175
0
{
176
0
    return (unsigned char)constant_time_is_zero(a);
177
0
}
Unexecuted instantiation: bn_exp.c:constant_time_is_zero_8
Unexecuted instantiation: bn_lib.c:constant_time_is_zero_8
Unexecuted instantiation: rsaz_exp.c:constant_time_is_zero_8
Unexecuted instantiation: err.c:constant_time_is_zero_8
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_is_zero_8
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_is_zero_8
Unexecuted instantiation: rsa_ossl.c:constant_time_is_zero_8
Unexecuted instantiation: rsa_pk1.c:constant_time_is_zero_8
Unexecuted instantiation: rsa_pmeth.c:constant_time_is_zero_8
Unexecuted instantiation: rsa_ssl.c:constant_time_is_zero_8
Unexecuted instantiation: rsa_oaep.c:constant_time_is_zero_8
Unexecuted instantiation: curve448.c:constant_time_is_zero_8
Unexecuted instantiation: curve448_tables.c:constant_time_is_zero_8
Unexecuted instantiation: eddsa.c:constant_time_is_zero_8
Unexecuted instantiation: f_generic.c:constant_time_is_zero_8
Unexecuted instantiation: scalar.c:constant_time_is_zero_8
Unexecuted instantiation: f_impl.c:constant_time_is_zero_8
178
179
static ossl_inline uint32_t constant_time_is_zero_32(uint32_t a)
180
0
{
181
0
    return constant_time_msb_32(~a & (a - 1));
182
0
}
Unexecuted instantiation: bn_exp.c:constant_time_is_zero_32
Unexecuted instantiation: bn_lib.c:constant_time_is_zero_32
Unexecuted instantiation: rsaz_exp.c:constant_time_is_zero_32
Unexecuted instantiation: err.c:constant_time_is_zero_32
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_is_zero_32
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_is_zero_32
Unexecuted instantiation: rsa_ossl.c:constant_time_is_zero_32
Unexecuted instantiation: rsa_pk1.c:constant_time_is_zero_32
Unexecuted instantiation: rsa_pmeth.c:constant_time_is_zero_32
Unexecuted instantiation: rsa_ssl.c:constant_time_is_zero_32
Unexecuted instantiation: rsa_oaep.c:constant_time_is_zero_32
Unexecuted instantiation: curve448.c:constant_time_is_zero_32
Unexecuted instantiation: curve448_tables.c:constant_time_is_zero_32
Unexecuted instantiation: eddsa.c:constant_time_is_zero_32
Unexecuted instantiation: f_generic.c:constant_time_is_zero_32
Unexecuted instantiation: scalar.c:constant_time_is_zero_32
Unexecuted instantiation: f_impl.c:constant_time_is_zero_32
183
184
static ossl_inline unsigned int constant_time_eq(unsigned int a,
185
                                                 unsigned int b)
186
0
{
187
0
    return constant_time_is_zero(a ^ b);
188
0
}
Unexecuted instantiation: bn_exp.c:constant_time_eq
Unexecuted instantiation: bn_lib.c:constant_time_eq
Unexecuted instantiation: rsaz_exp.c:constant_time_eq
Unexecuted instantiation: err.c:constant_time_eq
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_eq
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_eq
Unexecuted instantiation: rsa_ossl.c:constant_time_eq
Unexecuted instantiation: rsa_pk1.c:constant_time_eq
Unexecuted instantiation: rsa_pmeth.c:constant_time_eq
Unexecuted instantiation: rsa_ssl.c:constant_time_eq
Unexecuted instantiation: rsa_oaep.c:constant_time_eq
Unexecuted instantiation: curve448.c:constant_time_eq
Unexecuted instantiation: curve448_tables.c:constant_time_eq
Unexecuted instantiation: eddsa.c:constant_time_eq
Unexecuted instantiation: f_generic.c:constant_time_eq
Unexecuted instantiation: scalar.c:constant_time_eq
Unexecuted instantiation: f_impl.c:constant_time_eq
189
190
static ossl_inline size_t constant_time_eq_s(size_t a, size_t b)
191
0
{
192
0
    return constant_time_is_zero_s(a ^ b);
193
0
}
Unexecuted instantiation: bn_exp.c:constant_time_eq_s
Unexecuted instantiation: bn_lib.c:constant_time_eq_s
Unexecuted instantiation: rsaz_exp.c:constant_time_eq_s
Unexecuted instantiation: err.c:constant_time_eq_s
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_eq_s
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_eq_s
Unexecuted instantiation: rsa_ossl.c:constant_time_eq_s
Unexecuted instantiation: rsa_pk1.c:constant_time_eq_s
Unexecuted instantiation: rsa_pmeth.c:constant_time_eq_s
Unexecuted instantiation: rsa_ssl.c:constant_time_eq_s
Unexecuted instantiation: rsa_oaep.c:constant_time_eq_s
Unexecuted instantiation: curve448.c:constant_time_eq_s
Unexecuted instantiation: curve448_tables.c:constant_time_eq_s
Unexecuted instantiation: eddsa.c:constant_time_eq_s
Unexecuted instantiation: f_generic.c:constant_time_eq_s
Unexecuted instantiation: scalar.c:constant_time_eq_s
Unexecuted instantiation: f_impl.c:constant_time_eq_s
194
195
static ossl_inline unsigned char constant_time_eq_8(unsigned int a,
196
                                                    unsigned int b)
197
0
{
198
0
    return (unsigned char)constant_time_eq(a, b);
199
0
}
Unexecuted instantiation: bn_exp.c:constant_time_eq_8
Unexecuted instantiation: bn_lib.c:constant_time_eq_8
Unexecuted instantiation: rsaz_exp.c:constant_time_eq_8
Unexecuted instantiation: err.c:constant_time_eq_8
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_eq_8
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_eq_8
Unexecuted instantiation: rsa_ossl.c:constant_time_eq_8
Unexecuted instantiation: rsa_pk1.c:constant_time_eq_8
Unexecuted instantiation: rsa_pmeth.c:constant_time_eq_8
Unexecuted instantiation: rsa_ssl.c:constant_time_eq_8
Unexecuted instantiation: rsa_oaep.c:constant_time_eq_8
Unexecuted instantiation: curve448.c:constant_time_eq_8
Unexecuted instantiation: curve448_tables.c:constant_time_eq_8
Unexecuted instantiation: eddsa.c:constant_time_eq_8
Unexecuted instantiation: f_generic.c:constant_time_eq_8
Unexecuted instantiation: scalar.c:constant_time_eq_8
Unexecuted instantiation: f_impl.c:constant_time_eq_8
200
201
static ossl_inline unsigned char constant_time_eq_8_s(size_t a, size_t b)
202
0
{
203
0
    return (unsigned char)constant_time_eq_s(a, b);
204
0
}
Unexecuted instantiation: bn_exp.c:constant_time_eq_8_s
Unexecuted instantiation: bn_lib.c:constant_time_eq_8_s
Unexecuted instantiation: rsaz_exp.c:constant_time_eq_8_s
Unexecuted instantiation: err.c:constant_time_eq_8_s
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_eq_8_s
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_eq_8_s
Unexecuted instantiation: rsa_ossl.c:constant_time_eq_8_s
Unexecuted instantiation: rsa_pk1.c:constant_time_eq_8_s
Unexecuted instantiation: rsa_pmeth.c:constant_time_eq_8_s
Unexecuted instantiation: rsa_ssl.c:constant_time_eq_8_s
Unexecuted instantiation: rsa_oaep.c:constant_time_eq_8_s
Unexecuted instantiation: curve448.c:constant_time_eq_8_s
Unexecuted instantiation: curve448_tables.c:constant_time_eq_8_s
Unexecuted instantiation: eddsa.c:constant_time_eq_8_s
Unexecuted instantiation: f_generic.c:constant_time_eq_8_s
Unexecuted instantiation: scalar.c:constant_time_eq_8_s
Unexecuted instantiation: f_impl.c:constant_time_eq_8_s
205
206
static ossl_inline unsigned int constant_time_eq_int(int a, int b)
207
0
{
208
0
    return constant_time_eq((unsigned)(a), (unsigned)(b));
209
0
}
Unexecuted instantiation: bn_exp.c:constant_time_eq_int
Unexecuted instantiation: bn_lib.c:constant_time_eq_int
Unexecuted instantiation: rsaz_exp.c:constant_time_eq_int
Unexecuted instantiation: err.c:constant_time_eq_int
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_eq_int
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_eq_int
Unexecuted instantiation: rsa_ossl.c:constant_time_eq_int
Unexecuted instantiation: rsa_pk1.c:constant_time_eq_int
Unexecuted instantiation: rsa_pmeth.c:constant_time_eq_int
Unexecuted instantiation: rsa_ssl.c:constant_time_eq_int
Unexecuted instantiation: rsa_oaep.c:constant_time_eq_int
Unexecuted instantiation: curve448.c:constant_time_eq_int
Unexecuted instantiation: curve448_tables.c:constant_time_eq_int
Unexecuted instantiation: eddsa.c:constant_time_eq_int
Unexecuted instantiation: f_generic.c:constant_time_eq_int
Unexecuted instantiation: scalar.c:constant_time_eq_int
Unexecuted instantiation: f_impl.c:constant_time_eq_int
210
211
static ossl_inline unsigned char constant_time_eq_int_8(int a, int b)
212
0
{
213
0
    return constant_time_eq_8((unsigned)(a), (unsigned)(b));
214
0
}
Unexecuted instantiation: bn_exp.c:constant_time_eq_int_8
Unexecuted instantiation: bn_lib.c:constant_time_eq_int_8
Unexecuted instantiation: rsaz_exp.c:constant_time_eq_int_8
Unexecuted instantiation: err.c:constant_time_eq_int_8
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_eq_int_8
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_eq_int_8
Unexecuted instantiation: rsa_ossl.c:constant_time_eq_int_8
Unexecuted instantiation: rsa_pk1.c:constant_time_eq_int_8
Unexecuted instantiation: rsa_pmeth.c:constant_time_eq_int_8
Unexecuted instantiation: rsa_ssl.c:constant_time_eq_int_8
Unexecuted instantiation: rsa_oaep.c:constant_time_eq_int_8
Unexecuted instantiation: curve448.c:constant_time_eq_int_8
Unexecuted instantiation: curve448_tables.c:constant_time_eq_int_8
Unexecuted instantiation: eddsa.c:constant_time_eq_int_8
Unexecuted instantiation: f_generic.c:constant_time_eq_int_8
Unexecuted instantiation: scalar.c:constant_time_eq_int_8
Unexecuted instantiation: f_impl.c:constant_time_eq_int_8
215
216
/*
217
 * Returns the value unmodified, but avoids optimizations.
218
 * The barriers prevent the compiler from narrowing down the
219
 * possible value range of the mask and ~mask in the select
220
 * statements, which avoids the recognition of the select
221
 * and turning it into a conditional load or branch.
222
 */
223
static ossl_inline unsigned int value_barrier(unsigned int a)
224
0
{
225
0
#if !defined(OPENSSL_NO_ASM) && defined(__GNUC__)
226
0
    unsigned int r;
227
0
    __asm__("" : "=r"(r) : "0"(a));
228
#else
229
    volatile unsigned int r = a;
230
#endif
231
0
    return r;
232
0
}
Unexecuted instantiation: bn_exp.c:value_barrier
Unexecuted instantiation: bn_lib.c:value_barrier
Unexecuted instantiation: rsaz_exp.c:value_barrier
Unexecuted instantiation: err.c:value_barrier
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:value_barrier
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:value_barrier
Unexecuted instantiation: rsa_ossl.c:value_barrier
Unexecuted instantiation: rsa_pk1.c:value_barrier
Unexecuted instantiation: rsa_pmeth.c:value_barrier
Unexecuted instantiation: rsa_ssl.c:value_barrier
Unexecuted instantiation: rsa_oaep.c:value_barrier
Unexecuted instantiation: curve448.c:value_barrier
Unexecuted instantiation: curve448_tables.c:value_barrier
Unexecuted instantiation: eddsa.c:value_barrier
Unexecuted instantiation: f_generic.c:value_barrier
Unexecuted instantiation: scalar.c:value_barrier
Unexecuted instantiation: f_impl.c:value_barrier
233
234
/* Convenience method for uint32_t. */
235
static ossl_inline uint32_t value_barrier_32(uint32_t a)
236
0
{
237
0
#if !defined(OPENSSL_NO_ASM) && defined(__GNUC__)
238
0
    uint32_t r;
239
0
    __asm__("" : "=r"(r) : "0"(a));
240
#else
241
    volatile uint32_t r = a;
242
#endif
243
0
    return r;
244
0
}
Unexecuted instantiation: bn_exp.c:value_barrier_32
Unexecuted instantiation: bn_lib.c:value_barrier_32
Unexecuted instantiation: rsaz_exp.c:value_barrier_32
Unexecuted instantiation: err.c:value_barrier_32
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:value_barrier_32
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:value_barrier_32
Unexecuted instantiation: rsa_ossl.c:value_barrier_32
Unexecuted instantiation: rsa_pk1.c:value_barrier_32
Unexecuted instantiation: rsa_pmeth.c:value_barrier_32
Unexecuted instantiation: rsa_ssl.c:value_barrier_32
Unexecuted instantiation: rsa_oaep.c:value_barrier_32
Unexecuted instantiation: curve448.c:value_barrier_32
Unexecuted instantiation: curve448_tables.c:value_barrier_32
Unexecuted instantiation: eddsa.c:value_barrier_32
Unexecuted instantiation: f_generic.c:value_barrier_32
Unexecuted instantiation: scalar.c:value_barrier_32
Unexecuted instantiation: f_impl.c:value_barrier_32
245
246
/* Convenience method for uint64_t. */
247
static ossl_inline uint64_t value_barrier_64(uint64_t a)
248
0
{
249
0
#if !defined(OPENSSL_NO_ASM) && defined(__GNUC__)
250
0
    uint64_t r;
251
0
    __asm__("" : "=r"(r) : "0"(a));
252
#else
253
    volatile uint64_t r = a;
254
#endif
255
0
    return r;
256
0
}
Unexecuted instantiation: bn_exp.c:value_barrier_64
Unexecuted instantiation: bn_lib.c:value_barrier_64
Unexecuted instantiation: rsaz_exp.c:value_barrier_64
Unexecuted instantiation: err.c:value_barrier_64
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:value_barrier_64
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:value_barrier_64
Unexecuted instantiation: rsa_ossl.c:value_barrier_64
Unexecuted instantiation: rsa_pk1.c:value_barrier_64
Unexecuted instantiation: rsa_pmeth.c:value_barrier_64
Unexecuted instantiation: rsa_ssl.c:value_barrier_64
Unexecuted instantiation: rsa_oaep.c:value_barrier_64
Unexecuted instantiation: curve448.c:value_barrier_64
Unexecuted instantiation: curve448_tables.c:value_barrier_64
Unexecuted instantiation: eddsa.c:value_barrier_64
Unexecuted instantiation: f_generic.c:value_barrier_64
Unexecuted instantiation: scalar.c:value_barrier_64
Unexecuted instantiation: f_impl.c:value_barrier_64
257
258
/* Convenience method for size_t. */
259
static ossl_inline size_t value_barrier_s(size_t a)
260
0
{
261
0
#if !defined(OPENSSL_NO_ASM) && defined(__GNUC__)
262
0
    size_t r;
263
0
    __asm__("" : "=r"(r) : "0"(a));
264
#else
265
    volatile size_t r = a;
266
#endif
267
0
    return r;
268
0
}
Unexecuted instantiation: bn_exp.c:value_barrier_s
Unexecuted instantiation: bn_lib.c:value_barrier_s
Unexecuted instantiation: rsaz_exp.c:value_barrier_s
Unexecuted instantiation: err.c:value_barrier_s
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:value_barrier_s
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:value_barrier_s
Unexecuted instantiation: rsa_ossl.c:value_barrier_s
Unexecuted instantiation: rsa_pk1.c:value_barrier_s
Unexecuted instantiation: rsa_pmeth.c:value_barrier_s
Unexecuted instantiation: rsa_ssl.c:value_barrier_s
Unexecuted instantiation: rsa_oaep.c:value_barrier_s
Unexecuted instantiation: curve448.c:value_barrier_s
Unexecuted instantiation: curve448_tables.c:value_barrier_s
Unexecuted instantiation: eddsa.c:value_barrier_s
Unexecuted instantiation: f_generic.c:value_barrier_s
Unexecuted instantiation: scalar.c:value_barrier_s
Unexecuted instantiation: f_impl.c:value_barrier_s
269
270
static ossl_inline unsigned int constant_time_select(unsigned int mask,
271
                                                     unsigned int a,
272
                                                     unsigned int b)
273
0
{
274
0
    return (value_barrier(mask) & a) | (value_barrier(~mask) & b);
275
0
}
Unexecuted instantiation: bn_exp.c:constant_time_select
Unexecuted instantiation: bn_lib.c:constant_time_select
Unexecuted instantiation: rsaz_exp.c:constant_time_select
Unexecuted instantiation: err.c:constant_time_select
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_select
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_select
Unexecuted instantiation: rsa_ossl.c:constant_time_select
Unexecuted instantiation: rsa_pk1.c:constant_time_select
Unexecuted instantiation: rsa_pmeth.c:constant_time_select
Unexecuted instantiation: rsa_ssl.c:constant_time_select
Unexecuted instantiation: rsa_oaep.c:constant_time_select
Unexecuted instantiation: curve448.c:constant_time_select
Unexecuted instantiation: curve448_tables.c:constant_time_select
Unexecuted instantiation: eddsa.c:constant_time_select
Unexecuted instantiation: f_generic.c:constant_time_select
Unexecuted instantiation: scalar.c:constant_time_select
Unexecuted instantiation: f_impl.c:constant_time_select
276
277
static ossl_inline size_t constant_time_select_s(size_t mask,
278
                                                 size_t a,
279
                                                 size_t b)
280
0
{
281
0
    return (value_barrier_s(mask) & a) | (value_barrier_s(~mask) & b);
282
0
}
Unexecuted instantiation: bn_exp.c:constant_time_select_s
Unexecuted instantiation: bn_lib.c:constant_time_select_s
Unexecuted instantiation: rsaz_exp.c:constant_time_select_s
Unexecuted instantiation: err.c:constant_time_select_s
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_select_s
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_select_s
Unexecuted instantiation: rsa_ossl.c:constant_time_select_s
Unexecuted instantiation: rsa_pk1.c:constant_time_select_s
Unexecuted instantiation: rsa_pmeth.c:constant_time_select_s
Unexecuted instantiation: rsa_ssl.c:constant_time_select_s
Unexecuted instantiation: rsa_oaep.c:constant_time_select_s
Unexecuted instantiation: curve448.c:constant_time_select_s
Unexecuted instantiation: curve448_tables.c:constant_time_select_s
Unexecuted instantiation: eddsa.c:constant_time_select_s
Unexecuted instantiation: f_generic.c:constant_time_select_s
Unexecuted instantiation: scalar.c:constant_time_select_s
Unexecuted instantiation: f_impl.c:constant_time_select_s
283
284
static ossl_inline unsigned char constant_time_select_8(unsigned char mask,
285
                                                        unsigned char a,
286
                                                        unsigned char b)
287
0
{
288
0
    return (unsigned char)constant_time_select(mask, a, b);
289
0
}
Unexecuted instantiation: bn_exp.c:constant_time_select_8
Unexecuted instantiation: bn_lib.c:constant_time_select_8
Unexecuted instantiation: rsaz_exp.c:constant_time_select_8
Unexecuted instantiation: err.c:constant_time_select_8
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_select_8
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_select_8
Unexecuted instantiation: rsa_ossl.c:constant_time_select_8
Unexecuted instantiation: rsa_pk1.c:constant_time_select_8
Unexecuted instantiation: rsa_pmeth.c:constant_time_select_8
Unexecuted instantiation: rsa_ssl.c:constant_time_select_8
Unexecuted instantiation: rsa_oaep.c:constant_time_select_8
Unexecuted instantiation: curve448.c:constant_time_select_8
Unexecuted instantiation: curve448_tables.c:constant_time_select_8
Unexecuted instantiation: eddsa.c:constant_time_select_8
Unexecuted instantiation: f_generic.c:constant_time_select_8
Unexecuted instantiation: scalar.c:constant_time_select_8
Unexecuted instantiation: f_impl.c:constant_time_select_8
290
291
static ossl_inline int constant_time_select_int(unsigned int mask, int a,
292
                                                int b)
293
0
{
294
0
    return (int)constant_time_select(mask, (unsigned)(a), (unsigned)(b));
295
0
}
Unexecuted instantiation: bn_exp.c:constant_time_select_int
Unexecuted instantiation: bn_lib.c:constant_time_select_int
Unexecuted instantiation: rsaz_exp.c:constant_time_select_int
Unexecuted instantiation: err.c:constant_time_select_int
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_select_int
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_select_int
Unexecuted instantiation: rsa_ossl.c:constant_time_select_int
Unexecuted instantiation: rsa_pk1.c:constant_time_select_int
Unexecuted instantiation: rsa_pmeth.c:constant_time_select_int
Unexecuted instantiation: rsa_ssl.c:constant_time_select_int
Unexecuted instantiation: rsa_oaep.c:constant_time_select_int
Unexecuted instantiation: curve448.c:constant_time_select_int
Unexecuted instantiation: curve448_tables.c:constant_time_select_int
Unexecuted instantiation: eddsa.c:constant_time_select_int
Unexecuted instantiation: f_generic.c:constant_time_select_int
Unexecuted instantiation: scalar.c:constant_time_select_int
Unexecuted instantiation: f_impl.c:constant_time_select_int
296
297
static ossl_inline int constant_time_select_int_s(size_t mask, int a, int b)
298
0
{
299
0
    return (int)constant_time_select((unsigned)mask, (unsigned)(a),
300
0
                                      (unsigned)(b));
301
0
}
Unexecuted instantiation: bn_exp.c:constant_time_select_int_s
Unexecuted instantiation: bn_lib.c:constant_time_select_int_s
Unexecuted instantiation: rsaz_exp.c:constant_time_select_int_s
Unexecuted instantiation: err.c:constant_time_select_int_s
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_select_int_s
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_select_int_s
Unexecuted instantiation: rsa_ossl.c:constant_time_select_int_s
Unexecuted instantiation: rsa_pk1.c:constant_time_select_int_s
Unexecuted instantiation: rsa_pmeth.c:constant_time_select_int_s
Unexecuted instantiation: rsa_ssl.c:constant_time_select_int_s
Unexecuted instantiation: rsa_oaep.c:constant_time_select_int_s
Unexecuted instantiation: curve448.c:constant_time_select_int_s
Unexecuted instantiation: curve448_tables.c:constant_time_select_int_s
Unexecuted instantiation: eddsa.c:constant_time_select_int_s
Unexecuted instantiation: f_generic.c:constant_time_select_int_s
Unexecuted instantiation: scalar.c:constant_time_select_int_s
Unexecuted instantiation: f_impl.c:constant_time_select_int_s
302
303
static ossl_inline uint32_t constant_time_select_32(uint32_t mask, uint32_t a,
304
                                                    uint32_t b)
305
0
{
306
0
    return (value_barrier_32(mask) & a) | (value_barrier_32(~mask) & b);
307
0
}
Unexecuted instantiation: bn_exp.c:constant_time_select_32
Unexecuted instantiation: bn_lib.c:constant_time_select_32
Unexecuted instantiation: rsaz_exp.c:constant_time_select_32
Unexecuted instantiation: err.c:constant_time_select_32
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_select_32
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_select_32
Unexecuted instantiation: rsa_ossl.c:constant_time_select_32
Unexecuted instantiation: rsa_pk1.c:constant_time_select_32
Unexecuted instantiation: rsa_pmeth.c:constant_time_select_32
Unexecuted instantiation: rsa_ssl.c:constant_time_select_32
Unexecuted instantiation: rsa_oaep.c:constant_time_select_32
Unexecuted instantiation: curve448.c:constant_time_select_32
Unexecuted instantiation: curve448_tables.c:constant_time_select_32
Unexecuted instantiation: eddsa.c:constant_time_select_32
Unexecuted instantiation: f_generic.c:constant_time_select_32
Unexecuted instantiation: scalar.c:constant_time_select_32
Unexecuted instantiation: f_impl.c:constant_time_select_32
308
309
static ossl_inline uint64_t constant_time_select_64(uint64_t mask, uint64_t a,
310
                                                    uint64_t b)
311
0
{
312
0
    return (value_barrier_64(mask) & a) | (value_barrier_64(~mask) & b);
313
0
}
Unexecuted instantiation: bn_exp.c:constant_time_select_64
Unexecuted instantiation: bn_lib.c:constant_time_select_64
Unexecuted instantiation: rsaz_exp.c:constant_time_select_64
Unexecuted instantiation: err.c:constant_time_select_64
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_select_64
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_select_64
Unexecuted instantiation: rsa_ossl.c:constant_time_select_64
Unexecuted instantiation: rsa_pk1.c:constant_time_select_64
Unexecuted instantiation: rsa_pmeth.c:constant_time_select_64
Unexecuted instantiation: rsa_ssl.c:constant_time_select_64
Unexecuted instantiation: rsa_oaep.c:constant_time_select_64
Unexecuted instantiation: curve448.c:constant_time_select_64
Unexecuted instantiation: curve448_tables.c:constant_time_select_64
Unexecuted instantiation: eddsa.c:constant_time_select_64
Unexecuted instantiation: f_generic.c:constant_time_select_64
Unexecuted instantiation: scalar.c:constant_time_select_64
Unexecuted instantiation: f_impl.c:constant_time_select_64
314
315
/*
316
 * mask must be 0xFFFFFFFF or 0x00000000.
317
 *
318
 * if (mask) {
319
 *     uint32_t tmp = *a;
320
 *
321
 *     *a = *b;
322
 *     *b = tmp;
323
 * }
324
 */
325
static ossl_inline void constant_time_cond_swap_32(uint32_t mask, uint32_t *a,
326
                                                   uint32_t *b)
327
0
{
328
0
    uint32_t xor = *a ^ *b;
329
330
0
    xor &= mask;
331
0
    *a ^= xor;
332
0
    *b ^= xor;
333
0
}
Unexecuted instantiation: bn_exp.c:constant_time_cond_swap_32
Unexecuted instantiation: bn_lib.c:constant_time_cond_swap_32
Unexecuted instantiation: rsaz_exp.c:constant_time_cond_swap_32
Unexecuted instantiation: err.c:constant_time_cond_swap_32
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_cond_swap_32
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_cond_swap_32
Unexecuted instantiation: rsa_ossl.c:constant_time_cond_swap_32
Unexecuted instantiation: rsa_pk1.c:constant_time_cond_swap_32
Unexecuted instantiation: rsa_pmeth.c:constant_time_cond_swap_32
Unexecuted instantiation: rsa_ssl.c:constant_time_cond_swap_32
Unexecuted instantiation: rsa_oaep.c:constant_time_cond_swap_32
Unexecuted instantiation: curve448.c:constant_time_cond_swap_32
Unexecuted instantiation: curve448_tables.c:constant_time_cond_swap_32
Unexecuted instantiation: eddsa.c:constant_time_cond_swap_32
Unexecuted instantiation: f_generic.c:constant_time_cond_swap_32
Unexecuted instantiation: scalar.c:constant_time_cond_swap_32
Unexecuted instantiation: f_impl.c:constant_time_cond_swap_32
334
335
/*
336
 * mask must be 0xFFFFFFFF or 0x00000000.
337
 *
338
 * if (mask) {
339
 *     uint64_t tmp = *a;
340
 *
341
 *     *a = *b;
342
 *     *b = tmp;
343
 * }
344
 */
345
static ossl_inline void constant_time_cond_swap_64(uint64_t mask, uint64_t *a,
346
                                                   uint64_t *b)
347
0
{
348
0
    uint64_t xor = *a ^ *b;
349
0
350
0
    xor &= mask;
351
0
    *a ^= xor;
352
0
    *b ^= xor;
353
0
}
Unexecuted instantiation: bn_exp.c:constant_time_cond_swap_64
Unexecuted instantiation: bn_lib.c:constant_time_cond_swap_64
Unexecuted instantiation: rsaz_exp.c:constant_time_cond_swap_64
Unexecuted instantiation: err.c:constant_time_cond_swap_64
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_cond_swap_64
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_cond_swap_64
Unexecuted instantiation: rsa_ossl.c:constant_time_cond_swap_64
Unexecuted instantiation: rsa_pk1.c:constant_time_cond_swap_64
Unexecuted instantiation: rsa_pmeth.c:constant_time_cond_swap_64
Unexecuted instantiation: rsa_ssl.c:constant_time_cond_swap_64
Unexecuted instantiation: rsa_oaep.c:constant_time_cond_swap_64
Unexecuted instantiation: curve448.c:constant_time_cond_swap_64
Unexecuted instantiation: curve448_tables.c:constant_time_cond_swap_64
Unexecuted instantiation: eddsa.c:constant_time_cond_swap_64
Unexecuted instantiation: f_generic.c:constant_time_cond_swap_64
Unexecuted instantiation: scalar.c:constant_time_cond_swap_64
Unexecuted instantiation: f_impl.c:constant_time_cond_swap_64
354
355
/*
356
 * table is a two dimensional array of bytes. Each row has rowsize elements.
357
 * Copies row number idx into out. rowsize and numrows are not considered
358
 * private.
359
 */
360
static ossl_inline void constant_time_lookup(void *out,
361
                                             const void *table,
362
                                             size_t rowsize,
363
                                             size_t numrows,
364
                                             size_t idx)
365
0
{
366
0
    size_t i, j;
367
0
    const unsigned char *tablec = (const unsigned char *)table;
368
0
    unsigned char *outc = (unsigned char *)out;
369
0
    unsigned char mask;
370
371
0
    memset(out, 0, rowsize);
372
373
    /* Note idx may underflow - but that is well defined */
374
0
    for (i = 0; i < numrows; i++, idx--) {
375
0
        mask = (unsigned char)constant_time_is_zero_s(idx);
376
0
        for (j = 0; j < rowsize; j++)
377
0
            *(outc + j) |= constant_time_select_8(mask, *(tablec++), 0);
378
0
    }
379
0
}
Unexecuted instantiation: bn_exp.c:constant_time_lookup
Unexecuted instantiation: bn_lib.c:constant_time_lookup
Unexecuted instantiation: rsaz_exp.c:constant_time_lookup
Unexecuted instantiation: err.c:constant_time_lookup
Unexecuted instantiation: e_aes_cbc_hmac_sha1.c:constant_time_lookup
Unexecuted instantiation: e_aes_cbc_hmac_sha256.c:constant_time_lookup
Unexecuted instantiation: rsa_ossl.c:constant_time_lookup
Unexecuted instantiation: rsa_pk1.c:constant_time_lookup
Unexecuted instantiation: rsa_pmeth.c:constant_time_lookup
Unexecuted instantiation: rsa_ssl.c:constant_time_lookup
Unexecuted instantiation: rsa_oaep.c:constant_time_lookup
Unexecuted instantiation: curve448.c:constant_time_lookup
Unexecuted instantiation: curve448_tables.c:constant_time_lookup
Unexecuted instantiation: eddsa.c:constant_time_lookup
Unexecuted instantiation: f_generic.c:constant_time_lookup
Unexecuted instantiation: scalar.c:constant_time_lookup
Unexecuted instantiation: f_impl.c:constant_time_lookup
380
381
/*
382
 * Expected usage pattern is to unconditionally set error and then
383
 * wipe it if there was no actual error. |clear| is 1 or 0.
384
 */
385
void err_clear_last_constant_time(int clear);
386
387
#endif                          /* OSSL_INTERNAL_CONSTANT_TIME_H */