1use super::super::*;
2use libc::*;
3
4unsafeextern "C" {
5 pub unsafefn BN_CTX_new() -> *mut BN_CTX;
6 #[cfg(ossl110)]
7 pub unsafefn BN_CTX_secure_new() -> *mut BN_CTX;
8 pub unsafefn BN_CTX_free(ctx: *mut BN_CTX);
9 pub unsafefn BN_rand(r: *mut BIGNUM, bits: c_int, top: c_int, bottom: c_int) -> c_int;
10 #[cfg(not(osslconf = "OPENSSL_NO_DEPRECATED_3_0"))]
11 pub unsafefn BN_pseudo_rand(r: *mut BIGNUM, bits: c_int, top: c_int, bottom: c_int) -> c_int;
12 pub unsafefn BN_rand_range(r: *mut BIGNUM, range: *const BIGNUM) -> c_int;
13 #[cfg(not(osslconf = "OPENSSL_NO_DEPRECATED_3_0"))]
14 pub unsafefn BN_pseudo_rand_range(r: *mut BIGNUM, range: *const BIGNUM) -> c_int;
15 pub unsafefn BN_new() -> *mut BIGNUM;
16 #[cfg(ossl110)]
17 pub unsafefn BN_secure_new() -> *mut BIGNUM;
18 #[cfg(ossl110)]
19 pub unsafefn BN_set_flags(b: *mut BIGNUM, n: c_int);
20 #[cfg(ossl110)]
21 pub unsafefn BN_get_flags(b: *const BIGNUM, n: c_int) -> c_int;
22 pub unsafefn BN_num_bits(bn: *const BIGNUM) -> c_int;
23 pub unsafefn BN_clear_free(bn: *mut BIGNUM);
24 pub unsafefn BN_bin2bn(s: *const u8, size: c_int, ret: *mut BIGNUM) -> *mut BIGNUM;
25 pub unsafefn BN_bn2bin(a: *const BIGNUM, to: *mut u8) -> c_int;
26 #[cfg(any(ossl110, libressl340))]
27 pub unsafefn BN_bn2binpad(a: *const BIGNUM, to: *mut u8, tolen: c_int) -> c_int;
28 pub unsafefn BN_sub(r: *mut BIGNUM, a: *const BIGNUM, b: *const BIGNUM) -> c_int;
29 pub unsafefn BN_add(r: *mut BIGNUM, a: *const BIGNUM, b: *const BIGNUM) -> c_int;
30 pub unsafefn BN_mul(r: *mut BIGNUM, a: *const BIGNUM, b: *const BIGNUM, ctx: *mut BN_CTX) -> c_int;
31 pub unsafefn BN_sqr(r: *mut BIGNUM, a: *const BIGNUM, ctx: *mut BN_CTX) -> c_int;
32 pub unsafefn BN_set_negative(bn: *mut BIGNUM, n: c_int);
33 #[cfg(any(ossl110, libressl350))]
34 pub unsafefn BN_is_negative(b: *const BIGNUM) -> c_int;
35 #[cfg(any(ossl110, libressl350))]
36 pub unsafefn BN_is_odd(b: *const BIGNUM) -> c_int;
37
38 pub unsafefn BN_div(
39 dv: *mut BIGNUM,
40 rem: *mut BIGNUM,
41 a: *const BIGNUM,
42 b: *const BIGNUM,
43 ctx: *mut BN_CTX,
44 ) -> c_int;
45 pub unsafefn BN_nnmod(
46 rem: *mut BIGNUM,
47 a: *const BIGNUM,
48 m: *const BIGNUM,
49 ctx: *mut BN_CTX,
50 ) -> c_int;
51 pub unsafefn BN_mod_add(
52 r: *mut BIGNUM,
53 a: *const BIGNUM,
54 b: *const BIGNUM,
55 m: *const BIGNUM,
56 ctx: *mut BN_CTX,
57 ) -> c_int;
58 pub unsafefn BN_mod_sub(
59 r: *mut BIGNUM,
60 a: *const BIGNUM,
61 b: *const BIGNUM,
62 m: *const BIGNUM,
63 ctx: *mut BN_CTX,
64 ) -> c_int;
65 pub unsafefn BN_mod_mul(
66 r: *mut BIGNUM,
67 a: *const BIGNUM,
68 b: *const BIGNUM,
69 m: *const BIGNUM,
70 ctx: *mut BN_CTX,
71 ) -> c_int;
72 pub unsafefn BN_mod_sqr(
73 r: *mut BIGNUM,
74 a: *const BIGNUM,
75 m: *const BIGNUM,
76 ctx: *mut BN_CTX,
77 ) -> c_int;
78 pub unsafefn BN_mod_sqrt(
79 ret: *mut BIGNUM,
80 a: *const BIGNUM,
81 p: *const BIGNUM,
82 ctx: *mut BN_CTX,
83 ) -> *mut BIGNUM;
84
85 pub unsafefn BN_mod_word(r: *const BIGNUM, w: BN_ULONG) -> BN_ULONG;
86 pub unsafefn BN_div_word(r: *mut BIGNUM, w: BN_ULONG) -> BN_ULONG;
87 pub unsafefn BN_mul_word(r: *mut BIGNUM, w: BN_ULONG) -> c_int;
88 pub unsafefn BN_add_word(r: *mut BIGNUM, w: BN_ULONG) -> c_int;
89 pub unsafefn BN_sub_word(r: *mut BIGNUM, w: BN_ULONG) -> c_int;
90 pub unsafefn BN_set_word(bn: *mut BIGNUM, n: BN_ULONG) -> c_int;
91
92 pub unsafefn BN_cmp(a: *const BIGNUM, b: *const BIGNUM) -> c_int;
93 pub unsafefn BN_free(bn: *mut BIGNUM);
94 pub unsafefn BN_is_bit_set(a: *const BIGNUM, n: c_int) -> c_int;
95 pub unsafefn BN_lshift(r: *mut BIGNUM, a: *const BIGNUM, n: c_int) -> c_int;
96 pub unsafefn BN_lshift1(r: *mut BIGNUM, a: *const BIGNUM) -> c_int;
97 pub unsafefn BN_exp(r: *mut BIGNUM, a: *const BIGNUM, p: *const BIGNUM, ctx: *mut BN_CTX) -> c_int;
98
99 pub unsafefn BN_mod_exp(
100 r: *mut BIGNUM,
101 a: *const BIGNUM,
102 p: *const BIGNUM,
103 m: *const BIGNUM,
104 ctx: *mut BN_CTX,
105 ) -> c_int;
106
107 pub unsafefn BN_mask_bits(a: *mut BIGNUM, n: c_int) -> c_int;
108 pub unsafefn BN_rshift(r: *mut BIGNUM, a: *const BIGNUM, n: c_int) -> c_int;
109 pub unsafefn BN_rshift1(r: *mut BIGNUM, a: *const BIGNUM) -> c_int;
110 pub unsafefn BN_bn2hex(a: *const BIGNUM) -> *mut c_char;
111 pub unsafefn BN_bn2dec(a: *const BIGNUM) -> *mut c_char;
112 pub unsafefn BN_hex2bn(a: *mut *mut BIGNUM, s: *const c_char) -> c_int;
113 pub unsafefn BN_dec2bn(a: *mut *mut BIGNUM, s: *const c_char) -> c_int;
114 pub unsafefn BN_gcd(r: *mut BIGNUM, a: *const BIGNUM, b: *const BIGNUM, ctx: *mut BN_CTX) -> c_int;
115 pub unsafefn BN_mod_inverse(
116 r: *mut BIGNUM,
117 a: *const BIGNUM,
118 n: *const BIGNUM,
119 ctx: *mut BN_CTX,
120 ) -> *mut BIGNUM;
121 pub unsafefn BN_clear(bn: *mut BIGNUM);
122 pub unsafefn BN_dup(n: *const BIGNUM) -> *mut BIGNUM;
123 pub unsafefn BN_ucmp(a: *const BIGNUM, b: *const BIGNUM) -> c_int;
124 pub unsafefn BN_set_bit(a: *mut BIGNUM, n: c_int) -> c_int;
125 pub unsafefn BN_clear_bit(a: *mut BIGNUM, n: c_int) -> c_int;
126
127 pub unsafefn BN_generate_prime_ex(
128 r: *mut BIGNUM,
129 bits: c_int,
130 safe: c_int,
131 add: *const BIGNUM,
132 rem: *const BIGNUM,
133 cb: *mut BN_GENCB,
134 ) -> c_int;
135 #[cfg(not(osslconf = "OPENSSL_NO_DEPRECATED_3_0"))]
136 pub unsafefn BN_is_prime_ex(
137 p: *const BIGNUM,
138 checks: c_int,
139 ctx: *mut BN_CTX,
140 cb: *mut BN_GENCB,
141 ) -> c_int;
142 #[cfg(not(osslconf = "OPENSSL_NO_DEPRECATED_3_0"))]
143 pub unsafefn BN_is_prime_fasttest_ex(
144 p: *const BIGNUM,
145 checks: c_int,
146 ctx: *mut BN_CTX,
147 do_trial_division: c_int,
148 cb: *mut BN_GENCB,
149 ) -> c_int;
150}
151
152cfg_if! {
153 if #[cfg(any(ossl110, libressl350))] {
154 extern "C" {
155 pub fn BN_get_rfc2409_prime_768(bn: *mut BIGNUM) -> *mut BIGNUM;
156 pub fn BN_get_rfc2409_prime_1024(bn: *mut BIGNUM) -> *mut BIGNUM;
157 pub fn BN_get_rfc3526_prime_1536(bn: *mut BIGNUM) -> *mut BIGNUM;
158 pub fn BN_get_rfc3526_prime_2048(bn: *mut BIGNUM) -> *mut BIGNUM;
159 pub fn BN_get_rfc3526_prime_3072(bn: *mut BIGNUM) -> *mut BIGNUM;
160 pub fn BN_get_rfc3526_prime_4096(bn: *mut BIGNUM) -> *mut BIGNUM;
161 pub fn BN_get_rfc3526_prime_6144(bn: *mut BIGNUM) -> *mut BIGNUM;
162 pub fn BN_get_rfc3526_prime_8192(bn: *mut BIGNUM) -> *mut BIGNUM;
163 }
164 } else {
165 extern "C" {
166 pub fn get_rfc2409_prime_768(bn: *mut BIGNUM) -> *mut BIGNUM;
167 pub fn get_rfc2409_prime_1024(bn: *mut BIGNUM) -> *mut BIGNUM;
168 pub fn get_rfc3526_prime_1536(bn: *mut BIGNUM) -> *mut BIGNUM;
169 pub fn get_rfc3526_prime_2048(bn: *mut BIGNUM) -> *mut BIGNUM;
170 pub fn get_rfc3526_prime_3072(bn: *mut BIGNUM) -> *mut BIGNUM;
171 pub fn get_rfc3526_prime_4096(bn: *mut BIGNUM) -> *mut BIGNUM;
172 pub fn get_rfc3526_prime_6144(bn: *mut BIGNUM) -> *mut BIGNUM;
173 pub fn get_rfc3526_prime_8192(bn: *mut BIGNUM) -> *mut BIGNUM;
174 }
175 }
176}
177