~brian-sidebotham/openssl-cmake/1.0.1e

« back to all changes in this revision

Viewing changes to crypto/bn/divtest.c

  • Committer: Brian Sidebotham
  • Date: 2013-10-19 21:50:27 UTC
  • Revision ID: brian.sidebotham@gmail.com-20131019215027-yzoyh4svqj87uepu
ImportĀ OpenSSLĀ 1.0.1e

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
}