BIGNUM *rshift = getBN(s, "RShift");
BIGNUM *ret = BN_new();
int n = 0;
- int st = 0;
+ int errcnt = 1;
if (a == NULL || rshift == NULL || ret == NULL || !getint(s, &n, "N"))
goto err;
+ errcnt = 0;
if (!BN_rshift(ret, a, n)
|| !equalBN("A >> N", rshift, ret))
- goto err;
+ errcnt++;
+
+ /* If N == 1, try with rshift1 as well */
+ if (n == 1) {
+ if (!BN_rshift1(ret, a)
+ || !equalBN("A >> 1 (rshift1)", rshift, ret))
+ errcnt++;
+ }
- st = 1;
err:
BN_free(a);
BN_free(rshift);
BN_free(ret);
- return st;
+ return errcnt == 0;
}
static int file_square(STANZA *s)
static int file_tests()
{
STANZA s;
- int linesread = 0, result = 0;
+ int linesread = 0, errcnt = 0;
/* Read test file. */
memset(&s, 0, sizeof(s));
if (s.numpairs == 0)
continue;
if (!file_test_run(&s)) {
- if (result == 0)
- fprintf(stderr, "Test at %d failed\n", s.start);
- goto err;
+ fprintf(stderr, "Test at %d failed\n", s.start);
+ errcnt++;
}
clearstanza(&s);
s.start = linesread;
}
- result = 1;
-err:
- return result;
+ return errcnt == 0;
}
int test_main(int argc, char *argv[])