| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/bn/bn_nist.c |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||||||||||||||
| 2 | - | |||||||||||||||||||||||||
| 3 | static const unsigned long _nist_p_192[][(192+64 -1)/64] = { | - | ||||||||||||||||||||||||
| 4 | {0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFEULL, 0xFFFFFFFFFFFFFFFFULL}, | - | ||||||||||||||||||||||||
| 5 | {0xFFFFFFFFFFFFFFFEULL, 0xFFFFFFFFFFFFFFFDULL, 0xFFFFFFFFFFFFFFFFULL}, | - | ||||||||||||||||||||||||
| 6 | {0xFFFFFFFFFFFFFFFDULL, 0xFFFFFFFFFFFFFFFCULL, 0xFFFFFFFFFFFFFFFFULL} | - | ||||||||||||||||||||||||
| 7 | }; | - | ||||||||||||||||||||||||
| 8 | static const unsigned long _nist_p_192_sqr[] = { | - | ||||||||||||||||||||||||
| 9 | 0x0000000000000001ULL, 0x0000000000000002ULL, 0x0000000000000001ULL, | - | ||||||||||||||||||||||||
| 10 | 0xFFFFFFFFFFFFFFFEULL, 0xFFFFFFFFFFFFFFFDULL, 0xFFFFFFFFFFFFFFFFULL | - | ||||||||||||||||||||||||
| 11 | }; | - | ||||||||||||||||||||||||
| 12 | static const unsigned long _nist_p_224[][(224+64 -1)/64] = { | - | ||||||||||||||||||||||||
| 13 | { | - | ||||||||||||||||||||||||
| 14 | 0x0000000000000001ULL, 0xFFFFFFFF00000000ULL, | - | ||||||||||||||||||||||||
| 15 | 0xFFFFFFFFFFFFFFFFULL, 0x00000000FFFFFFFFULL | - | ||||||||||||||||||||||||
| 16 | }, | - | ||||||||||||||||||||||||
| 17 | { | - | ||||||||||||||||||||||||
| 18 | 0x0000000000000002ULL, 0xFFFFFFFE00000000ULL, | - | ||||||||||||||||||||||||
| 19 | 0xFFFFFFFFFFFFFFFFULL, 0x00000001FFFFFFFFULL | - | ||||||||||||||||||||||||
| 20 | } | - | ||||||||||||||||||||||||
| 21 | }; | - | ||||||||||||||||||||||||
| 22 | static const unsigned long _nist_p_224_sqr[] = { | - | ||||||||||||||||||||||||
| 23 | 0x0000000000000001ULL, 0xFFFFFFFE00000000ULL, | - | ||||||||||||||||||||||||
| 24 | 0xFFFFFFFFFFFFFFFFULL, 0x0000000200000000ULL, | - | ||||||||||||||||||||||||
| 25 | 0x0000000000000000ULL, 0xFFFFFFFFFFFFFFFEULL, | - | ||||||||||||||||||||||||
| 26 | 0xFFFFFFFFFFFFFFFFULL | - | ||||||||||||||||||||||||
| 27 | }; | - | ||||||||||||||||||||||||
| 28 | static const unsigned long _nist_p_256[][(256+64 -1)/64] = { | - | ||||||||||||||||||||||||
| 29 | { | - | ||||||||||||||||||||||||
| 30 | 0xFFFFFFFFFFFFFFFFULL, 0x00000000FFFFFFFFULL, | - | ||||||||||||||||||||||||
| 31 | 0x0000000000000000ULL, 0xFFFFFFFF00000001ULL | - | ||||||||||||||||||||||||
| 32 | }, | - | ||||||||||||||||||||||||
| 33 | { | - | ||||||||||||||||||||||||
| 34 | 0xFFFFFFFFFFFFFFFEULL, 0x00000001FFFFFFFFULL, | - | ||||||||||||||||||||||||
| 35 | 0x0000000000000000ULL, 0xFFFFFFFE00000002ULL | - | ||||||||||||||||||||||||
| 36 | }, | - | ||||||||||||||||||||||||
| 37 | { | - | ||||||||||||||||||||||||
| 38 | 0xFFFFFFFFFFFFFFFDULL, 0x00000002FFFFFFFFULL, | - | ||||||||||||||||||||||||
| 39 | 0x0000000000000000ULL, 0xFFFFFFFD00000003ULL | - | ||||||||||||||||||||||||
| 40 | }, | - | ||||||||||||||||||||||||
| 41 | { | - | ||||||||||||||||||||||||
| 42 | 0xFFFFFFFFFFFFFFFCULL, 0x00000003FFFFFFFFULL, | - | ||||||||||||||||||||||||
| 43 | 0x0000000000000000ULL, 0xFFFFFFFC00000004ULL | - | ||||||||||||||||||||||||
| 44 | }, | - | ||||||||||||||||||||||||
| 45 | { | - | ||||||||||||||||||||||||
| 46 | 0xFFFFFFFFFFFFFFFBULL, 0x00000004FFFFFFFFULL, | - | ||||||||||||||||||||||||
| 47 | 0x0000000000000000ULL, 0xFFFFFFFB00000005ULL | - | ||||||||||||||||||||||||
| 48 | }, | - | ||||||||||||||||||||||||
| 49 | }; | - | ||||||||||||||||||||||||
| 50 | static const unsigned long _nist_p_256_sqr[] = { | - | ||||||||||||||||||||||||
| 51 | 0x0000000000000001ULL, 0xFFFFFFFE00000000ULL, | - | ||||||||||||||||||||||||
| 52 | 0xFFFFFFFFFFFFFFFFULL, 0x00000001FFFFFFFEULL, | - | ||||||||||||||||||||||||
| 53 | 0x00000001FFFFFFFEULL, 0x00000001FFFFFFFEULL, | - | ||||||||||||||||||||||||
| 54 | 0xFFFFFFFE00000001ULL, 0xFFFFFFFE00000002ULL | - | ||||||||||||||||||||||||
| 55 | }; | - | ||||||||||||||||||||||||
| 56 | static const unsigned long _nist_p_384[][(384+64 -1)/64] = { | - | ||||||||||||||||||||||||
| 57 | { | - | ||||||||||||||||||||||||
| 58 | 0x00000000FFFFFFFFULL, 0xFFFFFFFF00000000ULL, | - | ||||||||||||||||||||||||
| 59 | 0xFFFFFFFFFFFFFFFEULL, 0xFFFFFFFFFFFFFFFFULL, | - | ||||||||||||||||||||||||
| 60 | 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL | - | ||||||||||||||||||||||||
| 61 | }, | - | ||||||||||||||||||||||||
| 62 | { | - | ||||||||||||||||||||||||
| 63 | 0x00000001FFFFFFFEULL, 0xFFFFFFFE00000000ULL, | - | ||||||||||||||||||||||||
| 64 | 0xFFFFFFFFFFFFFFFDULL, 0xFFFFFFFFFFFFFFFFULL, | - | ||||||||||||||||||||||||
| 65 | 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL | - | ||||||||||||||||||||||||
| 66 | }, | - | ||||||||||||||||||||||||
| 67 | { | - | ||||||||||||||||||||||||
| 68 | 0x00000002FFFFFFFDULL, 0xFFFFFFFD00000000ULL, | - | ||||||||||||||||||||||||
| 69 | 0xFFFFFFFFFFFFFFFCULL, 0xFFFFFFFFFFFFFFFFULL, | - | ||||||||||||||||||||||||
| 70 | 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL | - | ||||||||||||||||||||||||
| 71 | }, | - | ||||||||||||||||||||||||
| 72 | { | - | ||||||||||||||||||||||||
| 73 | 0x00000003FFFFFFFCULL, 0xFFFFFFFC00000000ULL, | - | ||||||||||||||||||||||||
| 74 | 0xFFFFFFFFFFFFFFFBULL, 0xFFFFFFFFFFFFFFFFULL, | - | ||||||||||||||||||||||||
| 75 | 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL | - | ||||||||||||||||||||||||
| 76 | }, | - | ||||||||||||||||||||||||
| 77 | { | - | ||||||||||||||||||||||||
| 78 | 0x00000004FFFFFFFBULL, 0xFFFFFFFB00000000ULL, | - | ||||||||||||||||||||||||
| 79 | 0xFFFFFFFFFFFFFFFAULL, 0xFFFFFFFFFFFFFFFFULL, | - | ||||||||||||||||||||||||
| 80 | 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL | - | ||||||||||||||||||||||||
| 81 | }, | - | ||||||||||||||||||||||||
| 82 | }; | - | ||||||||||||||||||||||||
| 83 | static const unsigned long _nist_p_384_sqr[] = { | - | ||||||||||||||||||||||||
| 84 | 0xFFFFFFFE00000001ULL, 0x0000000200000000ULL, 0xFFFFFFFE00000000ULL, | - | ||||||||||||||||||||||||
| 85 | 0x0000000200000000ULL, 0x0000000000000001ULL, 0x0000000000000000ULL, | - | ||||||||||||||||||||||||
| 86 | 0x00000001FFFFFFFEULL, 0xFFFFFFFE00000000ULL, 0xFFFFFFFFFFFFFFFDULL, | - | ||||||||||||||||||||||||
| 87 | 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL | - | ||||||||||||||||||||||||
| 88 | }; | - | ||||||||||||||||||||||||
| 89 | static const unsigned long _nist_p_521[] = { | - | ||||||||||||||||||||||||
| 90 | 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, | - | ||||||||||||||||||||||||
| 91 | 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, | - | ||||||||||||||||||||||||
| 92 | 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x00000000000001FFULL | - | ||||||||||||||||||||||||
| 93 | }; | - | ||||||||||||||||||||||||
| 94 | static const unsigned long _nist_p_521_sqr[] = { | - | ||||||||||||||||||||||||
| 95 | 0x0000000000000001ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, | - | ||||||||||||||||||||||||
| 96 | 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, | - | ||||||||||||||||||||||||
| 97 | 0x0000000000000000ULL, 0x0000000000000000ULL, 0xFFFFFFFFFFFFFC00ULL, | - | ||||||||||||||||||||||||
| 98 | 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, | - | ||||||||||||||||||||||||
| 99 | 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, | - | ||||||||||||||||||||||||
| 100 | 0xFFFFFFFFFFFFFFFFULL, 0x000000000003FFFFULL | - | ||||||||||||||||||||||||
| 101 | }; | - | ||||||||||||||||||||||||
| 102 | static const BIGNUM _bignum_nist_p_192 = { | - | ||||||||||||||||||||||||
| 103 | (unsigned long *)_nist_p_192[0], | - | ||||||||||||||||||||||||
| 104 | (192+64 -1)/64, | - | ||||||||||||||||||||||||
| 105 | (192+64 -1)/64, | - | ||||||||||||||||||||||||
| 106 | 0, | - | ||||||||||||||||||||||||
| 107 | 0x02 | - | ||||||||||||||||||||||||
| 108 | }; | - | ||||||||||||||||||||||||
| 109 | - | |||||||||||||||||||||||||
| 110 | static const BIGNUM _bignum_nist_p_224 = { | - | ||||||||||||||||||||||||
| 111 | (unsigned long *)_nist_p_224[0], | - | ||||||||||||||||||||||||
| 112 | (224+64 -1)/64, | - | ||||||||||||||||||||||||
| 113 | (224+64 -1)/64, | - | ||||||||||||||||||||||||
| 114 | 0, | - | ||||||||||||||||||||||||
| 115 | 0x02 | - | ||||||||||||||||||||||||
| 116 | }; | - | ||||||||||||||||||||||||
| 117 | - | |||||||||||||||||||||||||
| 118 | static const BIGNUM _bignum_nist_p_256 = { | - | ||||||||||||||||||||||||
| 119 | (unsigned long *)_nist_p_256[0], | - | ||||||||||||||||||||||||
| 120 | (256+64 -1)/64, | - | ||||||||||||||||||||||||
| 121 | (256+64 -1)/64, | - | ||||||||||||||||||||||||
| 122 | 0, | - | ||||||||||||||||||||||||
| 123 | 0x02 | - | ||||||||||||||||||||||||
| 124 | }; | - | ||||||||||||||||||||||||
| 125 | - | |||||||||||||||||||||||||
| 126 | static const BIGNUM _bignum_nist_p_384 = { | - | ||||||||||||||||||||||||
| 127 | (unsigned long *)_nist_p_384[0], | - | ||||||||||||||||||||||||
| 128 | (384+64 -1)/64, | - | ||||||||||||||||||||||||
| 129 | (384+64 -1)/64, | - | ||||||||||||||||||||||||
| 130 | 0, | - | ||||||||||||||||||||||||
| 131 | 0x02 | - | ||||||||||||||||||||||||
| 132 | }; | - | ||||||||||||||||||||||||
| 133 | - | |||||||||||||||||||||||||
| 134 | static const BIGNUM _bignum_nist_p_521 = { | - | ||||||||||||||||||||||||
| 135 | (unsigned long *)_nist_p_521, | - | ||||||||||||||||||||||||
| 136 | (521+64 -1)/64, | - | ||||||||||||||||||||||||
| 137 | (521+64 -1)/64, | - | ||||||||||||||||||||||||
| 138 | 0, | - | ||||||||||||||||||||||||
| 139 | 0x02 | - | ||||||||||||||||||||||||
| 140 | }; | - | ||||||||||||||||||||||||
| 141 | - | |||||||||||||||||||||||||
| 142 | - | |||||||||||||||||||||||||
| 143 | const BIGNUM * | - | ||||||||||||||||||||||||
| 144 | BN_get0_nist_prime_192(void) | - | ||||||||||||||||||||||||
| 145 | { | - | ||||||||||||||||||||||||
| 146 | return never executed: &_bignum_nist_p_192;return &_bignum_nist_p_192;never executed: return &_bignum_nist_p_192; | 0 | ||||||||||||||||||||||||
| 147 | } | - | ||||||||||||||||||||||||
| 148 | - | |||||||||||||||||||||||||
| 149 | const BIGNUM * | - | ||||||||||||||||||||||||
| 150 | BN_get0_nist_prime_224(void) | - | ||||||||||||||||||||||||
| 151 | { | - | ||||||||||||||||||||||||
| 152 | return never executed: &_bignum_nist_p_224;return &_bignum_nist_p_224;never executed: return &_bignum_nist_p_224; | 0 | ||||||||||||||||||||||||
| 153 | } | - | ||||||||||||||||||||||||
| 154 | - | |||||||||||||||||||||||||
| 155 | const BIGNUM * | - | ||||||||||||||||||||||||
| 156 | BN_get0_nist_prime_256(void) | - | ||||||||||||||||||||||||
| 157 | { | - | ||||||||||||||||||||||||
| 158 | return never executed: &_bignum_nist_p_256;return &_bignum_nist_p_256;never executed: return &_bignum_nist_p_256; | 0 | ||||||||||||||||||||||||
| 159 | } | - | ||||||||||||||||||||||||
| 160 | - | |||||||||||||||||||||||||
| 161 | const BIGNUM * | - | ||||||||||||||||||||||||
| 162 | BN_get0_nist_prime_384(void) | - | ||||||||||||||||||||||||
| 163 | { | - | ||||||||||||||||||||||||
| 164 | return never executed: &_bignum_nist_p_384;return &_bignum_nist_p_384;never executed: return &_bignum_nist_p_384; | 0 | ||||||||||||||||||||||||
| 165 | } | - | ||||||||||||||||||||||||
| 166 | - | |||||||||||||||||||||||||
| 167 | const BIGNUM * | - | ||||||||||||||||||||||||
| 168 | BN_get0_nist_prime_521(void) | - | ||||||||||||||||||||||||
| 169 | { | - | ||||||||||||||||||||||||
| 170 | return never executed: &_bignum_nist_p_521;return &_bignum_nist_p_521;never executed: return &_bignum_nist_p_521; | 0 | ||||||||||||||||||||||||
| 171 | } | - | ||||||||||||||||||||||||
| 172 | - | |||||||||||||||||||||||||
| 173 | static void | - | ||||||||||||||||||||||||
| 174 | nist_cp_bn_0(unsigned long *dst, const unsigned long *src, int top, int max) | - | ||||||||||||||||||||||||
| 175 | { | - | ||||||||||||||||||||||||
| 176 | int i; | - | ||||||||||||||||||||||||
| 177 | - | |||||||||||||||||||||||||
| 178 | - | |||||||||||||||||||||||||
| 179 | - | |||||||||||||||||||||||||
| 180 | - | |||||||||||||||||||||||||
| 181 | for (i = 0; i < top
| 0 | ||||||||||||||||||||||||
| 182 | dst[i] = src[i]; never executed: dst[i] = src[i]; | 0 | ||||||||||||||||||||||||
| 183 | for (; i < max
| 0 | ||||||||||||||||||||||||
| 184 | dst[i] = 0; never executed: dst[i] = 0; | 0 | ||||||||||||||||||||||||
| 185 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 186 | - | |||||||||||||||||||||||||
| 187 | static void nist_cp_bn(unsigned long *dst, const unsigned long *src, int top) | - | ||||||||||||||||||||||||
| 188 | { | - | ||||||||||||||||||||||||
| 189 | int i; | - | ||||||||||||||||||||||||
| 190 | - | |||||||||||||||||||||||||
| 191 | for (i = 0; i < top
| 0 | ||||||||||||||||||||||||
| 192 | dst[i] = src[i]; never executed: dst[i] = src[i]; | 0 | ||||||||||||||||||||||||
| 193 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 194 | int | - | ||||||||||||||||||||||||
| 195 | BN_nist_mod_192(BIGNUM *r, const BIGNUM *a, const BIGNUM *field, BN_CTX *ctx) | - | ||||||||||||||||||||||||
| 196 | { | - | ||||||||||||||||||||||||
| 197 | int top = a->top, i; | - | ||||||||||||||||||||||||
| 198 | int carry; | - | ||||||||||||||||||||||||
| 199 | unsigned long *r_d, *a_d = a->d; | - | ||||||||||||||||||||||||
| 200 | union { | - | ||||||||||||||||||||||||
| 201 | unsigned long bn[(192+64 -1)/64]; | - | ||||||||||||||||||||||||
| 202 | unsigned int ui[(192+64 -1)/64 * | - | ||||||||||||||||||||||||
| 203 | sizeof(unsigned long) / sizeof(unsigned int)]; | - | ||||||||||||||||||||||||
| 204 | } buf; | - | ||||||||||||||||||||||||
| 205 | unsigned long c_d[(192+64 -1)/64], *res; | - | ||||||||||||||||||||||||
| 206 | uintptr_t mask; | - | ||||||||||||||||||||||||
| 207 | static const BIGNUM _bignum_nist_p_192_sqr = { | - | ||||||||||||||||||||||||
| 208 | (unsigned long *)_nist_p_192_sqr, | - | ||||||||||||||||||||||||
| 209 | sizeof(_nist_p_192_sqr) / sizeof(_nist_p_192_sqr[0]), | - | ||||||||||||||||||||||||
| 210 | sizeof(_nist_p_192_sqr) / sizeof(_nist_p_192_sqr[0]), | - | ||||||||||||||||||||||||
| 211 | 0, | - | ||||||||||||||||||||||||
| 212 | 0x02 | - | ||||||||||||||||||||||||
| 213 | }; | - | ||||||||||||||||||||||||
| 214 | - | |||||||||||||||||||||||||
| 215 | field = &_bignum_nist_p_192; | - | ||||||||||||||||||||||||
| 216 | - | |||||||||||||||||||||||||
| 217 | if (((
| 0 | ||||||||||||||||||||||||
| 218 | return never executed: BN_nnmod(r, a, field, ctx);return BN_nnmod(r, a, field, ctx);never executed: return BN_nnmod(r, a, field, ctx); | 0 | ||||||||||||||||||||||||
| 219 | - | |||||||||||||||||||||||||
| 220 | i = BN_ucmp(field, a); | - | ||||||||||||||||||||||||
| 221 | if (i == 0
| 0 | ||||||||||||||||||||||||
| 222 | (BN_set_word((r),0)); | - | ||||||||||||||||||||||||
| 223 | return never executed: 1;return 1;never executed: return 1; | 0 | ||||||||||||||||||||||||
| 224 | } else if (i > 0
| 0 | ||||||||||||||||||||||||
| 225 | return never executed: (return (r == a) ? 1 : (BN_copy(r , a) != ((void *)0) );
never executed: return (r == a) ? 1 : (BN_copy(r , a) != ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 226 | ((void *)0) never executed: return (r == a) ? 1 : (BN_copy(r , a) != ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 227 | ); never executed: return (r == a) ? 1 : (BN_copy(r , a) != ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 228 | - | |||||||||||||||||||||||||
| 229 | if (r != a
| 0 | ||||||||||||||||||||||||
| 230 | if (!((((
| 0 | ||||||||||||||||||||||||
| 231 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||||||||||||||
| 232 | r_d = r->d; | - | ||||||||||||||||||||||||
| 233 | nist_cp_bn(r_d, a_d, (192+64 -1)/64); | - | ||||||||||||||||||||||||
| 234 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
| 235 | r_d = a_d; never executed: r_d = a_d; | 0 | ||||||||||||||||||||||||
| 236 | - | |||||||||||||||||||||||||
| 237 | nist_cp_bn_0(buf.bn, a_d + (192+64 -1)/64, top - (192+64 -1)/64, | - | ||||||||||||||||||||||||
| 238 | (192+64 -1)/64); | - | ||||||||||||||||||||||||
| 239 | - | |||||||||||||||||||||||||
| 240 | - | |||||||||||||||||||||||||
| 241 | { | - | ||||||||||||||||||||||||
| 242 | long acc; | - | ||||||||||||||||||||||||
| 243 | unsigned int *rp = (unsigned int *)r_d; | - | ||||||||||||||||||||||||
| 244 | const unsigned int *bp = (const unsigned int *)buf.ui; | - | ||||||||||||||||||||||||
| 245 | - | |||||||||||||||||||||||||
| 246 | acc = rp[0]; | - | ||||||||||||||||||||||||
| 247 | acc += bp[3 * 2 - 6]; | - | ||||||||||||||||||||||||
| 248 | acc += bp[5 * 2 - 6]; | - | ||||||||||||||||||||||||
| 249 | rp[0] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 250 | acc >>= 32; | - | ||||||||||||||||||||||||
| 251 | - | |||||||||||||||||||||||||
| 252 | acc += rp[1]; | - | ||||||||||||||||||||||||
| 253 | acc += bp[3 * 2 - 5]; | - | ||||||||||||||||||||||||
| 254 | acc += bp[5 * 2 - 5]; | - | ||||||||||||||||||||||||
| 255 | rp[1] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 256 | acc >>= 32; | - | ||||||||||||||||||||||||
| 257 | - | |||||||||||||||||||||||||
| 258 | acc += rp[2]; | - | ||||||||||||||||||||||||
| 259 | acc += bp[3 * 2 - 6]; | - | ||||||||||||||||||||||||
| 260 | acc += bp[4 * 2 - 6]; | - | ||||||||||||||||||||||||
| 261 | acc += bp[5 * 2 - 6]; | - | ||||||||||||||||||||||||
| 262 | rp[2] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 263 | acc >>= 32; | - | ||||||||||||||||||||||||
| 264 | - | |||||||||||||||||||||||||
| 265 | acc += rp[3]; | - | ||||||||||||||||||||||||
| 266 | acc += bp[3 * 2 - 5]; | - | ||||||||||||||||||||||||
| 267 | acc += bp[4 * 2 - 5]; | - | ||||||||||||||||||||||||
| 268 | acc += bp[5 * 2 - 5]; | - | ||||||||||||||||||||||||
| 269 | rp[3] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 270 | acc >>= 32; | - | ||||||||||||||||||||||||
| 271 | - | |||||||||||||||||||||||||
| 272 | acc += rp[4]; | - | ||||||||||||||||||||||||
| 273 | acc += bp[4 * 2 - 6]; | - | ||||||||||||||||||||||||
| 274 | acc += bp[5 * 2 - 6]; | - | ||||||||||||||||||||||||
| 275 | rp[4] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 276 | acc >>= 32; | - | ||||||||||||||||||||||||
| 277 | - | |||||||||||||||||||||||||
| 278 | acc += rp[5]; | - | ||||||||||||||||||||||||
| 279 | acc += bp[4 * 2 - 5]; | - | ||||||||||||||||||||||||
| 280 | acc += bp[5 * 2 - 5]; | - | ||||||||||||||||||||||||
| 281 | rp[5] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 282 | - | |||||||||||||||||||||||||
| 283 | carry = (int)(acc >> 32); | - | ||||||||||||||||||||||||
| 284 | } | - | ||||||||||||||||||||||||
| 285 | if (carry > 0
| 0 | ||||||||||||||||||||||||
| 286 | carry = (int)bn_sub_words(r_d, r_d, _nist_p_192[carry - 1], never executed: carry = (int)bn_sub_words(r_d, r_d, _nist_p_192[carry - 1], (192+64 -1)/64); | 0 | ||||||||||||||||||||||||
| 287 | (192+64 -1)/64); never executed: carry = (int)bn_sub_words(r_d, r_d, _nist_p_192[carry - 1], (192+64 -1)/64); | 0 | ||||||||||||||||||||||||
| 288 | else | - | ||||||||||||||||||||||||
| 289 | carry = 1; never executed: carry = 1; | 0 | ||||||||||||||||||||||||
| 290 | - | |||||||||||||||||||||||||
| 291 | - | |||||||||||||||||||||||||
| 292 | - | |||||||||||||||||||||||||
| 293 | - | |||||||||||||||||||||||||
| 294 | - | |||||||||||||||||||||||||
| 295 | - | |||||||||||||||||||||||||
| 296 | - | |||||||||||||||||||||||||
| 297 | mask = 0 - (uintptr_t)bn_sub_words(c_d, r_d, _nist_p_192[0], | - | ||||||||||||||||||||||||
| 298 | (192+64 -1)/64); | - | ||||||||||||||||||||||||
| 299 | mask &= 0 - (uintptr_t)carry; | - | ||||||||||||||||||||||||
| 300 | res = c_d; | - | ||||||||||||||||||||||||
| 301 | res = (unsigned long *)(((uintptr_t)res & ~mask) | ((uintptr_t)r_d & mask)); | - | ||||||||||||||||||||||||
| 302 | nist_cp_bn(r_d, res, (192+64 -1)/64); | - | ||||||||||||||||||||||||
| 303 | r->top = (192+64 -1)/64; | - | ||||||||||||||||||||||||
| 304 | { unsigned long *ftl; int tmp_top = (r)->top; if (tmp_top > 0
never executed: (r)->top = tmp_top; }break;never executed: ; };end of block | 0 | ||||||||||||||||||||||||
| 305 | - | |||||||||||||||||||||||||
| 306 | return never executed: 1;return 1;never executed: return 1; | 0 | ||||||||||||||||||||||||
| 307 | } | - | ||||||||||||||||||||||||
| 308 | - | |||||||||||||||||||||||||
| 309 | typedef unsigned long (*bn_addsub_f)(unsigned long *, const unsigned long *, | - | ||||||||||||||||||||||||
| 310 | const unsigned long *, int); | - | ||||||||||||||||||||||||
| 311 | int | - | ||||||||||||||||||||||||
| 312 | BN_nist_mod_224(BIGNUM *r, const BIGNUM *a, const BIGNUM *field, BN_CTX *ctx) | - | ||||||||||||||||||||||||
| 313 | { | - | ||||||||||||||||||||||||
| 314 | int top = a->top, i; | - | ||||||||||||||||||||||||
| 315 | int carry; | - | ||||||||||||||||||||||||
| 316 | unsigned long *r_d, *a_d = a->d; | - | ||||||||||||||||||||||||
| 317 | union { | - | ||||||||||||||||||||||||
| 318 | unsigned long bn[(224+64 -1)/64]; | - | ||||||||||||||||||||||||
| 319 | unsigned int ui[(224+64 -1)/64 * | - | ||||||||||||||||||||||||
| 320 | sizeof(unsigned long) / sizeof(unsigned int)]; | - | ||||||||||||||||||||||||
| 321 | } buf; | - | ||||||||||||||||||||||||
| 322 | unsigned long c_d[(224+64 -1)/64], *res; | - | ||||||||||||||||||||||||
| 323 | uintptr_t mask; | - | ||||||||||||||||||||||||
| 324 | union { | - | ||||||||||||||||||||||||
| 325 | bn_addsub_f f; | - | ||||||||||||||||||||||||
| 326 | uintptr_t p; | - | ||||||||||||||||||||||||
| 327 | } u; | - | ||||||||||||||||||||||||
| 328 | static const BIGNUM _bignum_nist_p_224_sqr = { | - | ||||||||||||||||||||||||
| 329 | (unsigned long *)_nist_p_224_sqr, | - | ||||||||||||||||||||||||
| 330 | sizeof(_nist_p_224_sqr) / sizeof(_nist_p_224_sqr[0]), | - | ||||||||||||||||||||||||
| 331 | sizeof(_nist_p_224_sqr) / sizeof(_nist_p_224_sqr[0]), | - | ||||||||||||||||||||||||
| 332 | 0, | - | ||||||||||||||||||||||||
| 333 | 0x02 | - | ||||||||||||||||||||||||
| 334 | }; | - | ||||||||||||||||||||||||
| 335 | - | |||||||||||||||||||||||||
| 336 | field = &_bignum_nist_p_224; | - | ||||||||||||||||||||||||
| 337 | - | |||||||||||||||||||||||||
| 338 | if (((
| 0 | ||||||||||||||||||||||||
| 339 | return never executed: BN_nnmod(r, a, field, ctx);return BN_nnmod(r, a, field, ctx);never executed: return BN_nnmod(r, a, field, ctx); | 0 | ||||||||||||||||||||||||
| 340 | - | |||||||||||||||||||||||||
| 341 | i = BN_ucmp(field, a); | - | ||||||||||||||||||||||||
| 342 | if (i == 0
| 0 | ||||||||||||||||||||||||
| 343 | (BN_set_word((r),0)); | - | ||||||||||||||||||||||||
| 344 | return never executed: 1;return 1;never executed: return 1; | 0 | ||||||||||||||||||||||||
| 345 | } else if (i > 0
| 0 | ||||||||||||||||||||||||
| 346 | return never executed: (return (r == a) ? 1 : (BN_copy(r, a) != ((void *)0) );
never executed: return (r == a) ? 1 : (BN_copy(r, a) != ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 347 | ((void *)0) never executed: return (r == a) ? 1 : (BN_copy(r, a) != ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 348 | ); never executed: return (r == a) ? 1 : (BN_copy(r, a) != ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 349 | - | |||||||||||||||||||||||||
| 350 | if (r != a
| 0 | ||||||||||||||||||||||||
| 351 | if (!((((
| 0 | ||||||||||||||||||||||||
| 352 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||||||||||||||
| 353 | r_d = r->d; | - | ||||||||||||||||||||||||
| 354 | nist_cp_bn(r_d, a_d, (224+64 -1)/64); | - | ||||||||||||||||||||||||
| 355 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
| 356 | r_d = a_d; never executed: r_d = a_d; | 0 | ||||||||||||||||||||||||
| 357 | - | |||||||||||||||||||||||||
| 358 | memset(&buf, 0, sizeof(buf)); | - | ||||||||||||||||||||||||
| 359 | - | |||||||||||||||||||||||||
| 360 | - | |||||||||||||||||||||||||
| 361 | - | |||||||||||||||||||||||||
| 362 | nist_cp_bn_0(c_d, a_d + ((224+64 -1)/64 - 1), | - | ||||||||||||||||||||||||
| 363 | top - ((224+64 -1)/64 - 1), (224+64 -1)/64); | - | ||||||||||||||||||||||||
| 364 | - | |||||||||||||||||||||||||
| 365 | { (((8) - 7)>=0)?(((0)&1)?(buf.bn[(0)/2]|=(((8) - 7)&1)?(c_d[((8) - 7)/2]&(0xffffffff00000000L)):(c_d[((8) - 7)/2]<<32)) :(buf.bn[(0)/2] =(((8) - 7)&1)?(c_d[((8) - 7)/2]>>32):(c_d[((8) - 7)/2]&(0xffffffffL)))):(((0)&1)?(buf.bn[(0)/2]&=(0xffffffffL)):(buf.bn[(0)/2]=0)); (((9) - 7)>=0)?(((1)&1)?(buf.bn[(1)/2]|=(((9) - 7)&1)?(c_d[((9) - 7)/2]&(0xffffffff00000000L)):(c_d[((9) - 7)/2]<<32)) :(buf.bn[(1)/2] =(((9) - 7)&1)?(c_d[((9) - 7)/2]>>32):(c_d[((9) - 7)/2]&(0xffffffffL)))):(((1)&1)?(buf.bn[(1)/2]&=(0xffffffffL)):(buf.bn[(1)/2]=0)); (((10) - 7)>=0)?(((2)&1)?(buf.bn[(2)/2]|=(((10) - 7)&1)?(c_d[((10) - 7)/2]&(0xffffffff00000000L)):(c_d[((10) - 7)/2]<<32)) :(buf.bn[(2)/2] =(((10) - 7)&1)?(c_d[((10) - 7)/2]>>32):(c_d[((10) - 7)/2]&(0xffffffffL)))):(((2)&1)?(buf.bn[(2)/2]&=(0xffffffffL)):(buf.bn[(2)/2]=0)); (((11) - 7)>=0)?(((3)&1)?(buf.bn[(3)/2]|=(((11) - 7)&1)?(c_d[((11) - 7)/2]&(0xffffffff00000000L)):(c_d[((11) - 7)/2]<<32)) :(buf.bn[(3)/2] =(((11) - 7)&1)?(c_d[((11) - 7)/2]>>32):(c_d[((11) - 7)/2]&(0xffffffffL)))):(((3)&1)?(buf.bn[(3)/2]&=(0xffffffffL)):(buf.bn[(3)/2]=0)); (((12) - 7)>=0)?(((4)&1)?(buf.bn[(4)/2]|=(((12) - 7)&1)?(c_d[((12) - 7)/2]&(0xffffffff00000000L)):(c_d[((12) - 7)/2]<<32)) :(buf.bn[(4)/2] =(((12) - 7)&1)?(c_d[((12) - 7)/2]>>32):(c_d[((12) - 7)/2]&(0xffffffffL)))):(((4)&1)?(buf.bn[(4)/2]&=(0xffffffffL)):(buf.bn[(4)/2]=0)); (((13) - 7)>=0)?(((5)&1)?(buf.bn[(5)/2]|=(((13) - 7)&1)?(c_d[((13) - 7)/2]&(0xffffffff00000000L)):(c_d[((13) - 7)/2]<<32)) :(buf.bn[(5)/2] =(((13) - 7)&1)?(c_d[((13) - 7)/2]>>32):(c_d[((13) - 7)/2]&(0xffffffffL)))):(((5)&1)?(buf.bn[(5)/2]&=(0xffffffffL)):(buf.bn[(5)/2]=0)); (((14) - 7)>=0)?(((6)&1)?(buf.bn[(6)/2]|=(((14) - 7)&1)?(c_d[((14) - 7)/2]&(0xffffffff00000000L)):(c_d[((14) - 7)/2]<<32)) :(buf.bn[(6)/2] =(((14) - 7)&1)?(c_d[((14) - 7)/2]>>32):(c_d[((14) - 7)/2]&(0xffffffffL)))):(((6)&1)?(buf.bn[(6)/2]&=(0xffffffffL)):(buf.bn[(6)/2]=0)); }; | - | ||||||||||||||||||||||||
| 366 | - | |||||||||||||||||||||||||
| 367 | r_d[(224+64 -1)/64 - 1] &= (0xffffffffL); | - | ||||||||||||||||||||||||
| 368 | { | - | ||||||||||||||||||||||||
| 369 | unsigned long t_d[(224+64 -1)/64] = {0}; | - | ||||||||||||||||||||||||
| 370 | - | |||||||||||||||||||||||||
| 371 | { (((0) - 7)>=0)?(((0)&1)?(t_d[(0)/2]|=(((0) - 7)&1)?(buf.bn[((0) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((0) - 7)/2]<<32)) :(t_d[(0)/2] =(((0) - 7)&1)?(buf.bn[((0) - 7)/2]>>32):(buf.bn[((0) - 7)/2]&(0xffffffffL)))):(((0)&1)?(t_d[(0)/2]&=(0xffffffffL)):(t_d[(0)/2]=0)); (((0) - 7)>=0)?(((1)&1)?(t_d[(1)/2]|=(((0) - 7)&1)?(buf.bn[((0) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((0) - 7)/2]<<32)) :(t_d[(1)/2] =(((0) - 7)&1)?(buf.bn[((0) - 7)/2]>>32):(buf.bn[((0) - 7)/2]&(0xffffffffL)))):(((1)&1)?(t_d[(1)/2]&=(0xffffffffL)):(t_d[(1)/2]=0)); (((0) - 7)>=0)?(((2)&1)?(t_d[(2)/2]|=(((0) - 7)&1)?(buf.bn[((0) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((0) - 7)/2]<<32)) :(t_d[(2)/2] =(((0) - 7)&1)?(buf.bn[((0) - 7)/2]>>32):(buf.bn[((0) - 7)/2]&(0xffffffffL)))):(((2)&1)?(t_d[(2)/2]&=(0xffffffffL)):(t_d[(2)/2]=0)); (((7) - 7)>=0)?(((3)&1)?(t_d[(3)/2]|=(((7) - 7)&1)?(buf.bn[((7) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((7) - 7)/2]<<32)) :(t_d[(3)/2] =(((7) - 7)&1)?(buf.bn[((7) - 7)/2]>>32):(buf.bn[((7) - 7)/2]&(0xffffffffL)))):(((3)&1)?(t_d[(3)/2]&=(0xffffffffL)):(t_d[(3)/2]=0)); (((8) - 7)>=0)?(((4)&1)?(t_d[(4)/2]|=(((8) - 7)&1)?(buf.bn[((8) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((8) - 7)/2]<<32)) :(t_d[(4)/2] =(((8) - 7)&1)?(buf.bn[((8) - 7)/2]>>32):(buf.bn[((8) - 7)/2]&(0xffffffffL)))):(((4)&1)?(t_d[(4)/2]&=(0xffffffffL)):(t_d[(4)/2]=0)); (((9) - 7)>=0)?(((5)&1)?(t_d[(5)/2]|=(((9) - 7)&1)?(buf.bn[((9) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((9) - 7)/2]<<32)) :(t_d[(5)/2] =(((9) - 7)&1)?(buf.bn[((9) - 7)/2]>>32):(buf.bn[((9) - 7)/2]&(0xffffffffL)))):(((5)&1)?(t_d[(5)/2]&=(0xffffffffL)):(t_d[(5)/2]=0)); (((10) - 7)>=0)?(((6)&1)?(t_d[(6)/2]|=(((10) - 7)&1)?(buf.bn[((10) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((10) - 7)/2]<<32)) :(t_d[(6)/2] =(((10) - 7)&1)?(buf.bn[((10) - 7)/2]>>32):(buf.bn[((10) - 7)/2]&(0xffffffffL)))):(((6)&1)?(t_d[(6)/2]&=(0xffffffffL)):(t_d[(6)/2]=0)); }; | - | ||||||||||||||||||||||||
| 372 | carry = (int)bn_add_words(r_d, r_d, t_d, (224+64 -1)/64); | - | ||||||||||||||||||||||||
| 373 | { (((0) - 7)>=0)?(((0)&1)?(t_d[(0)/2]|=(((0) - 7)&1)?(buf.bn[((0) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((0) - 7)/2]<<32)) :(t_d[(0)/2] =(((0) - 7)&1)?(buf.bn[((0) - 7)/2]>>32):(buf.bn[((0) - 7)/2]&(0xffffffffL)))):(((0)&1)?(t_d[(0)/2]&=(0xffffffffL)):(t_d[(0)/2]=0)); (((0) - 7)>=0)?(((1)&1)?(t_d[(1)/2]|=(((0) - 7)&1)?(buf.bn[((0) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((0) - 7)/2]<<32)) :(t_d[(1)/2] =(((0) - 7)&1)?(buf.bn[((0) - 7)/2]>>32):(buf.bn[((0) - 7)/2]&(0xffffffffL)))):(((1)&1)?(t_d[(1)/2]&=(0xffffffffL)):(t_d[(1)/2]=0)); (((0) - 7)>=0)?(((2)&1)?(t_d[(2)/2]|=(((0) - 7)&1)?(buf.bn[((0) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((0) - 7)/2]<<32)) :(t_d[(2)/2] =(((0) - 7)&1)?(buf.bn[((0) - 7)/2]>>32):(buf.bn[((0) - 7)/2]&(0xffffffffL)))):(((2)&1)?(t_d[(2)/2]&=(0xffffffffL)):(t_d[(2)/2]=0)); (((11) - 7)>=0)?(((3)&1)?(t_d[(3)/2]|=(((11) - 7)&1)?(buf.bn[((11) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((11) - 7)/2]<<32)) :(t_d[(3)/2] =(((11) - 7)&1)?(buf.bn[((11) - 7)/2]>>32):(buf.bn[((11) - 7)/2]&(0xffffffffL)))):(((3)&1)?(t_d[(3)/2]&=(0xffffffffL)):(t_d[(3)/2]=0)); (((12) - 7)>=0)?(((4)&1)?(t_d[(4)/2]|=(((12) - 7)&1)?(buf.bn[((12) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((12) - 7)/2]<<32)) :(t_d[(4)/2] =(((12) - 7)&1)?(buf.bn[((12) - 7)/2]>>32):(buf.bn[((12) - 7)/2]&(0xffffffffL)))):(((4)&1)?(t_d[(4)/2]&=(0xffffffffL)):(t_d[(4)/2]=0)); (((13) - 7)>=0)?(((5)&1)?(t_d[(5)/2]|=(((13) - 7)&1)?(buf.bn[((13) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((13) - 7)/2]<<32)) :(t_d[(5)/2] =(((13) - 7)&1)?(buf.bn[((13) - 7)/2]>>32):(buf.bn[((13) - 7)/2]&(0xffffffffL)))):(((5)&1)?(t_d[(5)/2]&=(0xffffffffL)):(t_d[(5)/2]=0)); (((0) - 7)>=0)?(((6)&1)?(t_d[(6)/2]|=(((0) - 7)&1)?(buf.bn[((0) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((0) - 7)/2]<<32)) :(t_d[(6)/2] =(((0) - 7)&1)?(buf.bn[((0) - 7)/2]>>32):(buf.bn[((0) - 7)/2]&(0xffffffffL)))):(((6)&1)?(t_d[(6)/2]&=(0xffffffffL)):(t_d[(6)/2]=0)); }; | - | ||||||||||||||||||||||||
| 374 | carry += (int)bn_add_words(r_d, r_d, t_d, (224+64 -1)/64); | - | ||||||||||||||||||||||||
| 375 | { (((7) - 7)>=0)?(((0)&1)?(t_d[(0)/2]|=(((7) - 7)&1)?(buf.bn[((7) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((7) - 7)/2]<<32)) :(t_d[(0)/2] =(((7) - 7)&1)?(buf.bn[((7) - 7)/2]>>32):(buf.bn[((7) - 7)/2]&(0xffffffffL)))):(((0)&1)?(t_d[(0)/2]&=(0xffffffffL)):(t_d[(0)/2]=0)); (((8) - 7)>=0)?(((1)&1)?(t_d[(1)/2]|=(((8) - 7)&1)?(buf.bn[((8) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((8) - 7)/2]<<32)) :(t_d[(1)/2] =(((8) - 7)&1)?(buf.bn[((8) - 7)/2]>>32):(buf.bn[((8) - 7)/2]&(0xffffffffL)))):(((1)&1)?(t_d[(1)/2]&=(0xffffffffL)):(t_d[(1)/2]=0)); (((9) - 7)>=0)?(((2)&1)?(t_d[(2)/2]|=(((9) - 7)&1)?(buf.bn[((9) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((9) - 7)/2]<<32)) :(t_d[(2)/2] =(((9) - 7)&1)?(buf.bn[((9) - 7)/2]>>32):(buf.bn[((9) - 7)/2]&(0xffffffffL)))):(((2)&1)?(t_d[(2)/2]&=(0xffffffffL)):(t_d[(2)/2]=0)); (((10) - 7)>=0)?(((3)&1)?(t_d[(3)/2]|=(((10) - 7)&1)?(buf.bn[((10) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((10) - 7)/2]<<32)) :(t_d[(3)/2] =(((10) - 7)&1)?(buf.bn[((10) - 7)/2]>>32):(buf.bn[((10) - 7)/2]&(0xffffffffL)))):(((3)&1)?(t_d[(3)/2]&=(0xffffffffL)):(t_d[(3)/2]=0)); (((11) - 7)>=0)?(((4)&1)?(t_d[(4)/2]|=(((11) - 7)&1)?(buf.bn[((11) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((11) - 7)/2]<<32)) :(t_d[(4)/2] =(((11) - 7)&1)?(buf.bn[((11) - 7)/2]>>32):(buf.bn[((11) - 7)/2]&(0xffffffffL)))):(((4)&1)?(t_d[(4)/2]&=(0xffffffffL)):(t_d[(4)/2]=0)); (((12) - 7)>=0)?(((5)&1)?(t_d[(5)/2]|=(((12) - 7)&1)?(buf.bn[((12) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((12) - 7)/2]<<32)) :(t_d[(5)/2] =(((12) - 7)&1)?(buf.bn[((12) - 7)/2]>>32):(buf.bn[((12) - 7)/2]&(0xffffffffL)))):(((5)&1)?(t_d[(5)/2]&=(0xffffffffL)):(t_d[(5)/2]=0)); (((13) - 7)>=0)?(((6)&1)?(t_d[(6)/2]|=(((13) - 7)&1)?(buf.bn[((13) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((13) - 7)/2]<<32)) :(t_d[(6)/2] =(((13) - 7)&1)?(buf.bn[((13) - 7)/2]>>32):(buf.bn[((13) - 7)/2]&(0xffffffffL)))):(((6)&1)?(t_d[(6)/2]&=(0xffffffffL)):(t_d[(6)/2]=0)); }; | - | ||||||||||||||||||||||||
| 376 | carry -= (int)bn_sub_words(r_d, r_d, t_d, (224+64 -1)/64); | - | ||||||||||||||||||||||||
| 377 | { (((11) - 7)>=0)?(((0)&1)?(t_d[(0)/2]|=(((11) - 7)&1)?(buf.bn[((11) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((11) - 7)/2]<<32)) :(t_d[(0)/2] =(((11) - 7)&1)?(buf.bn[((11) - 7)/2]>>32):(buf.bn[((11) - 7)/2]&(0xffffffffL)))):(((0)&1)?(t_d[(0)/2]&=(0xffffffffL)):(t_d[(0)/2]=0)); (((12) - 7)>=0)?(((1)&1)?(t_d[(1)/2]|=(((12) - 7)&1)?(buf.bn[((12) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((12) - 7)/2]<<32)) :(t_d[(1)/2] =(((12) - 7)&1)?(buf.bn[((12) - 7)/2]>>32):(buf.bn[((12) - 7)/2]&(0xffffffffL)))):(((1)&1)?(t_d[(1)/2]&=(0xffffffffL)):(t_d[(1)/2]=0)); (((13) - 7)>=0)?(((2)&1)?(t_d[(2)/2]|=(((13) - 7)&1)?(buf.bn[((13) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((13) - 7)/2]<<32)) :(t_d[(2)/2] =(((13) - 7)&1)?(buf.bn[((13) - 7)/2]>>32):(buf.bn[((13) - 7)/2]&(0xffffffffL)))):(((2)&1)?(t_d[(2)/2]&=(0xffffffffL)):(t_d[(2)/2]=0)); (((0) - 7)>=0)?(((3)&1)?(t_d[(3)/2]|=(((0) - 7)&1)?(buf.bn[((0) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((0) - 7)/2]<<32)) :(t_d[(3)/2] =(((0) - 7)&1)?(buf.bn[((0) - 7)/2]>>32):(buf.bn[((0) - 7)/2]&(0xffffffffL)))):(((3)&1)?(t_d[(3)/2]&=(0xffffffffL)):(t_d[(3)/2]=0)); (((0) - 7)>=0)?(((4)&1)?(t_d[(4)/2]|=(((0) - 7)&1)?(buf.bn[((0) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((0) - 7)/2]<<32)) :(t_d[(4)/2] =(((0) - 7)&1)?(buf.bn[((0) - 7)/2]>>32):(buf.bn[((0) - 7)/2]&(0xffffffffL)))):(((4)&1)?(t_d[(4)/2]&=(0xffffffffL)):(t_d[(4)/2]=0)); (((0) - 7)>=0)?(((5)&1)?(t_d[(5)/2]|=(((0) - 7)&1)?(buf.bn[((0) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((0) - 7)/2]<<32)) :(t_d[(5)/2] =(((0) - 7)&1)?(buf.bn[((0) - 7)/2]>>32):(buf.bn[((0) - 7)/2]&(0xffffffffL)))):(((5)&1)?(t_d[(5)/2]&=(0xffffffffL)):(t_d[(5)/2]=0)); (((0) - 7)>=0)?(((6)&1)?(t_d[(6)/2]|=(((0) - 7)&1)?(buf.bn[((0) - 7)/2]&(0xffffffff00000000L)):(buf.bn[((0) - 7)/2]<<32)) :(t_d[(6)/2] =(((0) - 7)&1)?(buf.bn[((0) - 7)/2]>>32):(buf.bn[((0) - 7)/2]&(0xffffffffL)))):(((6)&1)?(t_d[(6)/2]&=(0xffffffffL)):(t_d[(6)/2]=0)); }; | - | ||||||||||||||||||||||||
| 378 | carry -= (int)bn_sub_words(r_d, r_d, t_d, (224+64 -1)/64); | - | ||||||||||||||||||||||||
| 379 | - | |||||||||||||||||||||||||
| 380 | - | |||||||||||||||||||||||||
| 381 | carry = (int)(r_d[(224+64 -1)/64 - 1] >> 32); | - | ||||||||||||||||||||||||
| 382 | - | |||||||||||||||||||||||||
| 383 | } | - | ||||||||||||||||||||||||
| 384 | - | |||||||||||||||||||||||||
| 385 | u.f = bn_sub_words; | - | ||||||||||||||||||||||||
| 386 | if (carry > 0
| 0 | ||||||||||||||||||||||||
| 387 | carry = (int)bn_sub_words(r_d, r_d, _nist_p_224[carry - 1], | - | ||||||||||||||||||||||||
| 388 | (224+64 -1)/64); | - | ||||||||||||||||||||||||
| 389 | - | |||||||||||||||||||||||||
| 390 | carry = (int)(~(r_d[(224+64 -1)/64 - 1] >> 32)) & 1; | - | ||||||||||||||||||||||||
| 391 | - | |||||||||||||||||||||||||
| 392 | } never executed: else if (carry < 0end of block
| 0 | ||||||||||||||||||||||||
| 393 | - | |||||||||||||||||||||||||
| 394 | - | |||||||||||||||||||||||||
| 395 | - | |||||||||||||||||||||||||
| 396 | - | |||||||||||||||||||||||||
| 397 | - | |||||||||||||||||||||||||
| 398 | - | |||||||||||||||||||||||||
| 399 | carry = (int)bn_add_words(r_d, r_d, _nist_p_224[-carry - 1], | - | ||||||||||||||||||||||||
| 400 | (224+64 -1)/64); | - | ||||||||||||||||||||||||
| 401 | mask = 0 - (uintptr_t)carry; | - | ||||||||||||||||||||||||
| 402 | u.p = ((uintptr_t)bn_sub_words & mask) | | - | ||||||||||||||||||||||||
| 403 | ((uintptr_t)bn_add_words & ~mask); | - | ||||||||||||||||||||||||
| 404 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
| 405 | carry = 1; never executed: carry = 1; | 0 | ||||||||||||||||||||||||
| 406 | - | |||||||||||||||||||||||||
| 407 | - | |||||||||||||||||||||||||
| 408 | mask = 0 - (uintptr_t)(*u.f)(c_d, r_d, _nist_p_224[0], (224+64 -1)/64); | - | ||||||||||||||||||||||||
| 409 | mask &= 0 - (uintptr_t)carry; | - | ||||||||||||||||||||||||
| 410 | res = c_d; | - | ||||||||||||||||||||||||
| 411 | res = (unsigned long *)(((uintptr_t)res & ~mask) | ((uintptr_t)r_d & mask)); | - | ||||||||||||||||||||||||
| 412 | nist_cp_bn(r_d, res, (224+64 -1)/64); | - | ||||||||||||||||||||||||
| 413 | r->top = (224+64 -1)/64; | - | ||||||||||||||||||||||||
| 414 | { unsigned long *ftl; int tmp_top = (r)->top; if (tmp_top > 0
never executed: (r)->top = tmp_top; }break;never executed: ; };end of block | 0 | ||||||||||||||||||||||||
| 415 | - | |||||||||||||||||||||||||
| 416 | return never executed: 1;return 1;never executed: return 1; | 0 | ||||||||||||||||||||||||
| 417 | } | - | ||||||||||||||||||||||||
| 418 | int | - | ||||||||||||||||||||||||
| 419 | BN_nist_mod_256(BIGNUM *r, const BIGNUM *a, const BIGNUM *field, BN_CTX *ctx) | - | ||||||||||||||||||||||||
| 420 | { | - | ||||||||||||||||||||||||
| 421 | int i, top = a->top; | - | ||||||||||||||||||||||||
| 422 | int carry = 0; | - | ||||||||||||||||||||||||
| 423 | unsigned long *a_d = a->d, *r_d; | - | ||||||||||||||||||||||||
| 424 | union { | - | ||||||||||||||||||||||||
| 425 | unsigned long bn[(256+64 -1)/64]; | - | ||||||||||||||||||||||||
| 426 | unsigned int ui[(256+64 -1)/64 * | - | ||||||||||||||||||||||||
| 427 | sizeof(unsigned long) / sizeof(unsigned int)]; | - | ||||||||||||||||||||||||
| 428 | } buf; | - | ||||||||||||||||||||||||
| 429 | unsigned long c_d[(256+64 -1)/64] = {0}, *res; | - | ||||||||||||||||||||||||
| 430 | uintptr_t mask; | - | ||||||||||||||||||||||||
| 431 | union { | - | ||||||||||||||||||||||||
| 432 | bn_addsub_f f; | - | ||||||||||||||||||||||||
| 433 | uintptr_t p; | - | ||||||||||||||||||||||||
| 434 | } u; | - | ||||||||||||||||||||||||
| 435 | static const BIGNUM _bignum_nist_p_256_sqr = { | - | ||||||||||||||||||||||||
| 436 | (unsigned long *)_nist_p_256_sqr, | - | ||||||||||||||||||||||||
| 437 | sizeof(_nist_p_256_sqr) / sizeof(_nist_p_256_sqr[0]), | - | ||||||||||||||||||||||||
| 438 | sizeof(_nist_p_256_sqr) / sizeof(_nist_p_256_sqr[0]), | - | ||||||||||||||||||||||||
| 439 | 0, | - | ||||||||||||||||||||||||
| 440 | 0x02 | - | ||||||||||||||||||||||||
| 441 | }; | - | ||||||||||||||||||||||||
| 442 | - | |||||||||||||||||||||||||
| 443 | field = &_bignum_nist_p_256; | - | ||||||||||||||||||||||||
| 444 | - | |||||||||||||||||||||||||
| 445 | if (((
| 0 | ||||||||||||||||||||||||
| 446 | return never executed: BN_nnmod(r, a, field, ctx);return BN_nnmod(r, a, field, ctx);never executed: return BN_nnmod(r, a, field, ctx); | 0 | ||||||||||||||||||||||||
| 447 | - | |||||||||||||||||||||||||
| 448 | i = BN_ucmp(field, a); | - | ||||||||||||||||||||||||
| 449 | if (i == 0
| 0 | ||||||||||||||||||||||||
| 450 | (BN_set_word((r),0)); | - | ||||||||||||||||||||||||
| 451 | return never executed: 1;return 1;never executed: return 1; | 0 | ||||||||||||||||||||||||
| 452 | } else if (i > 0
| 0 | ||||||||||||||||||||||||
| 453 | return never executed: (return (r == a) ? 1 : (BN_copy(r, a) != ((void *)0) );
never executed: return (r == a) ? 1 : (BN_copy(r, a) != ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 454 | ((void *)0) never executed: return (r == a) ? 1 : (BN_copy(r, a) != ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 455 | ); never executed: return (r == a) ? 1 : (BN_copy(r, a) != ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 456 | - | |||||||||||||||||||||||||
| 457 | if (r != a
| 0 | ||||||||||||||||||||||||
| 458 | if (!((((
| 0 | ||||||||||||||||||||||||
| 459 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||||||||||||||
| 460 | r_d = r->d; | - | ||||||||||||||||||||||||
| 461 | nist_cp_bn(r_d, a_d, (256+64 -1)/64); | - | ||||||||||||||||||||||||
| 462 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
| 463 | r_d = a_d; never executed: r_d = a_d; | 0 | ||||||||||||||||||||||||
| 464 | - | |||||||||||||||||||||||||
| 465 | nist_cp_bn_0(buf.bn, a_d + (256+64 -1)/64, | - | ||||||||||||||||||||||||
| 466 | top - (256+64 -1)/64, (256+64 -1)/64); | - | ||||||||||||||||||||||||
| 467 | - | |||||||||||||||||||||||||
| 468 | - | |||||||||||||||||||||||||
| 469 | { | - | ||||||||||||||||||||||||
| 470 | long acc; | - | ||||||||||||||||||||||||
| 471 | unsigned int *rp = (unsigned int *)r_d; | - | ||||||||||||||||||||||||
| 472 | const unsigned int *bp = (const unsigned int *)buf.ui; | - | ||||||||||||||||||||||||
| 473 | - | |||||||||||||||||||||||||
| 474 | acc = rp[0]; | - | ||||||||||||||||||||||||
| 475 | acc += bp[8 - 8]; | - | ||||||||||||||||||||||||
| 476 | acc += bp[9 - 8]; | - | ||||||||||||||||||||||||
| 477 | acc -= bp[11 - 8]; | - | ||||||||||||||||||||||||
| 478 | acc -= bp[12 - 8]; | - | ||||||||||||||||||||||||
| 479 | acc -= bp[13 - 8]; | - | ||||||||||||||||||||||||
| 480 | acc -= bp[14 - 8]; | - | ||||||||||||||||||||||||
| 481 | rp[0] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 482 | acc >>= 32; | - | ||||||||||||||||||||||||
| 483 | - | |||||||||||||||||||||||||
| 484 | acc += rp[1]; | - | ||||||||||||||||||||||||
| 485 | acc += bp[9 - 8]; | - | ||||||||||||||||||||||||
| 486 | acc += bp[10 - 8]; | - | ||||||||||||||||||||||||
| 487 | acc -= bp[12 - 8]; | - | ||||||||||||||||||||||||
| 488 | acc -= bp[13 - 8]; | - | ||||||||||||||||||||||||
| 489 | acc -= bp[14 - 8]; | - | ||||||||||||||||||||||||
| 490 | acc -= bp[15 - 8]; | - | ||||||||||||||||||||||||
| 491 | rp[1] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 492 | acc >>= 32; | - | ||||||||||||||||||||||||
| 493 | - | |||||||||||||||||||||||||
| 494 | acc += rp[2]; | - | ||||||||||||||||||||||||
| 495 | acc += bp[10 - 8]; | - | ||||||||||||||||||||||||
| 496 | acc += bp[11 - 8]; | - | ||||||||||||||||||||||||
| 497 | acc -= bp[13 - 8]; | - | ||||||||||||||||||||||||
| 498 | acc -= bp[14 - 8]; | - | ||||||||||||||||||||||||
| 499 | acc -= bp[15 - 8]; | - | ||||||||||||||||||||||||
| 500 | rp[2] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 501 | acc >>= 32; | - | ||||||||||||||||||||||||
| 502 | - | |||||||||||||||||||||||||
| 503 | acc += rp[3]; | - | ||||||||||||||||||||||||
| 504 | acc += bp[11 - 8]; | - | ||||||||||||||||||||||||
| 505 | acc += bp[11 - 8]; | - | ||||||||||||||||||||||||
| 506 | acc += bp[12 - 8]; | - | ||||||||||||||||||||||||
| 507 | acc += bp[12 - 8]; | - | ||||||||||||||||||||||||
| 508 | acc += bp[13 - 8]; | - | ||||||||||||||||||||||||
| 509 | acc -= bp[15 - 8]; | - | ||||||||||||||||||||||||
| 510 | acc -= bp[8 - 8]; | - | ||||||||||||||||||||||||
| 511 | acc -= bp[9 - 8]; | - | ||||||||||||||||||||||||
| 512 | rp[3] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 513 | acc >>= 32; | - | ||||||||||||||||||||||||
| 514 | - | |||||||||||||||||||||||||
| 515 | acc += rp[4]; | - | ||||||||||||||||||||||||
| 516 | acc += bp[12 - 8]; | - | ||||||||||||||||||||||||
| 517 | acc += bp[12 - 8]; | - | ||||||||||||||||||||||||
| 518 | acc += bp[13 - 8]; | - | ||||||||||||||||||||||||
| 519 | acc += bp[13 - 8]; | - | ||||||||||||||||||||||||
| 520 | acc += bp[14 - 8]; | - | ||||||||||||||||||||||||
| 521 | acc -= bp[9 - 8]; | - | ||||||||||||||||||||||||
| 522 | acc -= bp[10 - 8]; | - | ||||||||||||||||||||||||
| 523 | rp[4] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 524 | acc >>= 32; | - | ||||||||||||||||||||||||
| 525 | - | |||||||||||||||||||||||||
| 526 | acc += rp[5]; | - | ||||||||||||||||||||||||
| 527 | acc += bp[13 - 8]; | - | ||||||||||||||||||||||||
| 528 | acc += bp[13 - 8]; | - | ||||||||||||||||||||||||
| 529 | acc += bp[14 - 8]; | - | ||||||||||||||||||||||||
| 530 | acc += bp[14 - 8]; | - | ||||||||||||||||||||||||
| 531 | acc += bp[15 - 8]; | - | ||||||||||||||||||||||||
| 532 | acc -= bp[10 - 8]; | - | ||||||||||||||||||||||||
| 533 | acc -= bp[11 - 8]; | - | ||||||||||||||||||||||||
| 534 | rp[5] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 535 | acc >>= 32; | - | ||||||||||||||||||||||||
| 536 | - | |||||||||||||||||||||||||
| 537 | acc += rp[6]; | - | ||||||||||||||||||||||||
| 538 | acc += bp[14 - 8]; | - | ||||||||||||||||||||||||
| 539 | acc += bp[14 - 8]; | - | ||||||||||||||||||||||||
| 540 | acc += bp[15 - 8]; | - | ||||||||||||||||||||||||
| 541 | acc += bp[15 - 8]; | - | ||||||||||||||||||||||||
| 542 | acc += bp[14 - 8]; | - | ||||||||||||||||||||||||
| 543 | acc += bp[13 - 8]; | - | ||||||||||||||||||||||||
| 544 | acc -= bp[8 - 8]; | - | ||||||||||||||||||||||||
| 545 | acc -= bp[9 - 8]; | - | ||||||||||||||||||||||||
| 546 | rp[6] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 547 | acc >>= 32; | - | ||||||||||||||||||||||||
| 548 | - | |||||||||||||||||||||||||
| 549 | acc += rp[7]; | - | ||||||||||||||||||||||||
| 550 | acc += bp[15 - 8]; | - | ||||||||||||||||||||||||
| 551 | acc += bp[15 - 8]; | - | ||||||||||||||||||||||||
| 552 | acc += bp[15 - 8]; | - | ||||||||||||||||||||||||
| 553 | acc += bp[8 - 8]; | - | ||||||||||||||||||||||||
| 554 | acc -= bp[10 - 8]; | - | ||||||||||||||||||||||||
| 555 | acc -= bp[11 - 8]; | - | ||||||||||||||||||||||||
| 556 | acc -= bp[12 - 8]; | - | ||||||||||||||||||||||||
| 557 | acc -= bp[13 - 8]; | - | ||||||||||||||||||||||||
| 558 | rp[7] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 559 | - | |||||||||||||||||||||||||
| 560 | carry = (int)(acc >> 32); | - | ||||||||||||||||||||||||
| 561 | } | - | ||||||||||||||||||||||||
| 562 | u.f = bn_sub_words; | - | ||||||||||||||||||||||||
| 563 | if (carry > 0
| 0 | ||||||||||||||||||||||||
| 564 | carry = (int)bn_sub_words(r_d, r_d, _nist_p_256[carry - 1], never executed: carry = (int)bn_sub_words(r_d, r_d, _nist_p_256[carry - 1], (256+64 -1)/64); | 0 | ||||||||||||||||||||||||
| 565 | (256+64 -1)/64); never executed: carry = (int)bn_sub_words(r_d, r_d, _nist_p_256[carry - 1], (256+64 -1)/64); | 0 | ||||||||||||||||||||||||
| 566 | else if (carry < 0
| 0 | ||||||||||||||||||||||||
| 567 | carry = (int)bn_add_words(r_d, r_d, _nist_p_256[-carry - 1], | - | ||||||||||||||||||||||||
| 568 | (256+64 -1)/64); | - | ||||||||||||||||||||||||
| 569 | mask = 0 - (uintptr_t)carry; | - | ||||||||||||||||||||||||
| 570 | u.p = ((uintptr_t)bn_sub_words & mask) | | - | ||||||||||||||||||||||||
| 571 | ((uintptr_t)bn_add_words & ~mask); | - | ||||||||||||||||||||||||
| 572 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
| 573 | carry = 1; never executed: carry = 1; | 0 | ||||||||||||||||||||||||
| 574 | - | |||||||||||||||||||||||||
| 575 | mask = 0 - (uintptr_t)(*u.f)(c_d, r_d, _nist_p_256[0], (256+64 -1)/64); | - | ||||||||||||||||||||||||
| 576 | mask &= 0 - (uintptr_t)carry; | - | ||||||||||||||||||||||||
| 577 | res = c_d; | - | ||||||||||||||||||||||||
| 578 | res = (unsigned long *)(((uintptr_t)res & ~mask) | ((uintptr_t)r_d & mask)); | - | ||||||||||||||||||||||||
| 579 | nist_cp_bn(r_d, res, (256+64 -1)/64); | - | ||||||||||||||||||||||||
| 580 | r->top = (256+64 -1)/64; | - | ||||||||||||||||||||||||
| 581 | { unsigned long *ftl; int tmp_top = (r)->top; if (tmp_top > 0
never executed: (r)->top = tmp_top; }break;never executed: ; };end of block | 0 | ||||||||||||||||||||||||
| 582 | - | |||||||||||||||||||||||||
| 583 | return never executed: 1;return 1;never executed: return 1; | 0 | ||||||||||||||||||||||||
| 584 | } | - | ||||||||||||||||||||||||
| 585 | int | - | ||||||||||||||||||||||||
| 586 | BN_nist_mod_384(BIGNUM *r, const BIGNUM *a, const BIGNUM *field, BN_CTX *ctx) | - | ||||||||||||||||||||||||
| 587 | { | - | ||||||||||||||||||||||||
| 588 | int i, top = a->top; | - | ||||||||||||||||||||||||
| 589 | int carry = 0; | - | ||||||||||||||||||||||||
| 590 | unsigned long *r_d, *a_d = a->d; | - | ||||||||||||||||||||||||
| 591 | union { | - | ||||||||||||||||||||||||
| 592 | unsigned long bn[(384+64 -1)/64]; | - | ||||||||||||||||||||||||
| 593 | unsigned int ui[(384+64 -1)/64 * | - | ||||||||||||||||||||||||
| 594 | sizeof(unsigned long) / sizeof(unsigned int)]; | - | ||||||||||||||||||||||||
| 595 | } buf; | - | ||||||||||||||||||||||||
| 596 | unsigned long c_d[(384+64 -1)/64], *res; | - | ||||||||||||||||||||||||
| 597 | uintptr_t mask; | - | ||||||||||||||||||||||||
| 598 | union { | - | ||||||||||||||||||||||||
| 599 | bn_addsub_f f; | - | ||||||||||||||||||||||||
| 600 | uintptr_t p; | - | ||||||||||||||||||||||||
| 601 | } u; | - | ||||||||||||||||||||||||
| 602 | static const BIGNUM _bignum_nist_p_384_sqr = { | - | ||||||||||||||||||||||||
| 603 | (unsigned long *)_nist_p_384_sqr, | - | ||||||||||||||||||||||||
| 604 | sizeof(_nist_p_384_sqr) / sizeof(_nist_p_384_sqr[0]), | - | ||||||||||||||||||||||||
| 605 | sizeof(_nist_p_384_sqr) / sizeof(_nist_p_384_sqr[0]), | - | ||||||||||||||||||||||||
| 606 | 0, | - | ||||||||||||||||||||||||
| 607 | 0x02 | - | ||||||||||||||||||||||||
| 608 | }; | - | ||||||||||||||||||||||||
| 609 | - | |||||||||||||||||||||||||
| 610 | field = &_bignum_nist_p_384; | - | ||||||||||||||||||||||||
| 611 | - | |||||||||||||||||||||||||
| 612 | if (((
| 0 | ||||||||||||||||||||||||
| 613 | return never executed: BN_nnmod(r, a, field, ctx);return BN_nnmod(r, a, field, ctx);never executed: return BN_nnmod(r, a, field, ctx); | 0 | ||||||||||||||||||||||||
| 614 | - | |||||||||||||||||||||||||
| 615 | i = BN_ucmp(field, a); | - | ||||||||||||||||||||||||
| 616 | if (i == 0
| 0 | ||||||||||||||||||||||||
| 617 | (BN_set_word((r),0)); | - | ||||||||||||||||||||||||
| 618 | return never executed: 1;return 1;never executed: return 1; | 0 | ||||||||||||||||||||||||
| 619 | } else if (i > 0
| 0 | ||||||||||||||||||||||||
| 620 | return never executed: (return (r == a) ? 1 : (BN_copy(r, a) != ((void *)0) );
never executed: return (r == a) ? 1 : (BN_copy(r, a) != ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 621 | ((void *)0) never executed: return (r == a) ? 1 : (BN_copy(r, a) != ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 622 | ); never executed: return (r == a) ? 1 : (BN_copy(r, a) != ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 623 | - | |||||||||||||||||||||||||
| 624 | if (r != a
| 0 | ||||||||||||||||||||||||
| 625 | if (!((((
| 0 | ||||||||||||||||||||||||
| 626 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||||||||||||||
| 627 | r_d = r->d; | - | ||||||||||||||||||||||||
| 628 | nist_cp_bn(r_d, a_d, (384+64 -1)/64); | - | ||||||||||||||||||||||||
| 629 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
| 630 | r_d = a_d; never executed: r_d = a_d; | 0 | ||||||||||||||||||||||||
| 631 | - | |||||||||||||||||||||||||
| 632 | nist_cp_bn_0(buf.bn, a_d + (384+64 -1)/64, | - | ||||||||||||||||||||||||
| 633 | top - (384+64 -1)/64, (384+64 -1)/64); | - | ||||||||||||||||||||||||
| 634 | - | |||||||||||||||||||||||||
| 635 | - | |||||||||||||||||||||||||
| 636 | { | - | ||||||||||||||||||||||||
| 637 | long acc; | - | ||||||||||||||||||||||||
| 638 | unsigned int *rp = (unsigned int *)r_d; | - | ||||||||||||||||||||||||
| 639 | const unsigned int *bp = (const unsigned int *)buf.ui; | - | ||||||||||||||||||||||||
| 640 | - | |||||||||||||||||||||||||
| 641 | acc = rp[0]; | - | ||||||||||||||||||||||||
| 642 | acc += bp[12 - 12]; | - | ||||||||||||||||||||||||
| 643 | acc += bp[21 - 12]; | - | ||||||||||||||||||||||||
| 644 | acc += bp[20 - 12]; | - | ||||||||||||||||||||||||
| 645 | acc -= bp[23 - 12]; | - | ||||||||||||||||||||||||
| 646 | rp[0] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 647 | acc >>= 32; | - | ||||||||||||||||||||||||
| 648 | - | |||||||||||||||||||||||||
| 649 | acc += rp[1]; | - | ||||||||||||||||||||||||
| 650 | acc += bp[13 - 12]; | - | ||||||||||||||||||||||||
| 651 | acc += bp[22 - 12]; | - | ||||||||||||||||||||||||
| 652 | acc += bp[23 - 12]; | - | ||||||||||||||||||||||||
| 653 | acc -= bp[12 - 12]; | - | ||||||||||||||||||||||||
| 654 | acc -= bp[20 - 12]; | - | ||||||||||||||||||||||||
| 655 | rp[1] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 656 | acc >>= 32; | - | ||||||||||||||||||||||||
| 657 | - | |||||||||||||||||||||||||
| 658 | acc += rp[2]; | - | ||||||||||||||||||||||||
| 659 | acc += bp[14 - 12]; | - | ||||||||||||||||||||||||
| 660 | acc += bp[23 - 12]; | - | ||||||||||||||||||||||||
| 661 | acc -= bp[13 - 12]; | - | ||||||||||||||||||||||||
| 662 | acc -= bp[21 - 12]; | - | ||||||||||||||||||||||||
| 663 | rp[2] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 664 | acc >>= 32; | - | ||||||||||||||||||||||||
| 665 | - | |||||||||||||||||||||||||
| 666 | acc += rp[3]; | - | ||||||||||||||||||||||||
| 667 | acc += bp[15 - 12]; | - | ||||||||||||||||||||||||
| 668 | acc += bp[12 - 12]; | - | ||||||||||||||||||||||||
| 669 | acc += bp[20 - 12]; | - | ||||||||||||||||||||||||
| 670 | acc += bp[21 - 12]; | - | ||||||||||||||||||||||||
| 671 | acc -= bp[14 - 12]; | - | ||||||||||||||||||||||||
| 672 | acc -= bp[22 - 12]; | - | ||||||||||||||||||||||||
| 673 | acc -= bp[23 - 12]; | - | ||||||||||||||||||||||||
| 674 | rp[3] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 675 | acc >>= 32; | - | ||||||||||||||||||||||||
| 676 | - | |||||||||||||||||||||||||
| 677 | acc += rp[4]; | - | ||||||||||||||||||||||||
| 678 | acc += bp[21 - 12]; | - | ||||||||||||||||||||||||
| 679 | acc += bp[21 - 12]; | - | ||||||||||||||||||||||||
| 680 | acc += bp[16 - 12]; | - | ||||||||||||||||||||||||
| 681 | acc += bp[13 - 12]; | - | ||||||||||||||||||||||||
| 682 | acc += bp[12 - 12]; | - | ||||||||||||||||||||||||
| 683 | acc += bp[20 - 12]; | - | ||||||||||||||||||||||||
| 684 | acc += bp[22 - 12]; | - | ||||||||||||||||||||||||
| 685 | acc -= bp[15 - 12]; | - | ||||||||||||||||||||||||
| 686 | acc -= bp[23 - 12]; | - | ||||||||||||||||||||||||
| 687 | acc -= bp[23 - 12]; | - | ||||||||||||||||||||||||
| 688 | rp[4] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 689 | acc >>= 32; | - | ||||||||||||||||||||||||
| 690 | - | |||||||||||||||||||||||||
| 691 | acc += rp[5]; | - | ||||||||||||||||||||||||
| 692 | acc += bp[22 - 12]; | - | ||||||||||||||||||||||||
| 693 | acc += bp[22 - 12]; | - | ||||||||||||||||||||||||
| 694 | acc += bp[17 - 12]; | - | ||||||||||||||||||||||||
| 695 | acc += bp[14 - 12]; | - | ||||||||||||||||||||||||
| 696 | acc += bp[13 - 12]; | - | ||||||||||||||||||||||||
| 697 | acc += bp[21 - 12]; | - | ||||||||||||||||||||||||
| 698 | acc += bp[23 - 12]; | - | ||||||||||||||||||||||||
| 699 | acc -= bp[16 - 12]; | - | ||||||||||||||||||||||||
| 700 | rp[5] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 701 | acc >>= 32; | - | ||||||||||||||||||||||||
| 702 | - | |||||||||||||||||||||||||
| 703 | acc += rp[6]; | - | ||||||||||||||||||||||||
| 704 | acc += bp[23 - 12]; | - | ||||||||||||||||||||||||
| 705 | acc += bp[23 - 12]; | - | ||||||||||||||||||||||||
| 706 | acc += bp[18 - 12]; | - | ||||||||||||||||||||||||
| 707 | acc += bp[15 - 12]; | - | ||||||||||||||||||||||||
| 708 | acc += bp[14 - 12]; | - | ||||||||||||||||||||||||
| 709 | acc += bp[22 - 12]; | - | ||||||||||||||||||||||||
| 710 | acc -= bp[17 - 12]; | - | ||||||||||||||||||||||||
| 711 | rp[6] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 712 | acc >>= 32; | - | ||||||||||||||||||||||||
| 713 | - | |||||||||||||||||||||||||
| 714 | acc += rp[7]; | - | ||||||||||||||||||||||||
| 715 | acc += bp[19 - 12]; | - | ||||||||||||||||||||||||
| 716 | acc += bp[16 - 12]; | - | ||||||||||||||||||||||||
| 717 | acc += bp[15 - 12]; | - | ||||||||||||||||||||||||
| 718 | acc += bp[23 - 12]; | - | ||||||||||||||||||||||||
| 719 | acc -= bp[18 - 12]; | - | ||||||||||||||||||||||||
| 720 | rp[7] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 721 | acc >>= 32; | - | ||||||||||||||||||||||||
| 722 | - | |||||||||||||||||||||||||
| 723 | acc += rp[8]; | - | ||||||||||||||||||||||||
| 724 | acc += bp[20 - 12]; | - | ||||||||||||||||||||||||
| 725 | acc += bp[17 - 12]; | - | ||||||||||||||||||||||||
| 726 | acc += bp[16 - 12]; | - | ||||||||||||||||||||||||
| 727 | acc -= bp[19 - 12]; | - | ||||||||||||||||||||||||
| 728 | rp[8] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 729 | acc >>= 32; | - | ||||||||||||||||||||||||
| 730 | - | |||||||||||||||||||||||||
| 731 | acc += rp[9]; | - | ||||||||||||||||||||||||
| 732 | acc += bp[21 - 12]; | - | ||||||||||||||||||||||||
| 733 | acc += bp[18 - 12]; | - | ||||||||||||||||||||||||
| 734 | acc += bp[17 - 12]; | - | ||||||||||||||||||||||||
| 735 | acc -= bp[20 - 12]; | - | ||||||||||||||||||||||||
| 736 | rp[9] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 737 | acc >>= 32; | - | ||||||||||||||||||||||||
| 738 | - | |||||||||||||||||||||||||
| 739 | acc += rp[10]; | - | ||||||||||||||||||||||||
| 740 | acc += bp[22 - 12]; | - | ||||||||||||||||||||||||
| 741 | acc += bp[19 - 12]; | - | ||||||||||||||||||||||||
| 742 | acc += bp[18 - 12]; | - | ||||||||||||||||||||||||
| 743 | acc -= bp[21 - 12]; | - | ||||||||||||||||||||||||
| 744 | rp[10] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 745 | acc >>= 32; | - | ||||||||||||||||||||||||
| 746 | - | |||||||||||||||||||||||||
| 747 | acc += rp[11]; | - | ||||||||||||||||||||||||
| 748 | acc += bp[23 - 12]; | - | ||||||||||||||||||||||||
| 749 | acc += bp[20 - 12]; | - | ||||||||||||||||||||||||
| 750 | acc += bp[19 - 12]; | - | ||||||||||||||||||||||||
| 751 | acc -= bp[22 - 12]; | - | ||||||||||||||||||||||||
| 752 | rp[11] = (unsigned int)acc; | - | ||||||||||||||||||||||||
| 753 | - | |||||||||||||||||||||||||
| 754 | carry = (int)(acc >> 32); | - | ||||||||||||||||||||||||
| 755 | } | - | ||||||||||||||||||||||||
| 756 | u.f = bn_sub_words; | - | ||||||||||||||||||||||||
| 757 | if (carry > 0
| 0 | ||||||||||||||||||||||||
| 758 | carry = (int)bn_sub_words(r_d, r_d, _nist_p_384[carry - 1], never executed: carry = (int)bn_sub_words(r_d, r_d, _nist_p_384[carry - 1], (384+64 -1)/64); | 0 | ||||||||||||||||||||||||
| 759 | (384+64 -1)/64); never executed: carry = (int)bn_sub_words(r_d, r_d, _nist_p_384[carry - 1], (384+64 -1)/64); | 0 | ||||||||||||||||||||||||
| 760 | else if (carry < 0
| 0 | ||||||||||||||||||||||||
| 761 | carry = (int)bn_add_words(r_d, r_d, _nist_p_384[-carry - 1], | - | ||||||||||||||||||||||||
| 762 | (384+64 -1)/64); | - | ||||||||||||||||||||||||
| 763 | mask = 0 - (uintptr_t)carry; | - | ||||||||||||||||||||||||
| 764 | u.p = ((uintptr_t)bn_sub_words & mask) | | - | ||||||||||||||||||||||||
| 765 | ((uintptr_t)bn_add_words & ~mask); | - | ||||||||||||||||||||||||
| 766 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
| 767 | carry = 1; never executed: carry = 1; | 0 | ||||||||||||||||||||||||
| 768 | - | |||||||||||||||||||||||||
| 769 | mask = 0 - (uintptr_t)(*u.f)(c_d, r_d, _nist_p_384[0], (384+64 -1)/64); | - | ||||||||||||||||||||||||
| 770 | mask &= 0 - (uintptr_t)carry; | - | ||||||||||||||||||||||||
| 771 | res = c_d; | - | ||||||||||||||||||||||||
| 772 | res = (unsigned long *)(((uintptr_t)res & ~mask) | ((uintptr_t)r_d & mask)); | - | ||||||||||||||||||||||||
| 773 | nist_cp_bn(r_d, res, (384+64 -1)/64); | - | ||||||||||||||||||||||||
| 774 | r->top = (384+64 -1)/64; | - | ||||||||||||||||||||||||
| 775 | { unsigned long *ftl; int tmp_top = (r)->top; if (tmp_top > 0
never executed: (r)->top = tmp_top; }break;never executed: ; };end of block | 0 | ||||||||||||||||||||||||
| 776 | - | |||||||||||||||||||||||||
| 777 | return never executed: 1;return 1;never executed: return 1; | 0 | ||||||||||||||||||||||||
| 778 | } | - | ||||||||||||||||||||||||
| 779 | - | |||||||||||||||||||||||||
| 780 | - | |||||||||||||||||||||||||
| 781 | - | |||||||||||||||||||||||||
| 782 | - | |||||||||||||||||||||||||
| 783 | - | |||||||||||||||||||||||||
| 784 | int | - | ||||||||||||||||||||||||
| 785 | BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *field, BN_CTX *ctx) | - | ||||||||||||||||||||||||
| 786 | { | - | ||||||||||||||||||||||||
| 787 | int top = a->top, i; | - | ||||||||||||||||||||||||
| 788 | unsigned long *r_d, *a_d = a->d, t_d[(521+64 -1)/64], val, tmp, *res; | - | ||||||||||||||||||||||||
| 789 | uintptr_t mask; | - | ||||||||||||||||||||||||
| 790 | static const BIGNUM _bignum_nist_p_521_sqr = { | - | ||||||||||||||||||||||||
| 791 | (unsigned long *)_nist_p_521_sqr, | - | ||||||||||||||||||||||||
| 792 | sizeof(_nist_p_521_sqr) / sizeof(_nist_p_521_sqr[0]), | - | ||||||||||||||||||||||||
| 793 | sizeof(_nist_p_521_sqr) / sizeof(_nist_p_521_sqr[0]), | - | ||||||||||||||||||||||||
| 794 | 0, | - | ||||||||||||||||||||||||
| 795 | 0x02 | - | ||||||||||||||||||||||||
| 796 | }; | - | ||||||||||||||||||||||||
| 797 | - | |||||||||||||||||||||||||
| 798 | field = &_bignum_nist_p_521; | - | ||||||||||||||||||||||||
| 799 | - | |||||||||||||||||||||||||
| 800 | if (((
| 0 | ||||||||||||||||||||||||
| 801 | return never executed: BN_nnmod(r, a, field, ctx);return BN_nnmod(r, a, field, ctx);never executed: return BN_nnmod(r, a, field, ctx); | 0 | ||||||||||||||||||||||||
| 802 | - | |||||||||||||||||||||||||
| 803 | i = BN_ucmp(field, a); | - | ||||||||||||||||||||||||
| 804 | if (i == 0
| 0 | ||||||||||||||||||||||||
| 805 | (BN_set_word((r),0)); | - | ||||||||||||||||||||||||
| 806 | return never executed: 1;return 1;never executed: return 1; | 0 | ||||||||||||||||||||||||
| 807 | } else if (i > 0
| 0 | ||||||||||||||||||||||||
| 808 | return never executed: (return (r == a) ? 1 : (BN_copy(r, a) != ((void *)0) );
never executed: return (r == a) ? 1 : (BN_copy(r, a) != ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 809 | ((void *)0) never executed: return (r == a) ? 1 : (BN_copy(r, a) != ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 810 | ); never executed: return (r == a) ? 1 : (BN_copy(r, a) != ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 811 | - | |||||||||||||||||||||||||
| 812 | if (r != a
| 0 | ||||||||||||||||||||||||
| 813 | if (!((((
| 0 | ||||||||||||||||||||||||
| 814 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||||||||||||||
| 815 | r_d = r->d; | - | ||||||||||||||||||||||||
| 816 | nist_cp_bn(r_d, a_d, (521+64 -1)/64); | - | ||||||||||||||||||||||||
| 817 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
| 818 | r_d = a_d; never executed: r_d = a_d; | 0 | ||||||||||||||||||||||||
| 819 | - | |||||||||||||||||||||||||
| 820 | - | |||||||||||||||||||||||||
| 821 | nist_cp_bn_0(t_d, a_d + ((521+64 -1)/64 - 1), | - | ||||||||||||||||||||||||
| 822 | top - ((521+64 -1)/64 - 1), (521+64 -1)/64); | - | ||||||||||||||||||||||||
| 823 | - | |||||||||||||||||||||||||
| 824 | for (val = t_d[0], i = 0; i < (521+64 -1)/64 - 1
| 0 | ||||||||||||||||||||||||
| 825 | tmp = val >> (521%64); | - | ||||||||||||||||||||||||
| 826 | val = t_d[i + 1]; | - | ||||||||||||||||||||||||
| 827 | t_d[i] = (tmp | val << (64 -(521%64))) & (0xffffffffffffffffL); | - | ||||||||||||||||||||||||
| 828 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 829 | t_d[i] = val >> (521%64); | - | ||||||||||||||||||||||||
| 830 | - | |||||||||||||||||||||||||
| 831 | r_d[i] &= ((unsigned long)(0xffffffffffffffffL)>>(64 -(521%64))); | - | ||||||||||||||||||||||||
| 832 | - | |||||||||||||||||||||||||
| 833 | bn_add_words(r_d, r_d, t_d, (521+64 -1)/64); | - | ||||||||||||||||||||||||
| 834 | mask = 0 - (uintptr_t)bn_sub_words(t_d, r_d, _nist_p_521, | - | ||||||||||||||||||||||||
| 835 | (521+64 -1)/64); | - | ||||||||||||||||||||||||
| 836 | res = t_d; | - | ||||||||||||||||||||||||
| 837 | res = (unsigned long *)(((uintptr_t)res & ~mask) | ((uintptr_t)r_d & mask)); | - | ||||||||||||||||||||||||
| 838 | nist_cp_bn(r_d, res, (521+64 -1)/64); | - | ||||||||||||||||||||||||
| 839 | r->top = (521+64 -1)/64; | - | ||||||||||||||||||||||||
| 840 | { unsigned long *ftl; int tmp_top = (r)->top; if (tmp_top > 0
never executed: (r)->top = tmp_top; }break;never executed: ; };end of block | 0 | ||||||||||||||||||||||||
| 841 | - | |||||||||||||||||||||||||
| 842 | return never executed: 1;return 1;never executed: return 1; | 0 | ||||||||||||||||||||||||
| 843 | } | - | ||||||||||||||||||||||||
| Switch to Source code | Preprocessed file |