From: tb Date: Thu, 18 Nov 2021 15:17:31 +0000 (+0000) Subject: exptest: convert to opaque BN; minor KNF tweaks. X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=8d8aad8aceb7039895495625b8e4d180c7bc15a8;p=openbsd exptest: convert to opaque BN; minor KNF tweaks. --- diff --git a/regress/lib/libcrypto/exp/exptest.c b/regress/lib/libcrypto/exp/exptest.c index e7f58485283..e6260071b9d 100644 --- a/regress/lib/libcrypto/exp/exptest.c +++ b/regress/lib/libcrypto/exp/exptest.c @@ -1,4 +1,4 @@ -/* $OpenBSD: exptest.c,v 1.7 2018/11/08 22:20:25 jsing Exp $ */ +/* $OpenBSD: exptest.c,v 1.8 2021/11/18 15:17:31 tb Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -79,8 +79,9 @@ int BN_mod_exp_mont_nonct(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, * Test that r == 0 in test_exp_mod_zero(). Returns one on success, * returns zero and prints debug output otherwise. */ -static int a_is_zero_mod_one(const char *method, const BIGNUM *r, - const BIGNUM *a) { +static int +a_is_zero_mod_one(const char *method, const BIGNUM *r, const BIGNUM *a) +{ if (!BN_is_zero(r)) { fprintf(stderr, "%s failed:\n", method); fprintf(stderr, "a ** 0 mod 1 = r (should be 0)\n"); @@ -97,95 +98,101 @@ static int a_is_zero_mod_one(const char *method, const BIGNUM *r, /* * test_exp_mod_zero tests that x**0 mod 1 == 0. It returns zero on success. */ -static int test_exp_mod_zero(void) +static int +test_exp_mod_zero(void) { - BIGNUM a, p, m; - BIGNUM r; + BIGNUM *a = NULL, *p = NULL, *m = NULL, *r = NULL; BN_ULONG one_word = 1; - BN_CTX *ctx = BN_CTX_new(); + BN_CTX *ctx; int ret = 1, failed = 0; - BN_init(&m); - BN_one(&m); + if ((ctx = BN_CTX_new()) == NULL) + goto err; + if ((m = BN_new()) == NULL) + goto err; + BN_one(m); - BN_init(&a); - BN_one(&a); + if ((a = BN_new()) == NULL) + goto err; + BN_one(a); - BN_init(&p); - BN_zero(&p); + if ((p = BN_new()) == NULL) + goto err; + BN_zero(p); - BN_init(&r); + if ((r = BN_new()) == NULL) + goto err; - if (!BN_rand(&a, 1024, 0, 0)) + if (!BN_rand(a, 1024, 0, 0)) goto err; - if (!BN_mod_exp(&r, &a, &p, &m, ctx)) + if (!BN_mod_exp(r, a, p, m, ctx)) goto err; - if (!a_is_zero_mod_one("BN_mod_exp", &r, &a)) + if (!a_is_zero_mod_one("BN_mod_exp", r, a)) failed = 1; - if (!BN_mod_exp_ct(&r, &a, &p, &m, ctx)) + if (!BN_mod_exp_ct(r, a, p, m, ctx)) goto err; - if (!a_is_zero_mod_one("BN_mod_exp_ct", &r, &a)) + if (!a_is_zero_mod_one("BN_mod_exp_ct", r, a)) failed = 1; - if (!BN_mod_exp_nonct(&r, &a, &p, &m, ctx)) + if (!BN_mod_exp_nonct(r, a, p, m, ctx)) goto err; - if (!a_is_zero_mod_one("BN_mod_exp_nonct", &r, &a)) + if (!a_is_zero_mod_one("BN_mod_exp_nonct", r, a)) failed = 1; - if (!BN_mod_exp_recp(&r, &a, &p, &m, ctx)) + if (!BN_mod_exp_recp(r, a, p, m, ctx)) goto err; - if (!a_is_zero_mod_one("BN_mod_exp_recp", &r, &a)) + if (!a_is_zero_mod_one("BN_mod_exp_recp", r, a)) failed = 1; - if (!BN_mod_exp_simple(&r, &a, &p, &m, ctx)) + if (!BN_mod_exp_simple(r, a, p, m, ctx)) goto err; - if (!a_is_zero_mod_one("BN_mod_exp_simple", &r, &a)) + if (!a_is_zero_mod_one("BN_mod_exp_simple", r, a)) failed = 1; - if (!BN_mod_exp_mont(&r, &a, &p, &m, ctx, NULL)) + if (!BN_mod_exp_mont(r, a, p, m, ctx, NULL)) goto err; - if (!a_is_zero_mod_one("BN_mod_exp_mont", &r, &a)) + if (!a_is_zero_mod_one("BN_mod_exp_mont", r, a)) failed = 1; - if (!BN_mod_exp_mont_ct(&r, &a, &p, &m, ctx, NULL)) + if (!BN_mod_exp_mont_ct(r, a, p, m, ctx, NULL)) goto err; - if (!a_is_zero_mod_one("BN_mod_exp_mont_ct", &r, &a)) + if (!a_is_zero_mod_one("BN_mod_exp_mont_ct", r, a)) failed = 1; - if (!BN_mod_exp_mont_nonct(&r, &a, &p, &m, ctx, NULL)) + if (!BN_mod_exp_mont_nonct(r, a, p, m, ctx, NULL)) goto err; - if (!a_is_zero_mod_one("BN_mod_exp_mont_nonct", &r, &a)) + if (!a_is_zero_mod_one("BN_mod_exp_mont_nonct", r, a)) failed = 1; - if (!BN_mod_exp_mont_consttime(&r, &a, &p, &m, ctx, NULL)) { + if (!BN_mod_exp_mont_consttime(r, a, p, m, ctx, NULL)) { goto err; } - if (!a_is_zero_mod_one("BN_mod_exp_mont_consttime", &r, &a)) + if (!a_is_zero_mod_one("BN_mod_exp_mont_consttime", r, a)) failed = 1; /* * A different codepath exists for single word multiplication * in non-constant-time only. */ - if (!BN_mod_exp_mont_word(&r, one_word, &p, &m, ctx, NULL)) + if (!BN_mod_exp_mont_word(r, one_word, p, m, ctx, NULL)) goto err; - if (!BN_is_zero(&r)) { + if (!BN_is_zero(r)) { fprintf(stderr, "BN_mod_exp_mont_word failed:\n"); fprintf(stderr, "1 ** 0 mod 1 = r (should be 0)\n"); fprintf(stderr, "r = "); - BN_print_fp(stderr, &r); + BN_print_fp(stderr, r); fprintf(stderr, "\n"); return 0; } @@ -193,10 +200,10 @@ static int test_exp_mod_zero(void) ret = failed; err: - BN_free(&r); - BN_free(&a); - BN_free(&p); - BN_free(&m); + BN_free(r); + BN_free(a); + BN_free(p); + BN_free(m); BN_CTX_free(ctx); return ret;