Coverage Report

Created: 2018-08-29 13:53

/src/openssl/include/internal/constant_time_locl.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright 2014-2018 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 HEADER_CONSTANT_TIME_LOCL_H
11
# define HEADER_CONSTANT_TIME_LOCL_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: ssl3_record.c:constant_time_msb
Unexecuted instantiation: s3_cbc.c:constant_time_msb
Unexecuted instantiation: statem_srvr.c:constant_time_msb
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_msb
Unexecuted instantiation: bn_exp.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: rsa_oaep.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: ssl3_record.c:constant_time_msb_32
Unexecuted instantiation: s3_cbc.c:constant_time_msb_32
Unexecuted instantiation: statem_srvr.c:constant_time_msb_32
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_msb_32
Unexecuted instantiation: bn_exp.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: rsa_oaep.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: ssl3_record.c:constant_time_msb_64
Unexecuted instantiation: s3_cbc.c:constant_time_msb_64
Unexecuted instantiation: statem_srvr.c:constant_time_msb_64
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_msb_64
Unexecuted instantiation: bn_exp.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: rsa_oaep.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: ssl3_record.c:constant_time_msb_s
Unexecuted instantiation: s3_cbc.c:constant_time_msb_s
Unexecuted instantiation: statem_srvr.c:constant_time_msb_s
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_msb_s
Unexecuted instantiation: bn_exp.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: rsa_oaep.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: ssl3_record.c:constant_time_lt
Unexecuted instantiation: s3_cbc.c:constant_time_lt
Unexecuted instantiation: statem_srvr.c:constant_time_lt
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_lt
Unexecuted instantiation: bn_exp.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: rsa_oaep.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: ssl3_record.c:constant_time_lt_s
Unexecuted instantiation: s3_cbc.c:constant_time_lt_s
Unexecuted instantiation: statem_srvr.c:constant_time_lt_s
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_lt_s
Unexecuted instantiation: bn_exp.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: rsa_oaep.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: ssl3_record.c:constant_time_lt_8
Unexecuted instantiation: s3_cbc.c:constant_time_lt_8
Unexecuted instantiation: statem_srvr.c:constant_time_lt_8
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_lt_8
Unexecuted instantiation: bn_exp.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: rsa_oaep.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: ssl3_record.c:constant_time_lt_64
Unexecuted instantiation: s3_cbc.c:constant_time_lt_64
Unexecuted instantiation: statem_srvr.c:constant_time_lt_64
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_lt_64
Unexecuted instantiation: bn_exp.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: rsa_oaep.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: ssl3_record.c:constant_time_ge
Unexecuted instantiation: s3_cbc.c:constant_time_ge
Unexecuted instantiation: statem_srvr.c:constant_time_ge
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_ge
Unexecuted instantiation: bn_exp.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: rsa_oaep.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: ssl3_record.c:constant_time_ge_s
Unexecuted instantiation: s3_cbc.c:constant_time_ge_s
Unexecuted instantiation: statem_srvr.c:constant_time_ge_s
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_ge_s
Unexecuted instantiation: bn_exp.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: rsa_oaep.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: ssl3_record.c:constant_time_ge_8
Unexecuted instantiation: s3_cbc.c:constant_time_ge_8
Unexecuted instantiation: statem_srvr.c:constant_time_ge_8
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_ge_8
Unexecuted instantiation: bn_exp.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: rsa_oaep.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: ssl3_record.c:constant_time_ge_8_s
Unexecuted instantiation: s3_cbc.c:constant_time_ge_8_s
Unexecuted instantiation: statem_srvr.c:constant_time_ge_8_s
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_ge_8_s
Unexecuted instantiation: bn_exp.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: rsa_oaep.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: ssl3_record.c:constant_time_is_zero
Unexecuted instantiation: s3_cbc.c:constant_time_is_zero
Unexecuted instantiation: statem_srvr.c:constant_time_is_zero
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_is_zero
Unexecuted instantiation: bn_exp.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: rsa_oaep.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: ssl3_record.c:constant_time_is_zero_s
Unexecuted instantiation: s3_cbc.c:constant_time_is_zero_s
Unexecuted instantiation: statem_srvr.c:constant_time_is_zero_s
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_is_zero_s
Unexecuted instantiation: bn_exp.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: rsa_oaep.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: ssl3_record.c:constant_time_is_zero_8
Unexecuted instantiation: s3_cbc.c:constant_time_is_zero_8
Unexecuted instantiation: statem_srvr.c:constant_time_is_zero_8
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_is_zero_8
Unexecuted instantiation: bn_exp.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: rsa_oaep.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: ssl3_record.c:constant_time_is_zero_32
Unexecuted instantiation: s3_cbc.c:constant_time_is_zero_32
Unexecuted instantiation: statem_srvr.c:constant_time_is_zero_32
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_is_zero_32
Unexecuted instantiation: bn_exp.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: rsa_oaep.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: ssl3_record.c:constant_time_eq
Unexecuted instantiation: s3_cbc.c:constant_time_eq
Unexecuted instantiation: statem_srvr.c:constant_time_eq
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_eq
Unexecuted instantiation: bn_exp.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: rsa_oaep.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: ssl3_record.c:constant_time_eq_s
Unexecuted instantiation: s3_cbc.c:constant_time_eq_s
Unexecuted instantiation: statem_srvr.c:constant_time_eq_s
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_eq_s
Unexecuted instantiation: bn_exp.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: rsa_oaep.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: ssl3_record.c:constant_time_eq_8
Unexecuted instantiation: s3_cbc.c:constant_time_eq_8
Unexecuted instantiation: statem_srvr.c:constant_time_eq_8
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_eq_8
Unexecuted instantiation: bn_exp.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: rsa_oaep.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: ssl3_record.c:constant_time_eq_8_s
Unexecuted instantiation: s3_cbc.c:constant_time_eq_8_s
Unexecuted instantiation: statem_srvr.c:constant_time_eq_8_s
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_eq_8_s
Unexecuted instantiation: bn_exp.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: rsa_oaep.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: ssl3_record.c:constant_time_eq_int
Unexecuted instantiation: s3_cbc.c:constant_time_eq_int
Unexecuted instantiation: statem_srvr.c:constant_time_eq_int
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_eq_int
Unexecuted instantiation: bn_exp.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: rsa_oaep.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: ssl3_record.c:constant_time_eq_int_8
Unexecuted instantiation: s3_cbc.c:constant_time_eq_int_8
Unexecuted instantiation: statem_srvr.c:constant_time_eq_int_8
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_eq_int_8
Unexecuted instantiation: bn_exp.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: rsa_oaep.c:constant_time_eq_int_8
Unexecuted instantiation: f_impl.c:constant_time_eq_int_8
215
216
static ossl_inline unsigned int constant_time_select(unsigned int mask,
217
                                                     unsigned int a,
218
                                                     unsigned int b)
