diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2015-02-15 09:46:48 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2015-02-15 09:46:48 +0000 |
commit | 47195f9c7f21a01758486984b7bd3ba2b945aeeb (patch) | |
tree | df07e268e0084848a8765853f838d6d12b32fcd4 /regress/lib/libcrypto/bn/general/bntest.c | |
parent | 950912c1fae04ffc03cc6a91fce7db1ffb6f6e3a (diff) |
Fix various memory leaks by not exiting so abruptly from failed tests.
Diffstat (limited to 'regress/lib/libcrypto/bn/general/bntest.c')
-rw-r--r-- | regress/lib/libcrypto/bn/general/bntest.c | 1086 |
1 files changed, 507 insertions, 579 deletions
diff --git a/regress/lib/libcrypto/bn/general/bntest.c b/regress/lib/libcrypto/bn/general/bntest.c index a3206aba8c9..ad000fcf56b 100644 --- a/regress/lib/libcrypto/bn/general/bntest.c +++ b/regress/lib/libcrypto/bn/general/bntest.c @@ -120,19 +120,21 @@ int test_mod_exp_sizes(BIO *bp, BN_CTX *ctx); int rand_neg(void); static int results=0; -static unsigned char lst[]="\xC6\x4F\x43\x04\x2A\xEA\xCA\x6E\x58\x36\x80\x5B\xE8\xC9" +static const unsigned char lst[]="\xC6\x4F\x43\x04\x2A\xEA\xCA\x6E\x58\x36\x80\x5B\xE8\xC9" "\x9B\x04\x5D\x48\x36\xC2\xFD\x16\xC9\x64\xF0"; -static void message(BIO *out, char *m) - { +static void +message(BIO *out, char *m) +{ fprintf(stderr, "test %s\n", m); BIO_puts(out, "print \"test "); BIO_puts(out, m); BIO_puts(out, "\\n\"\n"); - } +} -int main(int argc, char *argv[]) - { +int +main(int argc, char *argv[]) +{ BN_CTX *ctx; BIO *out; char *outfile=NULL; @@ -141,18 +143,16 @@ int main(int argc, char *argv[]) argc--; argv++; - while (argc >= 1) - { + while (argc >= 1) { if (strcmp(*argv,"-results") == 0) results=1; - else if (strcmp(*argv,"-out") == 0) - { + else if (strcmp(*argv,"-out") == 0) { if (--argc < 1) break; outfile= *(++argv); - } + } argc--; argv++; - } + } ctx=BN_CTX_new(); @@ -160,18 +160,14 @@ int main(int argc, char *argv[]) out=BIO_new(BIO_s_file()); if (out == NULL) exit(1); - if (outfile == NULL) - { + if (outfile == NULL) { BIO_set_fp(out,stdout,BIO_NOCLOSE); - } - else - { - if (!BIO_write_filename(out,outfile)) - { + } else { + if (!BIO_write_filename(out,outfile)) { perror(outfile); exit(1); - } } + } if (!results) BIO_puts(out,"obase=16\nibase=16\n"); @@ -311,107 +307,107 @@ err: ERR_load_crypto_strings(); ERR_print_errors_fp(stderr); exit(1); - } +} -int test_add(BIO *bp) - { +int +test_add(BIO *bp) +{ BIGNUM a,b,c; int i; + int rc = 1; BN_init(&a); BN_init(&b); BN_init(&c); BN_bntest_rand(&a,512,0,0); - for (i=0; i<num0; i++) - { + for (i=0; i<num0; i++) { BN_bntest_rand(&b,450+i,0,0); a.neg=rand_neg(); b.neg=rand_neg(); BN_add(&c,&a,&b); - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,&a); BIO_puts(bp," + "); BN_print(bp,&b); BIO_puts(bp," - "); - } + } BN_print(bp,&c); BIO_puts(bp,"\n"); - } + } a.neg=!a.neg; b.neg=!b.neg; BN_add(&c,&c,&b); BN_add(&c,&c,&a); - if(!BN_is_zero(&c)) - { + if(!BN_is_zero(&c)) { fprintf(stderr,"Add test failed!\n"); - return 0; - } + rc = 0; + break; } + } BN_free(&a); BN_free(&b); BN_free(&c); - return(1); - } + return(rc); +} -int test_sub(BIO *bp) - { +int +test_sub(BIO *bp) +{ BIGNUM a,b,c; int i; + int rc = 1; BN_init(&a); BN_init(&b); BN_init(&c); - for (i=0; i<num0+num1; i++) - { - if (i < num1) - { + for (i=0; i<num0+num1; i++) { + if (i < num1) { BN_bntest_rand(&a,512,0,0); BN_copy(&b,&a); - if (BN_set_bit(&a,i)==0) return(0); - BN_add_word(&b,i); + if (BN_set_bit(&a,i)==0) { + rc = 0; + break; } - else - { + BN_add_word(&b,i); + } else { BN_bntest_rand(&b,400+i-num1,0,0); a.neg=rand_neg(); b.neg=rand_neg(); - } + } BN_sub(&c,&a,&b); - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,&a); BIO_puts(bp," - "); BN_print(bp,&b); BIO_puts(bp," - "); - } + } BN_print(bp,&c); BIO_puts(bp,"\n"); - } + } BN_add(&c,&c,&b); BN_sub(&c,&c,&a); - if(!BN_is_zero(&c)) - { + if(!BN_is_zero(&c)) { fprintf(stderr,"Subtract test failed!\n"); - return 0; - } + rc = 0; + break; } + } BN_free(&a); BN_free(&b); BN_free(&c); - return(1); - } + return(rc); +} -int test_div(BIO *bp, BN_CTX *ctx) - { +int +test_div(BIO *bp, BN_CTX *ctx) +{ BIGNUM a,b,c,d,e; int i; + int rc = 1; BN_init(&a); BN_init(&b); @@ -419,86 +415,82 @@ int test_div(BIO *bp, BN_CTX *ctx) BN_init(&d); BN_init(&e); - for (i=0; i<num0+num1; i++) - { - if (i < num1) - { + for (i=0; i<num0+num1; i++) { + if (i < num1) { BN_bntest_rand(&a,400,0,0); BN_copy(&b,&a); BN_lshift(&a,&a,i); BN_add_word(&a,i); - } - else + } else BN_bntest_rand(&b,50+3*(i-num1),0,0); a.neg=rand_neg(); b.neg=rand_neg(); BN_div(&d,&c,&a,&b,ctx); - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,&a); BIO_puts(bp," / "); BN_print(bp,&b); BIO_puts(bp," - "); - } + } BN_print(bp,&d); BIO_puts(bp,"\n"); - if (!results) - { + if (!results) { BN_print(bp,&a); BIO_puts(bp," % "); BN_print(bp,&b); BIO_puts(bp," - "); - } + } BN_print(bp,&c); BIO_puts(bp,"\n"); - } + } BN_mul(&e,&d,&b,ctx); BN_add(&d,&e,&c); BN_sub(&d,&d,&a); - if(!BN_is_zero(&d)) - { + if(!BN_is_zero(&d)) { fprintf(stderr,"Division test failed!\n"); - return 0; - } + rc = 0; + break; } + } BN_free(&a); BN_free(&b); BN_free(&c); BN_free(&d); BN_free(&e); - return(1); - } + return(rc); +} -static void print_word(BIO *bp,BN_ULONG w) - { +static void +print_word(BIO *bp,BN_ULONG w) +{ #ifdef SIXTY_FOUR_BIT - if (sizeof(w) > sizeof(unsigned long)) - { - unsigned long h=(unsigned long)(w>>32), - l=(unsigned long)(w); + if (sizeof(w) > sizeof(unsigned long)) { + unsigned long h=(unsigned long)(w>>32), l=(unsigned long)(w); - if (h) BIO_printf(bp,"%lX%08lX",h,l); - else BIO_printf(bp,"%lX",l); + if (h) + BIO_printf(bp,"%lX%08lX",h,l); + else + BIO_printf(bp,"%lX",l); return; - } + } #endif BIO_printf(bp,BN_HEX_FMT1,w); - } +} -int test_div_word(BIO *bp) - { +int +test_div_word(BIO *bp) +{ BIGNUM a,b; BN_ULONG r,s; int i; + int rc = 1; BN_init(&a); BN_init(&b); - for (i=0; i<num0; i++) - { + for (i=0; i<num0; i++) { do { BN_bntest_rand(&a,512,-1,0); BN_bntest_rand(&b,BN_BITS2,-1,0); @@ -508,47 +500,46 @@ int test_div_word(BIO *bp) BN_copy(&b, &a); r = BN_div_word(&b, s); - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,&a); BIO_puts(bp," / "); print_word(bp,s); BIO_puts(bp," - "); - } + } BN_print(bp,&b); BIO_puts(bp,"\n"); - if (!results) - { + if (!results) { BN_print(bp,&a); BIO_puts(bp," % "); print_word(bp,s); BIO_puts(bp," - "); - } + } print_word(bp,r); BIO_puts(bp,"\n"); - } + } BN_mul_word(&b,s); BN_add_word(&b,r); BN_sub(&b,&a,&b); - if(!BN_is_zero(&b)) - { + if(!BN_is_zero(&b)) { fprintf(stderr,"Division (word) test failed!\n"); - return 0; - } + rc = 0; + break; } + } BN_free(&a); BN_free(&b); - return(1); - } + return(rc); +} -int test_div_recp(BIO *bp, BN_CTX *ctx) - { +int +test_div_recp(BIO *bp, BN_CTX *ctx) +{ BIGNUM a,b,c,d,e; BN_RECP_CTX recp; int i; + int rc = 1; BN_RECP_CTX_init(&recp); BN_init(&a); @@ -557,70 +548,66 @@ int test_div_recp(BIO *bp, BN_CTX *ctx) BN_init(&d); BN_init(&e); - for (i=0; i<num0+num1; i++) - { - if (i < num1) - { + for (i=0; i<num0+num1; i++) { + if (i < num1) { BN_bntest_rand(&a,400,0,0); BN_copy(&b,&a); BN_lshift(&a,&a,i); BN_add_word(&a,i); - } - else + } else BN_bntest_rand(&b,50+3*(i-num1),0,0); a.neg=rand_neg(); b.neg=rand_neg(); BN_RECP_CTX_set(&recp,&b,ctx); BN_div_recp(&d,&c,&a,&recp,ctx); - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,&a); BIO_puts(bp," / "); BN_print(bp,&b); BIO_puts(bp," - "); - } + } BN_print(bp,&d); BIO_puts(bp,"\n"); - if (!results) - { + if (!results) { BN_print(bp,&a); BIO_puts(bp," % "); BN_print(bp,&b); BIO_puts(bp," - "); - } + } BN_print(bp,&c); BIO_puts(bp,"\n"); - } + } BN_mul(&e,&d,&b,ctx); BN_add(&d,&e,&c); BN_sub(&d,&d,&a); - if(!BN_is_zero(&d)) - { + if(!BN_is_zero(&d)) { fprintf(stderr,"Reciprocal division test failed!\n"); fprintf(stderr,"a="); BN_print_fp(stderr,&a); fprintf(stderr,"\nb="); BN_print_fp(stderr,&b); fprintf(stderr,"\n"); - return 0; - } + rc = 0; + break; } + } BN_free(&a); BN_free(&b); BN_free(&c); BN_free(&d); BN_free(&e); BN_RECP_CTX_free(&recp); - return(1); - } + return(rc); +} -int test_mul(BIO *bp) - { +int +test_mul(BIO *bp) +{ BIGNUM a,b,c,d,e; int i; + int rc = 1; BN_CTX *ctx; ctx = BN_CTX_new(); @@ -632,96 +619,96 @@ int test_mul(BIO *bp) BN_init(&d); BN_init(&e); - for (i=0; i<num0+num1; i++) - { - if (i <= num1) - { + for (i=0; i<num0+num1; i++) { + if (i <= num1) { BN_bntest_rand(&a,100,0,0); BN_bntest_rand(&b,100,0,0); - } - else + } else BN_bntest_rand(&b,i-num1,0,0); a.neg=rand_neg(); b.neg=rand_neg(); BN_mul(&c,&a,&b,ctx); - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,&a); BIO_puts(bp," * "); BN_print(bp,&b); BIO_puts(bp," - "); - } + } BN_print(bp,&c); BIO_puts(bp,"\n"); - } + } BN_div(&d,&e,&c,&a,ctx); BN_sub(&d,&d,&b); - if(!BN_is_zero(&d) || !BN_is_zero(&e)) - { + if(!BN_is_zero(&d) || !BN_is_zero(&e)) { fprintf(stderr,"Multiplication test failed!\n"); - return 0; - } + rc = 0; + break; } + } BN_free(&a); BN_free(&b); BN_free(&c); BN_free(&d); BN_free(&e); BN_CTX_free(ctx); - return(1); - } + return(rc); +} -int test_sqr(BIO *bp, BN_CTX *ctx) - { +int +test_sqr(BIO *bp, BN_CTX *ctx) +{ BIGNUM a,c,d,e; int i; + int rc = 1; BN_init(&a); BN_init(&c); BN_init(&d); BN_init(&e); - for (i=0; i<num0; i++) - { + for (i=0; i<num0; i++) { BN_bntest_rand(&a,40+i*10,0,0); a.neg=rand_neg(); BN_sqr(&c,&a,ctx); - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,&a); BIO_puts(bp," * "); BN_print(bp,&a); BIO_puts(bp," - "); - } + } BN_print(bp,&c); BIO_puts(bp,"\n"); - } + } BN_div(&d,&e,&c,&a,ctx); BN_sub(&d,&d,&a); - if(!BN_is_zero(&d) || !BN_is_zero(&e)) - { + if(!BN_is_zero(&d) || !BN_is_zero(&e)) { fprintf(stderr,"Square test failed!\n"); - return 0; - } + rc = 0; + break; } + } BN_free(&a); BN_free(&c); BN_free(&d); BN_free(&e); - return(1); - } + return(rc); +} -int test_mont(BIO *bp, BN_CTX *ctx) - { +int +test_mont(BIO *bp, BN_CTX *ctx) +{ BIGNUM a,b,c,d,A,B; BIGNUM n; int i; + int rc = 1; BN_MONT_CTX *mont; + mont=BN_MONT_CTX_new(); + if (mont == NULL) + return 0; + BN_init(&a); BN_init(&b); BN_init(&c); @@ -730,14 +717,9 @@ int test_mont(BIO *bp, BN_CTX *ctx) BN_init(&B); BN_init(&n); - mont=BN_MONT_CTX_new(); - if (mont == NULL) - return 0; - BN_bntest_rand(&a,100,0,0); /**/ BN_bntest_rand(&b,100,0,0); /**/ - for (i=0; i<num2; i++) - { + for (i=0; i<num2; i++) { int bits = (200*(i+1))/num2; if (bits == 0) @@ -753,28 +735,26 @@ int test_mont(BIO *bp, BN_CTX *ctx) BN_mod_mul_montgomery(&c,&A,&B,mont,ctx);/**/ BN_from_montgomery(&A,&c,mont,ctx);/**/ - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,&a); BIO_puts(bp," * "); BN_print(bp,&b); BIO_puts(bp," % "); BN_print(bp,&(mont->N)); BIO_puts(bp," - "); - } + } BN_print(bp,&A); BIO_puts(bp,"\n"); - } + } BN_mod_mul(&d,&a,&b,&n,ctx); BN_sub(&d,&d,&A); - if(!BN_is_zero(&d)) - { + if(!BN_is_zero(&d)) { fprintf(stderr,"Montgomery multiplication test failed!\n"); - return 0; - } + rc = 0; + break; } + } BN_MONT_CTX_free(mont); BN_free(&a); BN_free(&b); @@ -783,13 +763,15 @@ int test_mont(BIO *bp, BN_CTX *ctx) BN_free(&A); BN_free(&B); BN_free(&n); - return(1); - } + return(rc); +} -int test_mod(BIO *bp, BN_CTX *ctx) - { +int +test_mod(BIO *bp, BN_CTX *ctx) +{ BIGNUM *a,*b,*c,*d,*e; int i; + int rc = 1; a=BN_new(); b=BN_new(); @@ -798,44 +780,43 @@ int test_mod(BIO *bp, BN_CTX *ctx) e=BN_new(); BN_bntest_rand(a,1024,0,0); /**/ - for (i=0; i<num0; i++) - { + for (i=0; i<num0; i++) { BN_bntest_rand(b,450+i*10,0,0); /**/ a->neg=rand_neg(); b->neg=rand_neg(); BN_mod(c,a,b,ctx);/**/ - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,a); BIO_puts(bp," % "); BN_print(bp,b); BIO_puts(bp," - "); - } + } BN_print(bp,c); BIO_puts(bp,"\n"); - } + } BN_div(d,e,a,b,ctx); BN_sub(e,e,c); - if(!BN_is_zero(e)) - { + if(!BN_is_zero(e)) { fprintf(stderr,"Modulo test failed!\n"); - return 0; - } + rc = 0; + break; } + } BN_free(a); BN_free(b); BN_free(c); BN_free(d); BN_free(e); - return(1); - } + return(rc); +} -int test_mod_mul(BIO *bp, BN_CTX *ctx) - { +int +test_mod_mul(BIO *bp, BN_CTX *ctx) +{ BIGNUM *a,*b,*c,*d,*e; int i,j; + int rc = 1; a=BN_new(); b=BN_new(); @@ -844,69 +825,67 @@ int test_mod_mul(BIO *bp, BN_CTX *ctx) e=BN_new(); for (j=0; j<3; j++) { - BN_bntest_rand(c,1024,0,0); /**/ - for (i=0; i<num0; i++) - { - BN_bntest_rand(a,475+i*10,0,0); /**/ - BN_bntest_rand(b,425+i*11,0,0); /**/ - a->neg=rand_neg(); - b->neg=rand_neg(); - if (!BN_mod_mul(e,a,b,c,ctx)) - { - unsigned long l; - - while ((l=ERR_get_error())) - fprintf(stderr,"ERROR:%s\n", - ERR_error_string(l,NULL)); - exit(1); + BN_bntest_rand(c,1024,0,0); /**/ + for (i=0; i<num0; i++) { + BN_bntest_rand(a,475+i*10,0,0); /**/ + BN_bntest_rand(b,425+i*11,0,0); /**/ + a->neg=rand_neg(); + b->neg=rand_neg(); + if (!BN_mod_mul(e,a,b,c,ctx)) { + unsigned long l; + + while ((l=ERR_get_error())) + fprintf(stderr,"ERROR:%s\n", + ERR_error_string(l,NULL)); + exit(1); } - if (bp != NULL) - { - if (!results) - { - BN_print(bp,a); - BIO_puts(bp," * "); - BN_print(bp,b); - BIO_puts(bp," % "); - BN_print(bp,c); - if ((a->neg ^ b->neg) && !BN_is_zero(e)) - { - /* If (a*b) % c is negative, c must be added - * in order to obtain the normalized remainder - * (new with OpenSSL 0.9.7, previous versions of - * BN_mod_mul could generate negative results) - */ - BIO_puts(bp," + "); + if (bp != NULL) { + if (!results) { + BN_print(bp,a); + BIO_puts(bp," * "); + BN_print(bp,b); + BIO_puts(bp," % "); BN_print(bp,c); + if ((a->neg ^ b->neg) && !BN_is_zero(e)) { + /* If (a*b) % c is negative, c must be added + * in order to obtain the normalized remainder + * (new with OpenSSL 0.9.7, previous versions of + * BN_mod_mul could generate negative results) + */ + BIO_puts(bp," + "); + BN_print(bp,c); } - BIO_puts(bp," - "); + BIO_puts(bp," - "); } - BN_print(bp,e); - BIO_puts(bp,"\n"); + BN_print(bp,e); + BIO_puts(bp,"\n"); + } + BN_mul(d,a,b,ctx); + BN_sub(d,d,e); + BN_div(a,b,d,c,ctx); + if(!BN_is_zero(b)) { + fprintf(stderr,"Modulo multiply test failed!\n"); + ERR_print_errors_fp(stderr); + rc = 0; + goto done; } - BN_mul(d,a,b,ctx); - BN_sub(d,d,e); - BN_div(a,b,d,c,ctx); - if(!BN_is_zero(b)) - { - fprintf(stderr,"Modulo multiply test failed!\n"); - ERR_print_errors_fp(stderr); - return 0; - } } } +done: BN_free(a); BN_free(b); BN_free(c); BN_free(d); BN_free(e); - return(1); - } + return(rc); +} -int test_mod_exp(BIO *bp, BN_CTX *ctx) - { +int +test_mod_exp(BIO *bp, BN_CTX *ctx) +{ BIGNUM *a,*b,*c,*d,*e; int i; + int rc = 1; a=BN_new(); b=BN_new(); @@ -915,49 +894,50 @@ int test_mod_exp(BIO *bp, BN_CTX *ctx) e=BN_new(); BN_bntest_rand(c,30,0,1); /* must be odd for montgomery */ - for (i=0; i<num2; i++) - { + for (i=0; i<num2; i++) { BN_bntest_rand(a,20+i*5,0,0); /**/ BN_bntest_rand(b,2+i,0,0); /**/ - if (!BN_mod_exp(d,a,b,c,ctx)) - return(0); + if (!BN_mod_exp(d,a,b,c,ctx)) { + rc = 0; + break; + } - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,a); BIO_puts(bp," ^ "); BN_print(bp,b); BIO_puts(bp," % "); BN_print(bp,c); BIO_puts(bp," - "); - } + } BN_print(bp,d); BIO_puts(bp,"\n"); - } + } BN_exp(e,a,b,ctx); BN_sub(e,e,d); BN_div(a,b,e,c,ctx); - if(!BN_is_zero(b)) - { + if(!BN_is_zero(b)) { fprintf(stderr,"Modulo exponentiation test failed!\n"); - return 0; - } + rc = 0; + break; } + } BN_free(a); BN_free(b); BN_free(c); BN_free(d); BN_free(e); - return(1); - } + return(rc); +} -int test_mod_exp_mont_consttime(BIO *bp, BN_CTX *ctx) - { +int +test_mod_exp_mont_consttime(BIO *bp, BN_CTX *ctx) +{ BIGNUM *a,*b,*c,*d,*e; int i; + int rc = 1; a=BN_new(); b=BN_new(); @@ -966,49 +946,50 @@ int test_mod_exp_mont_consttime(BIO *bp, BN_CTX *ctx) e=BN_new(); BN_bntest_rand(c,30,0,1); /* must be odd for montgomery */ - for (i=0; i<num2; i++) - { + for (i=0; i<num2; i++) { BN_bntest_rand(a,20+i*5,0,0); /**/ BN_bntest_rand(b,2+i,0,0); /**/ - if (!BN_mod_exp_mont_consttime(d,a,b,c,ctx,NULL)) - return(00); + if (!BN_mod_exp_mont_consttime(d,a,b,c,ctx,NULL)) { + rc = 0; + break; + } - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,a); BIO_puts(bp," ^ "); BN_print(bp,b); BIO_puts(bp," % "); BN_print(bp,c); BIO_puts(bp," - "); - } + } BN_print(bp,d); BIO_puts(bp,"\n"); - } + } BN_exp(e,a,b,ctx); BN_sub(e,e,d); BN_div(a,b,e,c,ctx); - if(!BN_is_zero(b)) - { + if(!BN_is_zero(b)) { fprintf(stderr,"Modulo exponentiation test failed!\n"); - return 0; - } + rc = 0; + break; } + } BN_free(a); BN_free(b); BN_free(c); BN_free(d); BN_free(e); - return(1); - } + return(rc); +} -int test_exp(BIO *bp, BN_CTX *ctx) - { +int +test_exp(BIO *bp, BN_CTX *ctx) +{ BIGNUM *a,*b,*d,*e,*one; int i; + int rc = 1; a=BN_new(); b=BN_new(); @@ -1017,46 +998,47 @@ int test_exp(BIO *bp, BN_CTX *ctx) one=BN_new(); BN_one(one); - for (i=0; i<num2; i++) - { + for (i=0; i<num2; i++) { BN_bntest_rand(a,20+i*5,0,0); /**/ BN_bntest_rand(b,2+i,0,0); /**/ - if (BN_exp(d,a,b,ctx) <= 0) - return(0); + if (BN_exp(d,a,b,ctx) <= 0) { + rc = 0; + break; + } - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,a); BIO_puts(bp," ^ "); BN_print(bp,b); BIO_puts(bp," - "); - } + } BN_print(bp,d); BIO_puts(bp,"\n"); - } + } BN_one(e); for( ; !BN_is_zero(b) ; BN_sub(b,b,one)) BN_mul(e,e,a,ctx); BN_sub(e,e,d); - if(!BN_is_zero(e)) - { + if(!BN_is_zero(e)) { fprintf(stderr,"Exponentiation test failed!\n"); - return 0; - } + rc = 0; + break; } + } BN_free(a); BN_free(b); BN_free(d); BN_free(e); BN_free(one); - return(1); - } + return(rc); +} + #ifndef OPENSSL_NO_EC2M -int test_gf2m_add(BIO *bp) - { +int +test_gf2m_add(BIO *bp) +{ BIGNUM a,b,c; int i, ret = 0; @@ -1064,51 +1046,47 @@ int test_gf2m_add(BIO *bp) BN_init(&b); BN_init(&c); - for (i=0; i<num0; i++) - { + for (i=0; i<num0; i++) { BN_rand(&a,512,0,0); BN_copy(&b, BN_value_one()); a.neg=rand_neg(); b.neg=rand_neg(); BN_GF2m_add(&c,&a,&b); #if 0 /* make test uses ouput in bc but bc can't handle GF(2^m) arithmetic */ - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,&a); BIO_puts(bp," ^ "); BN_print(bp,&b); BIO_puts(bp," = "); - } + } BN_print(bp,&c); BIO_puts(bp,"\n"); - } + } #endif /* Test that two added values have the correct parity. */ - if((BN_is_odd(&a) && BN_is_odd(&c)) || (!BN_is_odd(&a) && !BN_is_odd(&c))) - { + if((BN_is_odd(&a) && BN_is_odd(&c)) || (!BN_is_odd(&a) && !BN_is_odd(&c))) { fprintf(stderr,"GF(2^m) addition test (a) failed!\n"); goto err; - } + } BN_GF2m_add(&c,&c,&c); /* Test that c + c = 0. */ - if(!BN_is_zero(&c)) - { + if(!BN_is_zero(&c)) { fprintf(stderr,"GF(2^m) addition test (b) failed!\n"); goto err; - } } + } ret = 1; - err: +err: BN_free(&a); BN_free(&b); BN_free(&c); return ret; - } +} -int test_gf2m_mod(BIO *bp) - { +int +test_gf2m_mod(BIO *bp) +{ BIGNUM *a,*b[2],*c,*d,*e; int i, j, ret = 0; int p0[] = {163,7,6,3,0,-1}; @@ -1124,38 +1102,33 @@ int test_gf2m_mod(BIO *bp) BN_GF2m_arr2poly(p0, b[0]); BN_GF2m_arr2poly(p1, b[1]); - for (i=0; i<num0; i++) - { + for (i=0; i<num0; i++) { BN_bntest_rand(a, 1024, 0, 0); - for (j=0; j < 2; j++) - { + for (j=0; j < 2; j++) { BN_GF2m_mod(c, a, b[j]); #if 0 /* make test uses ouput in bc but bc can't handle GF(2^m) arithmetic */ - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,a); BIO_puts(bp," % "); BN_print(bp,b[j]); BIO_puts(bp," - "); BN_print(bp,c); BIO_puts(bp,"\n"); - } } + } #endif BN_GF2m_add(d, a, c); BN_GF2m_mod(e, d, b[j]); /* Test that a + (a mod p) mod p == 0. */ - if(!BN_is_zero(e)) - { + if(!BN_is_zero(e)) { fprintf(stderr,"GF(2^m) modulo test failed!\n"); goto err; - } } } + } ret = 1; - err: +err: BN_free(a); BN_free(b[0]); BN_free(b[1]); @@ -1163,10 +1136,11 @@ int test_gf2m_mod(BIO *bp) BN_free(d); BN_free(e); return ret; - } +} -int test_gf2m_mod_mul(BIO *bp,BN_CTX *ctx) - { +int +test_gf2m_mod_mul(BIO *bp,BN_CTX *ctx) +{ BIGNUM *a,*b[2],*c,*d,*e,*f,*g,*h; int i, j, ret = 0; int p0[] = {163,7,6,3,0,-1}; @@ -1185,19 +1159,15 @@ int test_gf2m_mod_mul(BIO *bp,BN_CTX *ctx) BN_GF2m_arr2poly(p0, b[0]); BN_GF2m_arr2poly(p1, b[1]); - for (i=0; i<num0; i++) - { + for (i=0; i<num0; i++) { BN_bntest_rand(a, 1024, 0, 0); BN_bntest_rand(c, 1024, 0, 0); BN_bntest_rand(d, 1024, 0, 0); - for (j=0; j < 2; j++) - { + for (j=0; j < 2; j++) { BN_GF2m_mod_mul(e, a, c, b[j], ctx); #if 0 /* make test uses ouput in bc but bc can't handle GF(2^m) arithmetic */ - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,a); BIO_puts(bp," * "); BN_print(bp,c); @@ -1206,8 +1176,8 @@ int test_gf2m_mod_mul(BIO *bp,BN_CTX *ctx) BIO_puts(bp," - "); BN_print(bp,e); BIO_puts(bp,"\n"); - } } + } #endif BN_GF2m_add(f, a, d); BN_GF2m_mod_mul(g, f, c, b[j], ctx); @@ -1215,15 +1185,14 @@ int test_gf2m_mod_mul(BIO *bp,BN_CTX *ctx) BN_GF2m_add(f, e, g); BN_GF2m_add(f, f, h); /* Test that (a+d)*c = a*c + d*c. */ - if(!BN_is_zero(f)) - { + if(!BN_is_zero(f)) { fprintf(stderr,"GF(2^m) modular multiplication test failed!\n"); goto err; - } } } + } ret = 1; - err: +err: BN_free(a); BN_free(b[0]); BN_free(b[1]); @@ -1234,10 +1203,11 @@ int test_gf2m_mod_mul(BIO *bp,BN_CTX *ctx) BN_free(g); BN_free(h); return ret; - } +} -int test_gf2m_mod_sqr(BIO *bp,BN_CTX *ctx) - { +int +test_gf2m_mod_sqr(BIO *bp,BN_CTX *ctx) +{ BIGNUM *a,*b[2],*c,*d; int i, j, ret = 0; int p0[] = {163,7,6,3,0,-1}; @@ -1252,19 +1222,15 @@ int test_gf2m_mod_sqr(BIO *bp,BN_CTX *ctx) BN_GF2m_arr2poly(p0, b[0]); BN_GF2m_arr2poly(p1, b[1]); - for (i=0; i<num0; i++) - { + for (i=0; i<num0; i++) { BN_bntest_rand(a, 1024, 0, 0); - for (j=0; j < 2; j++) - { + for (j=0; j < 2; j++) { BN_GF2m_mod_sqr(c, a, b[j], ctx); BN_copy(d, a); BN_GF2m_mod_mul(d, a, d, b[j], ctx); #if 0 /* make test uses ouput in bc but bc can't handle GF(2^m) arithmetic */ - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,a); BIO_puts(bp," ^ 2 % "); BN_print(bp,b[j]); @@ -1273,30 +1239,30 @@ int test_gf2m_mod_sqr(BIO *bp,BN_CTX *ctx) BIO_puts(bp,"; a * a = "); BN_print(bp,d); BIO_puts(bp,"\n"); - } } + } #endif BN_GF2m_add(d, c, d); /* Test that a*a = a^2. */ - if(!BN_is_zero(d)) - { + if(!BN_is_zero(d)) { fprintf(stderr,"GF(2^m) modular squaring test failed!\n"); goto err; - } } } + } ret = 1; - err: +err: BN_free(a); BN_free(b[0]); BN_free(b[1]); BN_free(c); BN_free(d); return ret; - } +} -int test_gf2m_mod_inv(BIO *bp,BN_CTX *ctx) - { +int +test_gf2m_mod_inv(BIO *bp,BN_CTX *ctx) +{ BIGNUM *a,*b[2],*c,*d; int i, j, ret = 0; int p0[] = {163,7,6,3,0,-1}; @@ -1311,47 +1277,43 @@ int test_gf2m_mod_inv(BIO *bp,BN_CTX *ctx) BN_GF2m_arr2poly(p0, b[0]); BN_GF2m_arr2poly(p1, b[1]); - for (i=0; i<num0; i++) - { + for (i=0; i<num0; i++) { BN_bntest_rand(a, 512, 0, 0); - for (j=0; j < 2; j++) - { + for (j=0; j < 2; j++) { BN_GF2m_mod_inv(c, a, b[j], ctx); BN_GF2m_mod_mul(d, a, c, b[j], ctx); #if 0 /* make test uses ouput in bc but bc can't handle GF(2^m) arithmetic */ - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,a); BIO_puts(bp, " * "); BN_print(bp,c); BIO_puts(bp," - 1 % "); BN_print(bp,b[j]); BIO_puts(bp,"\n"); - } } + } #endif /* Test that ((1/a)*a) = 1. */ - if(!BN_is_one(d)) - { + if(!BN_is_one(d)) { fprintf(stderr,"GF(2^m) modular inversion test failed!\n"); goto err; - } } } + } ret = 1; - err: +err: BN_free(a); BN_free(b[0]); BN_free(b[1]); BN_free(c); BN_free(d); return ret; - } +} -int test_gf2m_mod_div(BIO *bp,BN_CTX *ctx) - { +int +test_gf2m_mod_div(BIO *bp,BN_CTX *ctx) +{ BIGNUM *a,*b[2],*c,*d,*e,*f; int i, j, ret = 0; int p0[] = {163,7,6,3,0,-1}; @@ -1368,20 +1330,16 @@ int test_gf2m_mod_div(BIO *bp,BN_CTX *ctx) BN_GF2m_arr2poly(p0, b[0]); BN_GF2m_arr2poly(p1, b[1]); - for (i=0; i<num0; i++) - { + for (i=0; i<num0; i++) { BN_bntest_rand(a, 512, 0, 0); BN_bntest_rand(c, 512, 0, 0); - for (j=0; j < 2; j++) - { + for (j=0; j < 2; j++) { BN_GF2m_mod_div(d, a, c, b[j], ctx); BN_GF2m_mod_mul(e, d, c, b[j], ctx); BN_GF2m_mod_div(f, a, e, b[j], ctx); #if 0 /* make test uses ouput in bc but bc can't handle GF(2^m) arithmetic */ - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,a); BIO_puts(bp, " = "); BN_print(bp,c); @@ -1390,19 +1348,18 @@ int test_gf2m_mod_div(BIO *bp,BN_CTX *ctx) BIO_puts(bp, " % "); BN_print(bp,b[j]); BIO_puts(bp,"\n"); - } } + } #endif /* Test that ((a/c)*c)/a = 1. */ - if(!BN_is_one(f)) - { + if(!BN_is_one(f)) { fprintf(stderr,"GF(2^m) modular division test failed!\n"); goto err; - } } } + } ret = 1; - err: +err: BN_free(a); BN_free(b[0]); BN_free(b[1]); @@ -1411,10 +1368,11 @@ int test_gf2m_mod_div(BIO *bp,BN_CTX *ctx) BN_free(e); BN_free(f); return ret; - } +} -int test_gf2m_mod_exp(BIO *bp,BN_CTX *ctx) - { +int +test_gf2m_mod_exp(BIO *bp,BN_CTX *ctx) +{ BIGNUM *a,*b[2],*c,*d,*e,*f; int i, j, ret = 0; int p0[] = {163,7,6,3,0,-1}; @@ -1431,23 +1389,19 @@ int test_gf2m_mod_exp(BIO *bp,BN_CTX *ctx) BN_GF2m_arr2poly(p0, b[0]); BN_GF2m_arr2poly(p1, b[1]); - for (i=0; i<num0; i++) - { + for (i=0; i<num0; i++) { BN_bntest_rand(a, 512, 0, 0); BN_bntest_rand(c, 512, 0, 0); BN_bntest_rand(d, 512, 0, 0); - for (j=0; j < 2; j++) - { + for (j=0; j < 2; j++) { BN_GF2m_mod_exp(e, a, c, b[j], ctx); BN_GF2m_mod_exp(f, a, d, b[j], ctx); BN_GF2m_mod_mul(e, e, f, b[j], ctx); BN_add(f, c, d); BN_GF2m_mod_exp(f, a, f, b[j], ctx); #if 0 /* make test uses ouput in bc but bc can't handle GF(2^m) arithmetic */ - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,a); BIO_puts(bp, " ^ ("); BN_print(bp,c); @@ -1460,20 +1414,19 @@ int test_gf2m_mod_exp(BIO *bp,BN_CTX *ctx) BIO_puts(bp, " % "); BN_print(bp,b[j]); BIO_puts(bp,"\n"); - } } + } #endif BN_GF2m_add(f, e, f); /* Test that a^(c+d)=a^c*a^d. */ - if(!BN_is_zero(f)) - { + if(!BN_is_zero(f)) { fprintf(stderr,"GF(2^m) modular exponentiation test failed!\n"); goto err; - } } } + } ret = 1; - err: +err: BN_free(a); BN_free(b[0]); BN_free(b[1]); @@ -1482,10 +1435,11 @@ int test_gf2m_mod_exp(BIO *bp,BN_CTX *ctx) BN_free(e); BN_free(f); return ret; - } +} -int test_gf2m_mod_sqrt(BIO *bp,BN_CTX *ctx) - { +int +test_gf2m_mod_sqrt(BIO *bp,BN_CTX *ctx) +{ BIGNUM *a,*b[2],*c,*d,*e,*f; int i, j, ret = 0; int p0[] = {163,7,6,3,0,-1}; @@ -1502,37 +1456,32 @@ int test_gf2m_mod_sqrt(BIO *bp,BN_CTX *ctx) BN_GF2m_arr2poly(p0, b[0]); BN_GF2m_arr2poly(p1, b[1]); - for (i=0; i<num0; i++) - { + for (i=0; i<num0; i++) { BN_bntest_rand(a, 512, 0, 0); - for (j=0; j < 2; j++) - { + for (j=0; j < 2; j++) { BN_GF2m_mod(c, a, b[j]); BN_GF2m_mod_sqrt(d, a, b[j], ctx); BN_GF2m_mod_sqr(e, d, b[j], ctx); #if 0 /* make test uses ouput in bc but bc can't handle GF(2^m) arithmetic */ - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,d); BIO_puts(bp, " ^ 2 - "); BN_print(bp,a); BIO_puts(bp,"\n"); - } } + } #endif BN_GF2m_add(f, c, e); /* Test that d^2 = a, where d = sqrt(a). */ - if(!BN_is_zero(f)) - { + if(!BN_is_zero(f)) { fprintf(stderr,"GF(2^m) modular square root test failed!\n"); goto err; - } } } + } ret = 1; - err: +err: BN_free(a); BN_free(b[0]); BN_free(b[1]); @@ -1541,10 +1490,11 @@ int test_gf2m_mod_sqrt(BIO *bp,BN_CTX *ctx) BN_free(e); BN_free(f); return ret; - } +} -int test_gf2m_mod_solve_quad(BIO *bp,BN_CTX *ctx) - { +int +test_gf2m_mod_solve_quad(BIO *bp,BN_CTX *ctx) +{ BIGNUM *a,*b[2],*c,*d,*e; int i, j, s = 0, t, ret = 0; int p0[] = {163,7,6,3,0,-1}; @@ -1560,67 +1510,55 @@ int test_gf2m_mod_solve_quad(BIO *bp,BN_CTX *ctx) BN_GF2m_arr2poly(p0, b[0]); BN_GF2m_arr2poly(p1, b[1]); - for (i=0; i<num0; i++) - { + for (i=0; i<num0; i++) { BN_bntest_rand(a, 512, 0, 0); - for (j=0; j < 2; j++) - { + for (j=0; j < 2; j++) { t = BN_GF2m_mod_solve_quad(c, a, b[j], ctx); - if (t) - { + if (t) { s++; BN_GF2m_mod_sqr(d, c, b[j], ctx); BN_GF2m_add(d, c, d); BN_GF2m_mod(e, a, b[j]); #if 0 /* make test uses ouput in bc but bc can't handle GF(2^m) arithmetic */ - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,c); BIO_puts(bp, " is root of z^2 + z = "); BN_print(bp,a); BIO_puts(bp, " % "); BN_print(bp,b[j]); BIO_puts(bp, "\n"); - } } + } #endif BN_GF2m_add(e, e, d); /* Test that solution of quadratic c satisfies c^2 + c = a. */ - if(!BN_is_zero(e)) - { + if(!BN_is_zero(e)) { fprintf(stderr,"GF(2^m) modular solve quadratic test failed!\n"); goto err; - } - } - else - { + } else { #if 0 /* make test uses ouput in bc but bc can't handle GF(2^m) arithmetic */ - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BIO_puts(bp, "There are no roots of z^2 + z = "); BN_print(bp,a); BIO_puts(bp, " % "); BN_print(bp,b[j]); BIO_puts(bp, "\n"); - } } -#endif } +#endif } } - if (s == 0) - { + } + if (s == 0) { fprintf(stderr,"All %i tests of GF(2^m) modular solve quadratic resulted in no roots;\n", num0); fprintf(stderr,"this is very unlikely and probably indicates an error.\n"); goto err; - } + } ret = 1; - err: +err: BN_free(a); BN_free(b[0]); BN_free(b[1]); @@ -1628,10 +1566,12 @@ int test_gf2m_mod_solve_quad(BIO *bp,BN_CTX *ctx) BN_free(d); BN_free(e); return ret; - } +} #endif -static int genprime_cb(int p, int n, BN_GENCB *arg) - { + +static int +genprime_cb(int p, int n, BN_GENCB *arg) +{ char c='*'; if (p == 0) c='.'; @@ -1641,10 +1581,11 @@ static int genprime_cb(int p, int n, BN_GENCB *arg) putc(c, stderr); fflush(stderr); return 1; - } +} -int test_kron(BIO *bp, BN_CTX *ctx) - { +int +test_kron(BIO *bp, BN_CTX *ctx) +{ BN_GENCB cb; BIGNUM *a,*b,*r,*t; int i; @@ -1672,8 +1613,7 @@ int test_kron(BIO *bp, BN_CTX *ctx) b->neg = rand_neg(); putc('\n', stderr); - for (i = 0; i < num0; i++) - { + for (i = 0; i < num0; i++) { if (!BN_bntest_rand(a, 512, 0, 0)) goto err; a->neg = rand_neg(); @@ -1692,16 +1632,14 @@ int test_kron(BIO *bp, BN_CTX *ctx) legendre = 1; else if (BN_is_zero(r)) legendre = 0; - else - { + else { if (!BN_add_word(r, 1)) goto err; - if (0 != BN_ucmp(r, b)) - { + if (0 != BN_ucmp(r, b)) { fprintf(stderr, "Legendre symbol computation failed\n"); goto err; - } - legendre = -1; } + legendre = -1; + } kronecker = BN_kronecker(a, b, ctx); if (kronecker < -1) goto err; @@ -1709,33 +1647,33 @@ int test_kron(BIO *bp, BN_CTX *ctx) if (a->neg && b->neg) kronecker = -kronecker; - if (legendre != kronecker) - { + if (legendre != kronecker) { fprintf(stderr, "legendre != kronecker; a = "); BN_print_fp(stderr, a); fprintf(stderr, ", b = "); BN_print_fp(stderr, b); fprintf(stderr, "\n"); goto err; - } + } putc('.', stderr); fflush(stderr); - } + } putc('\n', stderr); fflush(stderr); ret = 1; - err: +err: if (a != NULL) BN_free(a); if (b != NULL) BN_free(b); if (r != NULL) BN_free(r); if (t != NULL) BN_free(t); return ret; - } +} -int test_sqrt(BIO *bp, BN_CTX *ctx) - { +int +test_sqrt(BIO *bp, BN_CTX *ctx) +{ BN_GENCB cb; BIGNUM *a,*p,*r; int i, j; @@ -1748,26 +1686,21 @@ int test_sqrt(BIO *bp, BN_CTX *ctx) BN_GENCB_set(&cb, genprime_cb, NULL); - for (i = 0; i < 16; i++) - { - if (i < 8) - { + for (i = 0; i < 16; i++) { + if (i < 8) { unsigned primes[8] = { 2, 3, 5, 7, 11, 13, 17, 19 }; if (!BN_set_word(p, primes[i])) goto err; - } - else - { + } else { if (!BN_set_word(a, 32)) goto err; if (!BN_set_word(r, 2*i + 1)) goto err; if (!BN_generate_prime_ex(p, 256, 0, a, r, &cb)) goto err; putc('\n', stderr); - } + } p->neg = rand_neg(); - for (j = 0; j < num2; j++) - { + for (j = 0; j < num2; j++) { /* construct 'a' such that it is a square modulo p, * but in general not a proper square and not reduced modulo p */ if (!BN_bntest_rand(r, 256, 0, 3)) goto err; @@ -1785,8 +1718,7 @@ int test_sqrt(BIO *bp, BN_CTX *ctx) if (!BN_nnmod(a, a, p, ctx)) goto err; - if (BN_cmp(a, r) != 0) - { + if (BN_cmp(a, r) != 0) { fprintf(stderr, "BN_mod_sqrt failed: a = "); BN_print_fp(stderr, a); fprintf(stderr, ", r = "); @@ -1795,27 +1727,29 @@ int test_sqrt(BIO *bp, BN_CTX *ctx) BN_print_fp(stderr, p); fprintf(stderr, "\n"); goto err; - } + } putc('.', stderr); fflush(stderr); - } + } putc('\n', stderr); fflush(stderr); - } + } ret = 1; - err: +err: if (a != NULL) BN_free(a); if (p != NULL) BN_free(p); if (r != NULL) BN_free(r); return ret; - } +} -int test_lshift(BIO *bp,BN_CTX *ctx,BIGNUM *a_) - { +int +test_lshift(BIO *bp,BN_CTX *ctx,BIGNUM *a_) +{ BIGNUM *a,*b,*c,*d; int i; + int rc = 1; b=BN_new(); c=BN_new(); @@ -1824,32 +1758,27 @@ int test_lshift(BIO *bp,BN_CTX *ctx,BIGNUM *a_) if(a_) a=a_; - else - { + else { a=BN_new(); BN_bntest_rand(a,200,0,0); /**/ a->neg=rand_neg(); - } - for (i=0; i<num0; i++) - { + } + for (i=0; i<num0; i++) { BN_lshift(b,a,i+1); BN_add(c,c,c); - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,a); BIO_puts(bp," * "); BN_print(bp,c); BIO_puts(bp," - "); - } + } BN_print(bp,b); BIO_puts(bp,"\n"); - } + } BN_mul(d,a,c,ctx); BN_sub(d,d,b); - if(!BN_is_zero(d)) - { + if(!BN_is_zero(d)) { fprintf(stderr,"Left shift test failed!\n"); fprintf(stderr,"a="); BN_print_fp(stderr,a); @@ -1860,20 +1789,23 @@ int test_lshift(BIO *bp,BN_CTX *ctx,BIGNUM *a_) fprintf(stderr,"\nd="); BN_print_fp(stderr,d); fprintf(stderr,"\n"); - return 0; - } + rc = 0; + break; } + } BN_free(a); BN_free(b); BN_free(c); BN_free(d); - return(1); - } + return(rc); +} -int test_lshift1(BIO *bp) - { +int +test_lshift1(BIO *bp) +{ BIGNUM *a,*b,*c; int i; + int rc = 1; a=BN_new(); b=BN_new(); @@ -1881,40 +1813,39 @@ int test_lshift1(BIO *bp) BN_bntest_rand(a,200,0,0); /**/ a->neg=rand_neg(); - for (i=0; i<num0; i++) - { + for (i=0; i<num0; i++) { BN_lshift1(b,a); - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,a); BIO_puts(bp," * 2"); BIO_puts(bp," - "); - } + } BN_print(bp,b); BIO_puts(bp,"\n"); - } + } BN_add(c,a,a); BN_sub(a,b,c); - if(!BN_is_zero(a)) - { + if(!BN_is_zero(a)) { fprintf(stderr,"Left shift one test failed!\n"); - return 0; - } + rc = 0; + break; + } BN_copy(a,b); - } + } BN_free(a); BN_free(b); BN_free(c); - return(1); - } + return(rc); +} -int test_rshift(BIO *bp,BN_CTX *ctx) - { +int +test_rshift(BIO *bp,BN_CTX *ctx) +{ BIGNUM *a,*b,*c,*d,*e; int i; + int rc = 1; a=BN_new(); b=BN_new(); @@ -1925,42 +1856,41 @@ int test_rshift(BIO *bp,BN_CTX *ctx) BN_bntest_rand(a,200,0,0); /**/ a->neg=rand_neg(); - for (i=0; i<num0; i++) - { + for (i=0; i<num0; i++) { BN_rshift(b,a,i+1); BN_add(c,c,c); - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,a); BIO_puts(bp," / "); BN_print(bp,c); BIO_puts(bp," - "); - } + } BN_print(bp,b); BIO_puts(bp,"\n"); - } + } BN_div(d,e,a,c,ctx); BN_sub(d,d,b); - if(!BN_is_zero(d)) - { + if(!BN_is_zero(d)) { fprintf(stderr,"Right shift test failed!\n"); - return 0; - } + rc = 0; + break; } + } BN_free(a); BN_free(b); BN_free(c); BN_free(d); BN_free(e); - return(1); - } + return(rc); +} -int test_rshift1(BIO *bp) - { +int +test_rshift1(BIO *bp) +{ BIGNUM *a,*b,*c; int i; + int rc = 1; a=BN_new(); b=BN_new(); @@ -1968,42 +1898,40 @@ int test_rshift1(BIO *bp) BN_bntest_rand(a,200,0,0); /**/ a->neg=rand_neg(); - for (i=0; i<num0; i++) - { + for (i=0; i<num0; i++) { BN_rshift1(b,a); - if (bp != NULL) - { - if (!results) - { + if (bp != NULL) { + if (!results) { BN_print(bp,a); BIO_puts(bp," / 2"); BIO_puts(bp," - "); - } + } BN_print(bp,b); BIO_puts(bp,"\n"); - } + } BN_sub(c,a,b); BN_sub(c,c,b); - if(!BN_is_zero(c) && !BN_abs_is_word(c, 1)) - { + if(!BN_is_zero(c) && !BN_abs_is_word(c, 1)) { fprintf(stderr,"Right shift one test failed!\n"); - return 0; - } - BN_copy(a,b); + rc = 0; + break; } + BN_copy(a,b); + } BN_free(a); BN_free(b); BN_free(c); - return(1); - } + return(rc); +} -int rand_neg(void) - { +int +rand_neg(void) +{ static unsigned int neg=0; static int sign[8]={0,0,0,1,1,0,1,1}; return(sign[(neg++)%8]); - } +} int test_mod_exp_sizes(BIO *bp, BN_CTX *ctx) |