]>
git.saurik.com Git - apple/security.git/blob - AppleCSP/open_ssl/bn/divtest.c
2 * Copyright (c) 2000-2001 Apple Computer, Inc. All Rights Reserved.
4 * The contents of this file constitute Original Code as defined in and are
5 * subject to the Apple Public Source License Version 1.2 (the 'License').
6 * You may not use this file except in compliance with the License. Please obtain
7 * a copy of the License at http://www.apple.com/publicsource and read it before
10 * This Original Code and all software distributed under the License are
11 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS
12 * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
13 * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
14 * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the
15 * specific language governing rights and limitations under the License.
19 #include <openssl/bn.h>
20 #include <openssl/rand.h>
25 RAND_pseudo_bytes(x
,2);
26 return (x
[0] + 2*x
[1]);
29 static void bug(char *m
, BIGNUM
*a
, BIGNUM
*b
)
32 BN_print_fp(stdout
, a
);
34 BN_print_fp(stdout
, b
);
41 BIGNUM
*a
=BN_new(), *b
=BN_new(), *c
=BN_new(), *d
=BN_new(),
42 *C
=BN_new(), *D
=BN_new();
43 BN_RECP_CTX
*recp
=BN_RECP_CTX_new();
44 BN_CTX
*ctx
=BN_CTX_new();
47 BN_pseudo_rand(a
,rand(),0,0);
48 BN_pseudo_rand(b
,rand(),0,0);
49 if (BN_is_zero(b
)) continue;
51 BN_RECP_CTX_set(recp
,b
,ctx
);
52 if (BN_div(C
,D
,a
,b
,ctx
) != 1)
53 bug("BN_div failed",a
,b
);
54 if (BN_div_recp(c
,d
,a
,recp
,ctx
) != 1)
55 bug("BN_div_recp failed",a
,b
);
56 else if (BN_cmp(c
,C
) != 0 || BN_cmp(c
,C
) != 0)