source: azure_iot_hub_f767zi/trunk/wolfssl-4.4.0/wolfssl/openssl/bn.h@ 457

Last change on this file since 457 was 457, checked in by coas-nagasima, 4 years ago

ファイルを追加

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-chdr;charset=UTF-8
File size: 8.2 KB
Line 
1/* bn.h
2 *
3 * Copyright (C) 2006-2020 wolfSSL Inc.
4 *
5 * This file is part of wolfSSL.
6 *
7 * wolfSSL is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * wolfSSL is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
20 */
21
22/* bn.h for openssl */
23
24/*!
25 \file wolfssl/openssl/bn.h
26 \brief bn.h for openssl
27*/
28
29
30#ifndef WOLFSSL_BN_H_
31#define WOLFSSL_BN_H_
32
33#include <wolfssl/wolfcrypt/settings.h>
34#include <wolfssl/wolfcrypt/integer.h>
35
36#ifdef __cplusplus
37 extern "C" {
38#endif
39
40typedef struct WOLFSSL_BIGNUM {
41 int neg; /* openssh deference */
42 void *internal; /* our big num */
43#ifdef WOLFSSL_SP_MATH
44 sp_int fp;
45#elif defined(USE_FAST_MATH) && !defined(HAVE_WOLF_BIGINT)
46 fp_int fp;
47#endif
48} WOLFSSL_BIGNUM;
49
50
51#define BN_ULONG WOLFSSL_BN_ULONG
52#define WOLFSSL_BN_ULONG mp_digit
53
54typedef struct WOLFSSL_BN_CTX WOLFSSL_BN_CTX;
55typedef struct WOLFSSL_BN_GENCB WOLFSSL_BN_GENCB;
56
57WOLFSSL_API WOLFSSL_BN_CTX* wolfSSL_BN_CTX_new(void);
58WOLFSSL_API void wolfSSL_BN_CTX_init(WOLFSSL_BN_CTX*);
59WOLFSSL_API void wolfSSL_BN_CTX_free(WOLFSSL_BN_CTX*);
60
61WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_BN_new(void);
62#if defined(USE_FAST_MATH) && !defined(HAVE_WOLF_BIGINT)
63WOLFSSL_API void wolfSSL_BN_init(WOLFSSL_BIGNUM *);
64#endif
65WOLFSSL_API void wolfSSL_BN_free(WOLFSSL_BIGNUM*);
66WOLFSSL_API void wolfSSL_BN_clear_free(WOLFSSL_BIGNUM*);
67WOLFSSL_API void wolfSSL_BN_clear(WOLFSSL_BIGNUM*);
68
69
70WOLFSSL_API int wolfSSL_BN_sub(WOLFSSL_BIGNUM*, const WOLFSSL_BIGNUM*,
71 const WOLFSSL_BIGNUM*);
72WOLFSSL_API int wolfSSL_BN_mod(WOLFSSL_BIGNUM*, const WOLFSSL_BIGNUM*,
73 const WOLFSSL_BIGNUM*, const WOLFSSL_BN_CTX*);
74WOLFSSL_API int wolfSSL_BN_mod_exp(WOLFSSL_BIGNUM *r, const WOLFSSL_BIGNUM *a,
75 const WOLFSSL_BIGNUM *p, const WOLFSSL_BIGNUM *m, WOLFSSL_BN_CTX *ctx);
76WOLFSSL_API int wolfSSL_BN_mod_mul(WOLFSSL_BIGNUM *r, const WOLFSSL_BIGNUM *a,
77 const WOLFSSL_BIGNUM *b, const WOLFSSL_BIGNUM *m, WOLFSSL_BN_CTX *ctx);
78WOLFSSL_API const WOLFSSL_BIGNUM* wolfSSL_BN_value_one(void);
79
80
81WOLFSSL_API int wolfSSL_BN_num_bytes(const WOLFSSL_BIGNUM*);
82WOLFSSL_API int wolfSSL_BN_num_bits(const WOLFSSL_BIGNUM*);
83
84WOLFSSL_API int wolfSSL_BN_is_zero(const WOLFSSL_BIGNUM*);
85WOLFSSL_API int wolfSSL_BN_is_one(const WOLFSSL_BIGNUM*);
86WOLFSSL_API int wolfSSL_BN_is_odd(const WOLFSSL_BIGNUM*);
87WOLFSSL_API int wolfSSL_BN_is_negative(const WOLFSSL_BIGNUM*);
88WOLFSSL_API int wolfSSL_BN_is_word(const WOLFSSL_BIGNUM*, WOLFSSL_BN_ULONG);
89
90WOLFSSL_API int wolfSSL_BN_cmp(const WOLFSSL_BIGNUM*, const WOLFSSL_BIGNUM*);
91
92WOLFSSL_API int wolfSSL_BN_bn2bin(const WOLFSSL_BIGNUM*, unsigned char*);
93WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_BN_bin2bn(const unsigned char*, int len,
94 WOLFSSL_BIGNUM* ret);
95
96WOLFSSL_API int wolfSSL_mask_bits(WOLFSSL_BIGNUM*, int n);
97
98WOLFSSL_API int wolfSSL_BN_pseudo_rand(WOLFSSL_BIGNUM*, int bits, int top,
99 int bottom);
100WOLFSSL_API int wolfSSL_BN_rand(WOLFSSL_BIGNUM*, int bits, int top, int bottom);
101WOLFSSL_API int wolfSSL_BN_is_bit_set(const WOLFSSL_BIGNUM*, int n);
102WOLFSSL_API int wolfSSL_BN_hex2bn(WOLFSSL_BIGNUM**, const char* str);
103
104WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_BN_dup(const WOLFSSL_BIGNUM*);
105WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_BN_copy(WOLFSSL_BIGNUM*,
106 const WOLFSSL_BIGNUM*);
107
108WOLFSSL_API int wolfSSL_BN_dec2bn(WOLFSSL_BIGNUM**, const char* str);
109WOLFSSL_API char* wolfSSL_BN_bn2dec(const WOLFSSL_BIGNUM*);
110
111WOLFSSL_API int wolfSSL_BN_lshift(WOLFSSL_BIGNUM*, const WOLFSSL_BIGNUM*, int);
112WOLFSSL_API int wolfSSL_BN_add_word(WOLFSSL_BIGNUM*, WOLFSSL_BN_ULONG);
113WOLFSSL_API int wolfSSL_BN_set_bit(WOLFSSL_BIGNUM*, int);
114WOLFSSL_API int wolfSSL_BN_clear_bit(WOLFSSL_BIGNUM*, int);
115WOLFSSL_API int wolfSSL_BN_set_word(WOLFSSL_BIGNUM*, WOLFSSL_BN_ULONG);
116WOLFSSL_API unsigned long wolfSSL_BN_get_word(const WOLFSSL_BIGNUM*);
117
118WOLFSSL_API int wolfSSL_BN_add(WOLFSSL_BIGNUM*, WOLFSSL_BIGNUM*,
119 WOLFSSL_BIGNUM*);
120WOLFSSL_API int wolfSSL_BN_mod_add(WOLFSSL_BIGNUM *r, const WOLFSSL_BIGNUM *a,
121 const WOLFSSL_BIGNUM *b, const WOLFSSL_BIGNUM *m,
122 WOLFSSL_BN_CTX *ctx);
123WOLFSSL_API char *wolfSSL_BN_bn2hex(const WOLFSSL_BIGNUM*);
124WOLFSSL_API int wolfSSL_BN_is_prime_ex(const WOLFSSL_BIGNUM*, int,
125 WOLFSSL_BN_CTX*, WOLFSSL_BN_GENCB*);
126WOLFSSL_API WOLFSSL_BN_ULONG wolfSSL_BN_mod_word(const WOLFSSL_BIGNUM*,
127 WOLFSSL_BN_ULONG);
128#if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM)
129 WOLFSSL_API int wolfSSL_BN_print_fp(XFILE, const WOLFSSL_BIGNUM*);
130#endif
131WOLFSSL_API int wolfSSL_BN_rshift(WOLFSSL_BIGNUM*, const WOLFSSL_BIGNUM*, int);
132WOLFSSL_API WOLFSSL_BIGNUM *wolfSSL_BN_CTX_get(WOLFSSL_BN_CTX *ctx);
133WOLFSSL_API void wolfSSL_BN_CTX_start(WOLFSSL_BN_CTX *ctx);
134WOLFSSL_API WOLFSSL_BIGNUM *wolfSSL_BN_mod_inverse(WOLFSSL_BIGNUM*, WOLFSSL_BIGNUM*,
135 const WOLFSSL_BIGNUM*, WOLFSSL_BN_CTX *ctx);
136
137typedef WOLFSSL_BIGNUM BIGNUM;
138typedef WOLFSSL_BN_CTX BN_CTX;
139typedef WOLFSSL_BN_GENCB BN_GENCB;
140
141#define BN_CTX_new wolfSSL_BN_CTX_new
142#define BN_CTX_init wolfSSL_BN_CTX_init
143#define BN_CTX_free wolfSSL_BN_CTX_free
144
145#define BN_new wolfSSL_BN_new
146#define BN_init wolfSSL_BN_init
147#define BN_free wolfSSL_BN_free
148#define BN_clear_free wolfSSL_BN_clear_free
149#define BN_clear wolfSSL_BN_clear
150
151#define BN_num_bytes wolfSSL_BN_num_bytes
152#define BN_num_bits wolfSSL_BN_num_bits
153
154#define BN_is_zero wolfSSL_BN_is_zero
155#define BN_is_one wolfSSL_BN_is_one
156#define BN_is_odd wolfSSL_BN_is_odd
157#define BN_is_negative wolfSSL_BN_is_negative
158#define BN_is_word wolfSSL_BN_is_word
159
160#define BN_cmp wolfSSL_BN_cmp
161
162#define BN_bn2bin wolfSSL_BN_bn2bin
163#define BN_bin2bn wolfSSL_BN_bin2bn
164
165#define BN_mod wolfSSL_BN_mod
166#define BN_mod_exp wolfSSL_BN_mod_exp
167#define BN_mod_mul wolfSSL_BN_mod_mul
168#define BN_sub wolfSSL_BN_sub
169#define BN_value_one wolfSSL_BN_value_one
170
171#define BN_mask_bits wolfSSL_mask_bits
172
173#define BN_pseudo_rand wolfSSL_BN_pseudo_rand
174#define BN_rand wolfSSL_BN_rand
175#define BN_is_bit_set wolfSSL_BN_is_bit_set
176#define BN_hex2bn wolfSSL_BN_hex2bn
177
178#define BN_dup wolfSSL_BN_dup
179#define BN_copy wolfSSL_BN_copy
180
181#define BN_get_word wolfSSL_BN_get_word
182#define BN_set_word wolfSSL_BN_set_word
183
184#define BN_dec2bn wolfSSL_BN_dec2bn
185#define BN_bn2dec wolfSSL_BN_bn2dec
186#define BN_bn2hex wolfSSL_BN_bn2hex
187
188#define BN_lshift wolfSSL_BN_lshift
189#define BN_add_word wolfSSL_BN_add_word
190#define BN_add wolfSSL_BN_add
191#define BN_mod_add wolfSSL_BN_mod_add
192#define BN_set_word wolfSSL_BN_set_word
193#define BN_set_bit wolfSSL_BN_set_bit
194#define BN_clear_bit wolfSSL_BN_clear_bit
195
196
197#define BN_is_prime_ex wolfSSL_BN_is_prime_ex
198#define BN_print_fp wolfSSL_BN_print_fp
199#define BN_rshift wolfSSL_BN_rshift
200#define BN_mod_word wolfSSL_BN_mod_word
201
202#define BN_CTX_get wolfSSL_BN_CTX_get
203#define BN_CTX_start wolfSSL_BN_CTX_start
204
205#define BN_mod_inverse wolfSSL_BN_mod_inverse
206
207#define BN_set_flags(x1, x2)
208
209#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100000L
210#define BN_get_rfc2409_prime_768 wolfSSL_DH_768_prime
211#define BN_get_rfc2409_prime_1024 wolfSSL_DH_1024_prime
212#define BN_get_rfc3526_prime_1536 wolfSSL_DH_1536_prime
213#define BN_get_rfc3526_prime_2048 wolfSSL_DH_2048_prime
214#define BN_get_rfc3526_prime_3072 wolfSSL_DH_3072_prime
215#define BN_get_rfc3526_prime_4096 wolfSSL_DH_4096_prime
216#define BN_get_rfc3526_prime_6144 wolfSSL_DH_6144_prime
217#define BN_get_rfc3526_prime_8192 wolfSSL_DH_8192_prime
218#endif
219
220
221#ifdef __cplusplus
222 } /* extern "C" */
223#endif
224
225
226#endif /* WOLFSSL__H_ */
Note: See TracBrowser for help on using the repository browser.