diff options
author | Juan Linietsky <reduzio@gmail.com> | 2014-04-28 21:56:43 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2014-04-28 21:56:43 -0300 |
commit | 87f37bc5a305e6a68ef232be580350588e300fcc (patch) | |
tree | 608af97f58c0dd7f2f6f86d973b072f7888bfca0 /drivers/builtin_openssl/crypto/bn/divtest.c | |
parent | 7fadc2f93a18f2b5487fbcd6e90bcde781c53fec (diff) |
-Added OpenSSL and HTTPS support
-Built-in version of the library for Windows, Android and iOS (other OSs use system one)
-Small fixes all around
Diffstat (limited to 'drivers/builtin_openssl/crypto/bn/divtest.c')
-rw-r--r-- | drivers/builtin_openssl/crypto/bn/divtest.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/drivers/builtin_openssl/crypto/bn/divtest.c b/drivers/builtin_openssl/crypto/bn/divtest.c new file mode 100644 index 0000000000..d3fc688f33 --- /dev/null +++ b/drivers/builtin_openssl/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); + } +} |