diff options
author | Simon L. B. Nielsen <simon@FreeBSD.org> | 2008-08-23 10:51:00 +0000 |
---|---|---|
committer | Simon L. B. Nielsen <simon@FreeBSD.org> | 2008-08-23 10:51:00 +0000 |
commit | c4a78426bef17a0a7c81195c2b2399e7441f14ad (patch) | |
tree | 596c39f00d5968b1519e8cd7f0546412b14c20f0 /crypto/bn/divtest.c | |
parent | a0ddfe4e7233d81e88a86217b7653708db2720fa (diff) | |
download | src-c4a78426bef17a0a7c81195c2b2399e7441f14ad.tar.gz src-c4a78426bef17a0a7c81195c2b2399e7441f14ad.zip |
Flatten OpenSSL vendor tree.
Notes
Notes:
svn path=/vendor-crypto/openssl/dist/; revision=182044
Diffstat (limited to 'crypto/bn/divtest.c')
-rw-r--r-- | crypto/bn/divtest.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/crypto/bn/divtest.c b/crypto/bn/divtest.c new file mode 100644 index 000000000000..d3fc688f3357 --- /dev/null +++ b/crypto/bn/divtest.c @@ -0,0 +1,41 @@ +#include <openssl/bn.h> +#include <openssl/rand.h> + +static int Rand(n) +{ + unsigned char x[2]; + RAND_pseudo_bytes(x,2); + return (x[0] + 2*x[1]); +} + +static void bug(char *m, BIGNUM *a, BIGNUM *b) +{ + printf("%s!\na=",m); + BN_print_fp(stdout, a); + printf("\nb="); + BN_print_fp(stdout, b); + printf("\n"); + fflush(stdout); +} + +main() +{ + BIGNUM *a=BN_new(), *b=BN_new(), *c=BN_new(), *d=BN_new(), + *C=BN_new(), *D=BN_new(); + BN_RECP_CTX *recp=BN_RECP_CTX_new(); + BN_CTX *ctx=BN_CTX_new(); + + for(;;) { + BN_pseudo_rand(a,Rand(),0,0); + BN_pseudo_rand(b,Rand(),0,0); + if (BN_is_zero(b)) continue; + + BN_RECP_CTX_set(recp,b,ctx); + if (BN_div(C,D,a,b,ctx) != 1) + bug("BN_div failed",a,b); + if (BN_div_recp(c,d,a,recp,ctx) != 1) + bug("BN_div_recp failed",a,b); + else if (BN_cmp(c,C) != 0 || BN_cmp(c,C) != 0) + bug("mismatch",a,b); + } +} |