219
0
{
220
0
    return (mask & a) | (~mask & b);
221
0
}
Unexecuted instantiation: ssl3_record.c:constant_time_select
Unexecuted instantiation: s3_cbc.c:constant_time_select
Unexecuted instantiation: statem_srvr.c:constant_time_select
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_select
Unexecuted instantiation: bn_exp.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: rsa_oaep.c:constant_time_select
Unexecuted instantiation: f_impl.c:constant_time_select
222
223
static ossl_inline size_t constant_time_select_s(size_t mask,
224
                                                 size_t a,
225
                                                 size_t b)
226
0
{
227
0
    return (mask & a) | (~mask & b);
228
0
}
Unexecuted instantiation: ssl3_record.c:constant_time_select_s
Unexecuted instantiation: s3_cbc.c:constant_time_select_s
Unexecuted instantiation: statem_srvr.c:constant_time_select_s
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_select_s
Unexecuted instantiation: bn_exp.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: rsa_oaep.c:constant_time_select_s
Unexecuted instantiation: f_impl.c:constant_time_select_s
229
230
static ossl_inline unsigned char constant_time_select_8(unsigned char mask,
231
                                                        unsigned char a,
232
                                                        unsigned char b)
233
0
{
234
0
    return (unsigned char)constant_time_select(mask, a, b);
235
0
}
Unexecuted instantiation: ssl3_record.c:constant_time_select_8
Unexecuted instantiation: s3_cbc.c:constant_time_select_8
Unexecuted instantiation: statem_srvr.c:constant_time_select_8
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_select_8
Unexecuted instantiation: bn_exp.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: rsa_oaep.c:constant_time_select_8
Unexecuted instantiation: f_impl.c:constant_time_select_8
236
237
static ossl_inline int constant_time_select_int(unsigned int mask, int a,
238
                                                int b)
239
0
{
240
0
    return (int)constant_time_select(mask, (unsigned)(a), (unsigned)(b));
241
0
}
Unexecuted instantiation: ssl3_record.c:constant_time_select_int
Unexecuted instantiation: s3_cbc.c:constant_time_select_int
Unexecuted instantiation: statem_srvr.c:constant_time_select_int
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_select_int
Unexecuted instantiation: bn_exp.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: rsa_oaep.c:constant_time_select_int
Unexecuted instantiation: f_impl.c:constant_time_select_int
242
243
static ossl_inline int constant_time_select_int_s(size_t mask, int a, int b)
244
0
{
245
0
    return (int)constant_time_select((unsigned)mask, (unsigned)(a),
246
0
                                      (unsigned)(b));
247
0
}
Unexecuted instantiation: ssl3_record.c:constant_time_select_int_s
Unexecuted instantiation: s3_cbc.c:constant_time_select_int_s
Unexecuted instantiation: statem_srvr.c:constant_time_select_int_s
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_select_int_s
Unexecuted instantiation: bn_exp.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: rsa_oaep.c:constant_time_select_int_s
Unexecuted instantiation: f_impl.c:constant_time_select_int_s
248
249
static ossl_inline uint32_t constant_time_select_32(uint32_t mask, uint32_t a,
250
                                                    uint32_t b)
