exptest: convert to opaque BN; minor KNF tweaks.
authortb <tb@openbsd.org>
Thu, 18 Nov 2021 15:17:31 +0000 (15:17 +0000)
committertb <tb@openbsd.org>
Thu, 18 Nov 2021 15:17:31 +0000 (15:17 +0000)
regress/lib/libcrypto/exp/exptest.c

index e7f5848..e626007 100644 (file)
@@ -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;