OpenSSL
1.0.1c
Main Page
Classes
Files
File List
File Members
All
Classes
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
crypto
bn
divtest.c
Go to the documentation of this file.
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
}
Generated on Thu Jan 10 2013 09:53:34 for OpenSSL by
1.8.2