Al Smith wrote: > > on linux 2.2[.9] with egcs-1.1.2 and libc.5.4.46, the bignum test fails. > with "./Configure no-asm linux-elf", test/bntest results in the attached > output, which ends with "Left shift test failed!" the next test (exptest) > appears to be caught in a loop and doesn't actually produce any output at > all. Gak! For future reference, the last few lines of a BN test will usually do! Anyway, I can't reproduce this ... could you apply this patch and try again? > C64F43042AEACA6E5836805BE8C99B045D4836C2FD16C964F0 * 2 - >18C9E860855D594DCB06D00B7D1933608BA906D85FA2D92C9E0 > Left shift test failed! Cheers, Ben. -- http://www.apache-ssl.org/ben.html "My grandfather once told me that there are two kinds of people: those who work and those who take the credit. He told me to try to be in the first group; there was less competition there." - Indira Gandhi
Index: crypto/bn/bntest.c =================================================================== RCS file: /e/openssl/cvs/openssl/crypto/bn/bntest.c,v retrieving revision 1.8 diff -u -r1.8 bntest.c --- crypto/bn/bntest.c 1999/05/21 11:16:17 1.8 +++ crypto/bn/bntest.c 1999/05/25 14:48:19 @@ -75,7 +75,7 @@ int test_add(BIO *bp); int test_sub(BIO *bp); int test_lshift1(BIO *bp); -int test_lshift(BIO *bp,BN_CTX *ctx); +int test_lshift(BIO *bp,BN_CTX *ctx,BIGNUM *a_); int test_rshift1(BIO *bp); int test_rshift(BIO *bp,BN_CTX *ctx); int test_div(BIO *bp,BN_CTX *ctx); @@ -95,6 +95,9 @@ #include "bss_file.c" #endif +static unsigned char lst1[]="\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"; + int main(int argc, char *argv[]) { BN_CTX *ctx; @@ -152,8 +155,13 @@ if (!test_lshift1(out)) goto err; fflush(stdout); + fprintf(stderr,"test BN_lshift (fixed)\n"); + if (!test_lshift(out,ctx,BN_bin2bn(lst1,sizeof(lst1)-1,NULL))) + goto err; + fflush(stdout); + fprintf(stderr,"test BN_lshift\n"); - if (!test_lshift(out,ctx)) goto err; + if (!test_lshift(out,ctx,NULL)) goto err; fflush(stdout); fprintf(stderr,"test BN_rshift1\n"); @@ -815,19 +823,24 @@ return(1); } -int test_lshift(BIO *bp,BN_CTX *ctx) +int test_lshift(BIO *bp,BN_CTX *ctx,BIGNUM *a_) { BIGNUM *a,*b,*c,*d; int i; - a=BN_new(); b=BN_new(); c=BN_new(); d=BN_new(); BN_one(c); - BN_rand(a,200,0,0); /**/ - a->neg=rand_neg(); + if(a_) + a=a_; + else + { + a=BN_new(); + BN_rand(a,200,0,0); /**/ + a->neg=rand_neg(); + } for (i=0; i<70; i++) { BN_lshift(b,a,i+1); @@ -849,6 +862,15 @@ if(!BN_is_zero(d)) { BIO_puts(bp,"Left shift test failed!\n"); + BIO_puts(bp,"a="); + BN_print(bp,a); + BIO_puts(bp,"\nb="); + BN_print(bp,b); + BIO_puts(bp,"\nc="); + BN_print(bp,c); + BIO_puts(bp,"\nd="); + BN_print(bp,d); + BIO_puts(bp,"\n"); return 0; } }