251
0
{
252
0
    return (mask & a) | (~mask & b);
253
0
}
Unexecuted instantiation: ssl3_record.c:constant_time_select_32
Unexecuted instantiation: s3_cbc.c:constant_time_select_32
Unexecuted instantiation: statem_srvr.c:constant_time_select_32
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_select_32
Unexecuted instantiation: bn_exp.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: rsa_oaep.c:constant_time_select_32
Unexecuted instantiation: f_impl.c:constant_time_select_32
254
255
static ossl_inline uint64_t constant_time_select_64(uint64_t mask, uint64_t a,
256
                                                    uint64_t b)
257
0
{
258
0
    return (mask & a) | (~mask & b);
259
0
}
Unexecuted instantiation: ssl3_record.c:constant_time_select_64
Unexecuted instantiation: s3_cbc.c:constant_time_select_64
Unexecuted instantiation: statem_srvr.c:constant_time_select_64
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_select_64
Unexecuted instantiation: bn_exp.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: rsa_oaep.c:constant_time_select_64
Unexecuted instantiation: f_impl.c:constant_time_select_64
260
261
/*
262
 * mask must be 0xFFFFFFFF or 0x00000000.
263
 *
264
 * if (mask) {
265
 *     uint32_t tmp = *a;
266
 *
267
 *     *a = *b;
268
 *     *b = tmp;
269
 * }
270
 */
271
static ossl_inline void constant_time_cond_swap_32(uint32_t mask, uint32_t *a,
272
                                                   uint32_t *b)
273
0
{
274
0
    uint32_t xor = *a ^ *b;
275
0
276
0
    xor &= mask;
277
0
    *a ^= xor;
278
0
    *b ^= xor;
279
0
}
Unexecuted instantiation: ssl3_record.c:constant_time_cond_swap_32
Unexecuted instantiation: s3_cbc.c:constant_time_cond_swap_32
Unexecuted instantiation: statem_srvr.c:constant_time_cond_swap_32
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_cond_swap_32
Unexecuted instantiation: bn_exp.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: rsa_oaep.c:constant_time_cond_swap_32
Unexecuted instantiation: f_impl.c:constant_time_cond_swap_32
280
281
/*
282
 * mask must be 0xFFFFFFFF or 0x00000000.
283
 *
284
 * if (mask) {
285
 *     uint64_t tmp = *a;
286
 *
287
 *     *a = *b;
288
 *     *b = tmp;
289
 * }
290
 */
291
static ossl_inline void constant_time_cond_swap_64(uint64_t mask, uint64_t *a,
292
                                                   uint64_t *b)
293
0
{
294
0
    uint64_t xor = *a ^ *b;
295
0
296
0
    xor &= mask;
297
0
    *a ^= xor;
298
0
    *b ^= xor;
299
0
}
Unexecuted instantiation: ssl3_record.c:constant_time_cond_swap_64
Unexecuted instantiation: s3_cbc.c:constant_time_cond_swap_64
Unexecuted instantiation: statem_srvr.c:constant_time_cond_swap_64
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_cond_swap_64
Unexecuted instantiation: bn_exp.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: rsa_oaep.c:constant_time_cond_swap_64
Unexecuted instantiation: f_impl.c:constant_time_cond_swap_64
300
301
/*
302
 * table is a two dimensional array of bytes. Each row has rowsize elements.
303
 * Copies row number idx into out. rowsize and numrows are not considered
304
 * private.
305
 */
306
static ossl_inline void constant_time_lookup(void *out,
307
                                             const void *table,
308
                                             size_t rowsize,
309
                                             size_t numrows,
310
                                             size_t idx)
311
0
{
312
0
    size_t i, j;
313
0
    const unsigned char *tablec = (const unsigned char *)table;
314
0
    unsigned char *outc = (unsigned char *)out;
315
0
    unsigned char mask;
316
0
317
0
    memset(out, 0, rowsize);
318
0
319
0
    /* Note idx may underflow - but that is well defined */
320
0
    for (i = 0; i < numrows; i++, idx--) {
321
0
        mask = (unsigned char)constant_time_is_zero_s(idx);
322
0
        for (j = 0; j < rowsize; j++)
323
0
            *(outc + j) |= constant_time_select_8(mask, *(tablec++), 0);
324
0
    }
325
0
}
Unexecuted instantiation: ssl3_record.c:constant_time_lookup
Unexecuted instantiation: s3_cbc.c:constant_time_lookup
Unexecuted instantiation: statem_srvr.c:constant_time_lookup
Unexecuted instantiation: bn_lib.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_pk1.c:constant_time_lookup
Unexecuted instantiation: bn_exp.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: rsa_oaep.c:constant_time_lookup
Unexecuted instantiation: f_impl.c:constant_time_lookup
326
327
#endif                          /* HEADER_CONSTANT_TIME_LOCL_H */