diff options
Diffstat (limited to '')
| -rw-r--r-- | src/regress/lib/libcrypto/bn/general/bntest.c | 79 |
1 files changed, 78 insertions, 1 deletions
diff --git a/src/regress/lib/libcrypto/bn/general/bntest.c b/src/regress/lib/libcrypto/bn/general/bntest.c index 7e5e6ed81b..98616c37b2 100644 --- a/src/regress/lib/libcrypto/bn/general/bntest.c +++ b/src/regress/lib/libcrypto/bn/general/bntest.c | |||
| @@ -1236,15 +1236,19 @@ err: | |||
| 1236 | int | 1236 | int |
| 1237 | test_mod_exp_mont5(BIO *bp, BN_CTX *ctx) | 1237 | test_mod_exp_mont5(BIO *bp, BN_CTX *ctx) |
| 1238 | { | 1238 | { |
| 1239 | BIGNUM *a, *p, *m, *d, *e; | 1239 | BIGNUM *a, *p, *m, *d, *e, *b, *n, *c; |
| 1240 | int rc = 1; | 1240 | int rc = 1; |
| 1241 | BN_MONT_CTX *mont; | 1241 | BN_MONT_CTX *mont; |
| 1242 | char *bigstring; | ||
| 1242 | 1243 | ||
| 1243 | a = BN_new(); | 1244 | a = BN_new(); |
| 1244 | p = BN_new(); | 1245 | p = BN_new(); |
| 1245 | m = BN_new(); | 1246 | m = BN_new(); |
| 1246 | d = BN_new(); | 1247 | d = BN_new(); |
| 1247 | e = BN_new(); | 1248 | e = BN_new(); |
| 1249 | b = BN_new(); | ||
| 1250 | n = BN_new(); | ||
| 1251 | c = BN_new(); | ||
| 1248 | 1252 | ||
| 1249 | mont = BN_MONT_CTX_new(); | 1253 | mont = BN_MONT_CTX_new(); |
| 1250 | 1254 | ||
| @@ -1261,6 +1265,76 @@ test_mod_exp_mont5(BIO *bp, BN_CTX *ctx) | |||
| 1261 | rc = 0; | 1265 | rc = 0; |
| 1262 | goto err; | 1266 | goto err; |
| 1263 | } | 1267 | } |
| 1268 | /* Regression test for carry bug in mulx4x_mont */ | ||
| 1269 | BN_hex2bn(&a, | ||
| 1270 | "7878787878787878787878787878787878787878787878787878787878787878" | ||
| 1271 | "7878787878787878787878787878787878787878787878787878787878787878" | ||
| 1272 | "7878787878787878787878787878787878787878787878787878787878787878" | ||
| 1273 | "7878787878787878787878787878787878787878787878787878787878787878"); | ||
| 1274 | BN_hex2bn(&b, | ||
| 1275 | "095D72C08C097BA488C5E439C655A192EAFB6380073D8C2664668EDDB4060744" | ||
| 1276 | "E16E57FB4EDB9AE10A0CEFCDC28A894F689A128379DB279D48A2E20849D68593" | ||
| 1277 | "9B7803BCF46CEBF5C533FB0DD35B080593DE5472E3FE5DB951B8BFF9B4CB8F03" | ||
| 1278 | "9CC638A5EE8CDD703719F8000E6A9F63BEED5F2FCD52FF293EA05A251BB4AB81"); | ||
| 1279 | BN_hex2bn(&n, | ||
| 1280 | "D78AF684E71DB0C39CFF4E64FB9DB567132CB9C50CC98009FEB820B26F2DED9B" | ||
| 1281 | "91B9B5E2B83AE0AE4EB4E0523CA726BFBE969B89FD754F674CE99118C3F2D1C5" | ||
| 1282 | "D81FDC7C54E02B60262B241D53C040E99E45826ECA37A804668E690E1AFC1CA4" | ||
| 1283 | "2C9A15D84D4954425F0B7642FC0BD9D7B24E2618D2DCC9B729D944BADACFDDAF"); | ||
| 1284 | BN_MONT_CTX_set(mont, n, ctx); | ||
| 1285 | BN_mod_mul_montgomery(c, a, b, mont, ctx); | ||
| 1286 | BN_mod_mul_montgomery(d, b, a, mont, ctx); | ||
| 1287 | if (BN_cmp(c, d)) { | ||
| 1288 | fprintf(stderr, "Montgomery multiplication test failed:" | ||
| 1289 | " a*b != b*a.\n"); | ||
| 1290 | rc = 0; | ||
| 1291 | goto err; | ||
| 1292 | } | ||
| 1293 | /* Regression test for carry bug in sqr[x]8x_mont */ | ||
| 1294 | BN_hex2bn(&n, | ||
| 1295 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | ||
| 1296 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | ||
| 1297 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | ||
| 1298 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | ||
| 1299 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | ||
| 1300 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | ||
| 1301 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | ||
| 1302 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFF00" | ||
| 1303 | "0000000000000000000000000000000000000000000000000000000000000000" | ||
| 1304 | "0000000000000000000000000000000000000000000000000000000000000000" | ||
| 1305 | "0000000000000000000000000000000000000000000000000000000000000000" | ||
| 1306 | "0000000000000000000000000000000000000000000000000000000000000000" | ||
| 1307 | "0000000000000000000000000000000000000000000000000000000000000000" | ||
| 1308 | "0000000000000000000000000000000000000000000000000000000000000000" | ||
| 1309 | "0000000000000000000000000000000000000000000000000000000000000000" | ||
| 1310 | "00000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF"); | ||
| 1311 | BN_hex2bn(&a, | ||
| 1312 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | ||
| 1313 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | ||
| 1314 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | ||
| 1315 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | ||
| 1316 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | ||
| 1317 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | ||
| 1318 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | ||
| 1319 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFF0000000000" | ||
| 1320 | "0000000000000000000000000000000000000000000000000000000000000000" | ||
| 1321 | "0000000000000000000000000000000000000000000000000000000000000000" | ||
| 1322 | "0000000000000000000000000000000000000000000000000000000000000000" | ||
| 1323 | "0000000000000000000000000000000000000000000000000000000000000000" | ||
| 1324 | "0000000000000000000000000000000000000000000000000000000000000000" | ||
| 1325 | "0000000000000000000000000000000000000000000000000000000000000000" | ||
| 1326 | "0000000000000000000000000000000000000000000000000000000000000000" | ||
| 1327 | "000000000000000000000000000000000000000000FFFFFFFFFFFFFF00000000"); | ||
| 1328 | b = BN_dup(a); | ||
| 1329 | BN_MONT_CTX_set(mont, n, ctx); | ||
| 1330 | BN_mod_mul_montgomery(c, a, a, mont, ctx); | ||
| 1331 | BN_mod_mul_montgomery(d, a, b, mont, ctx); | ||
| 1332 | if (BN_cmp(c, d)) { | ||
| 1333 | fprintf(stderr, "Montgomery multiplication test failed:" | ||
| 1334 | " a**2 != a*a.\n"); | ||
| 1335 | rc = 0; | ||
| 1336 | goto err; | ||
| 1337 | } | ||
| 1264 | /* Zero input */ | 1338 | /* Zero input */ |
| 1265 | BN_bntest_rand(p, 1024, 0, 0); | 1339 | BN_bntest_rand(p, 1024, 0, 0); |
| 1266 | BN_zero(a); | 1340 | BN_zero(a); |
| @@ -1318,6 +1392,9 @@ err: | |||
| 1318 | BN_free(m); | 1392 | BN_free(m); |
| 1319 | BN_free(d); | 1393 | BN_free(d); |
| 1320 | BN_free(e); | 1394 | BN_free(e); |
| 1395 | BN_free(b); | ||
| 1396 | BN_free(n); | ||
| 1397 | BN_free(c); | ||
| 1321 | return (rc); | 1398 | return (rc); |
| 1322 | } | 1399 | } |
| 1323 | 1400 | ||
