| OLD | NEW |
| (Empty) |
| 1 #include <openssl/bn.h> | |
| 2 #include <openssl/rand.h> | |
| 3 | |
| 4 static int Rand(n) | |
| 5 { | |
| 6 unsigned char x[2]; | |
| 7 RAND_pseudo_bytes(x,2); | |
| 8 return (x[0] + 2*x[1]); | |
| 9 } | |
| 10 | |
| 11 static void bug(char *m, BIGNUM *a, BIGNUM *b) | |
| 12 { | |
| 13 printf("%s!\na=",m); | |
| 14 BN_print_fp(stdout, a); | |
| 15 printf("\nb="); | |
| 16 BN_print_fp(stdout, b); | |
| 17 printf("\n"); | |
| 18 fflush(stdout); | |
| 19 } | |
| 20 | |
| 21 main() | |
| 22 { | |
| 23 BIGNUM *a=BN_new(), *b=BN_new(), *c=BN_new(), *d=BN_new(), | |
| 24 *C=BN_new(), *D=BN_new(); | |
| 25 BN_RECP_CTX *recp=BN_RECP_CTX_new(); | |
| 26 BN_CTX *ctx=BN_CTX_new(); | |
| 27 | |
| 28 for(;;) { | |
| 29 BN_pseudo_rand(a,Rand(),0,0); | |
| 30 BN_pseudo_rand(b,Rand(),0,0); | |
| 31 if (BN_is_zero(b)) continue; | |
| 32 | |
| 33 BN_RECP_CTX_set(recp,b,ctx); | |
| 34 if (BN_div(C,D,a,b,ctx) != 1) | |
| 35 bug("BN_div failed",a,b); | |
| 36 if (BN_div_recp(c,d,a,recp,ctx) != 1) | |
| 37 bug("BN_div_recp failed",a,b); | |
| 38 else if (BN_cmp(c,C) != 0 || BN_cmp(c,C) != 0) | |
| 39 bug("mismatch",a,b); | |
| 40 } | |
| 41 } | |
| OLD | NEW |