wolfSSL SSL/TLS library, support up to TLS1.3

Dependents:   CyaSSL-Twitter-OAuth4Tw Example-client-tls-cert TwitterReader TweetTest ... more

Committer:
wolfSSL
Date:
Tue May 02 08:44:47 2017 +0000
Revision:
7:481bce714567
wolfSSL3.10.2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wolfSSL 7:481bce714567 1 /* bn.h for openssl */
wolfSSL 7:481bce714567 2
wolfSSL 7:481bce714567 3
wolfSSL 7:481bce714567 4 #ifndef WOLFSSL_BN_H_
wolfSSL 7:481bce714567 5 #define WOLFSSL_BN_H_
wolfSSL 7:481bce714567 6
wolfSSL 7:481bce714567 7 #include <wolfssl/wolfcrypt/settings.h>
wolfSSL 7:481bce714567 8 #include <wolfssl/wolfcrypt/integer.h>
wolfSSL 7:481bce714567 9
wolfSSL 7:481bce714567 10 #ifdef __cplusplus
wolfSSL 7:481bce714567 11 extern "C" {
wolfSSL 7:481bce714567 12 #endif
wolfSSL 7:481bce714567 13
wolfSSL 7:481bce714567 14 typedef struct WOLFSSL_BIGNUM {
wolfSSL 7:481bce714567 15 int neg; /* openssh deference */
wolfSSL 7:481bce714567 16 void* internal; /* our big num */
wolfSSL 7:481bce714567 17 } WOLFSSL_BIGNUM;
wolfSSL 7:481bce714567 18
wolfSSL 7:481bce714567 19
wolfSSL 7:481bce714567 20 #define WOLFSSL_BN_ULONG mp_digit
wolfSSL 7:481bce714567 21
wolfSSL 7:481bce714567 22 typedef struct WOLFSSL_BN_CTX WOLFSSL_BN_CTX;
wolfSSL 7:481bce714567 23 typedef struct WOLFSSL_BN_GENCB WOLFSSL_BN_GENCB;
wolfSSL 7:481bce714567 24
wolfSSL 7:481bce714567 25 WOLFSSL_API WOLFSSL_BN_CTX* wolfSSL_BN_CTX_new(void);
wolfSSL 7:481bce714567 26 WOLFSSL_API void wolfSSL_BN_CTX_init(WOLFSSL_BN_CTX*);
wolfSSL 7:481bce714567 27 WOLFSSL_API void wolfSSL_BN_CTX_free(WOLFSSL_BN_CTX*);
wolfSSL 7:481bce714567 28
wolfSSL 7:481bce714567 29 WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_BN_new(void);
wolfSSL 7:481bce714567 30 WOLFSSL_API void wolfSSL_BN_free(WOLFSSL_BIGNUM*);
wolfSSL 7:481bce714567 31 WOLFSSL_API void wolfSSL_BN_clear_free(WOLFSSL_BIGNUM*);
wolfSSL 7:481bce714567 32
wolfSSL 7:481bce714567 33
wolfSSL 7:481bce714567 34 WOLFSSL_API int wolfSSL_BN_sub(WOLFSSL_BIGNUM*, const WOLFSSL_BIGNUM*,
wolfSSL 7:481bce714567 35 const WOLFSSL_BIGNUM*);
wolfSSL 7:481bce714567 36 WOLFSSL_API int wolfSSL_BN_mod(WOLFSSL_BIGNUM*, const WOLFSSL_BIGNUM*,
wolfSSL 7:481bce714567 37 const WOLFSSL_BIGNUM*, const WOLFSSL_BN_CTX*);
wolfSSL 7:481bce714567 38 WOLFSSL_API int wolfSSL_BN_mod_exp(WOLFSSL_BIGNUM *r, const WOLFSSL_BIGNUM *a,
wolfSSL 7:481bce714567 39 const WOLFSSL_BIGNUM *p, const WOLFSSL_BIGNUM *m, WOLFSSL_BN_CTX *ctx);
wolfSSL 7:481bce714567 40 WOLFSSL_API const WOLFSSL_BIGNUM* wolfSSL_BN_value_one(void);
wolfSSL 7:481bce714567 41
wolfSSL 7:481bce714567 42
wolfSSL 7:481bce714567 43 WOLFSSL_API int wolfSSL_BN_num_bytes(const WOLFSSL_BIGNUM*);
wolfSSL 7:481bce714567 44 WOLFSSL_API int wolfSSL_BN_num_bits(const WOLFSSL_BIGNUM*);
wolfSSL 7:481bce714567 45
wolfSSL 7:481bce714567 46 WOLFSSL_API int wolfSSL_BN_is_zero(const WOLFSSL_BIGNUM*);
wolfSSL 7:481bce714567 47 WOLFSSL_API int wolfSSL_BN_is_one(const WOLFSSL_BIGNUM*);
wolfSSL 7:481bce714567 48 WOLFSSL_API int wolfSSL_BN_is_odd(const WOLFSSL_BIGNUM*);
wolfSSL 7:481bce714567 49
wolfSSL 7:481bce714567 50 WOLFSSL_API int wolfSSL_BN_cmp(const WOLFSSL_BIGNUM*, const WOLFSSL_BIGNUM*);
wolfSSL 7:481bce714567 51
wolfSSL 7:481bce714567 52 WOLFSSL_API int wolfSSL_BN_bn2bin(const WOLFSSL_BIGNUM*, unsigned char*);
wolfSSL 7:481bce714567 53 WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_BN_bin2bn(const unsigned char*, int len,
wolfSSL 7:481bce714567 54 WOLFSSL_BIGNUM* ret);
wolfSSL 7:481bce714567 55
wolfSSL 7:481bce714567 56 WOLFSSL_API int wolfSSL_mask_bits(WOLFSSL_BIGNUM*, int n);
wolfSSL 7:481bce714567 57
wolfSSL 7:481bce714567 58 WOLFSSL_API int wolfSSL_BN_rand(WOLFSSL_BIGNUM*, int bits, int top, int bottom);
wolfSSL 7:481bce714567 59 WOLFSSL_API int wolfSSL_BN_is_bit_set(const WOLFSSL_BIGNUM*, int n);
wolfSSL 7:481bce714567 60 WOLFSSL_API int wolfSSL_BN_hex2bn(WOLFSSL_BIGNUM**, const char* str);
wolfSSL 7:481bce714567 61
wolfSSL 7:481bce714567 62 WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_BN_dup(const WOLFSSL_BIGNUM*);
wolfSSL 7:481bce714567 63 WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_BN_copy(WOLFSSL_BIGNUM*,
wolfSSL 7:481bce714567 64 const WOLFSSL_BIGNUM*);
wolfSSL 7:481bce714567 65
wolfSSL 7:481bce714567 66 WOLFSSL_API int wolfSSL_BN_dec2bn(WOLFSSL_BIGNUM**, const char* str);
wolfSSL 7:481bce714567 67 WOLFSSL_API char* wolfSSL_BN_bn2dec(const WOLFSSL_BIGNUM*);
wolfSSL 7:481bce714567 68
wolfSSL 7:481bce714567 69 WOLFSSL_API int wolfSSL_BN_lshift(WOLFSSL_BIGNUM*, const WOLFSSL_BIGNUM*, int);
wolfSSL 7:481bce714567 70 WOLFSSL_API int wolfSSL_BN_add_word(WOLFSSL_BIGNUM*, WOLFSSL_BN_ULONG);
wolfSSL 7:481bce714567 71 WOLFSSL_API int wolfSSL_BN_set_bit(WOLFSSL_BIGNUM*, int);
wolfSSL 7:481bce714567 72 WOLFSSL_API int wolfSSL_BN_set_word(WOLFSSL_BIGNUM*, WOLFSSL_BN_ULONG);
wolfSSL 7:481bce714567 73
wolfSSL 7:481bce714567 74 WOLFSSL_API int wolfSSL_BN_add(WOLFSSL_BIGNUM*, WOLFSSL_BIGNUM*,
wolfSSL 7:481bce714567 75 WOLFSSL_BIGNUM*);
wolfSSL 7:481bce714567 76 WOLFSSL_API char *wolfSSL_BN_bn2hex(const WOLFSSL_BIGNUM*);
wolfSSL 7:481bce714567 77 WOLFSSL_API int wolfSSL_BN_is_prime_ex(const WOLFSSL_BIGNUM*, int,
wolfSSL 7:481bce714567 78 WOLFSSL_BN_CTX*, WOLFSSL_BN_GENCB*);
wolfSSL 7:481bce714567 79 WOLFSSL_API WOLFSSL_BN_ULONG wolfSSL_BN_mod_word(const WOLFSSL_BIGNUM*,
wolfSSL 7:481bce714567 80 WOLFSSL_BN_ULONG);
wolfSSL 7:481bce714567 81 #ifndef NO_FILESYSTEM
wolfSSL 7:481bce714567 82 WOLFSSL_API int wolfSSL_BN_print_fp(FILE*, const WOLFSSL_BIGNUM*);
wolfSSL 7:481bce714567 83 #endif
wolfSSL 7:481bce714567 84 WOLFSSL_API int wolfSSL_BN_rshift(WOLFSSL_BIGNUM*, const WOLFSSL_BIGNUM*, int);
wolfSSL 7:481bce714567 85 WOLFSSL_API WOLFSSL_BIGNUM *wolfSSL_BN_CTX_get(WOLFSSL_BN_CTX *ctx);
wolfSSL 7:481bce714567 86 WOLFSSL_API void wolfSSL_BN_CTX_start(WOLFSSL_BN_CTX *ctx);
wolfSSL 7:481bce714567 87
wolfSSL 7:481bce714567 88 typedef WOLFSSL_BIGNUM BIGNUM;
wolfSSL 7:481bce714567 89 typedef WOLFSSL_BN_CTX BN_CTX;
wolfSSL 7:481bce714567 90 typedef WOLFSSL_BN_GENCB BN_GENCB;
wolfSSL 7:481bce714567 91
wolfSSL 7:481bce714567 92 #define BN_CTX_new wolfSSL_BN_CTX_new
wolfSSL 7:481bce714567 93 #define BN_CTX_init wolfSSL_BN_CTX_init
wolfSSL 7:481bce714567 94 #define BN_CTX_free wolfSSL_BN_CTX_free
wolfSSL 7:481bce714567 95
wolfSSL 7:481bce714567 96 #define BN_new wolfSSL_BN_new
wolfSSL 7:481bce714567 97 #define BN_free wolfSSL_BN_free
wolfSSL 7:481bce714567 98 #define BN_clear_free wolfSSL_BN_clear_free
wolfSSL 7:481bce714567 99
wolfSSL 7:481bce714567 100 #define BN_num_bytes wolfSSL_BN_num_bytes
wolfSSL 7:481bce714567 101 #define BN_num_bits wolfSSL_BN_num_bits
wolfSSL 7:481bce714567 102
wolfSSL 7:481bce714567 103 #define BN_is_zero wolfSSL_BN_is_zero
wolfSSL 7:481bce714567 104 #define BN_is_one wolfSSL_BN_is_one
wolfSSL 7:481bce714567 105 #define BN_is_odd wolfSSL_BN_is_odd
wolfSSL 7:481bce714567 106
wolfSSL 7:481bce714567 107 #define BN_cmp wolfSSL_BN_cmp
wolfSSL 7:481bce714567 108
wolfSSL 7:481bce714567 109 #define BN_bn2bin wolfSSL_BN_bn2bin
wolfSSL 7:481bce714567 110 #define BN_bin2bn wolfSSL_BN_bin2bn
wolfSSL 7:481bce714567 111
wolfSSL 7:481bce714567 112 #define BN_mod wolfSSL_BN_mod
wolfSSL 7:481bce714567 113 #define BN_mod_exp wolfSSL_BN_mod_exp
wolfSSL 7:481bce714567 114 #define BN_sub wolfSSL_BN_sub
wolfSSL 7:481bce714567 115 #define BN_value_one wolfSSL_BN_value_one
wolfSSL 7:481bce714567 116
wolfSSL 7:481bce714567 117 #define BN_mask_bits wolfSSL_mask_bits
wolfSSL 7:481bce714567 118
wolfSSL 7:481bce714567 119 #define BN_rand wolfSSL_BN_rand
wolfSSL 7:481bce714567 120 #define BN_is_bit_set wolfSSL_BN_is_bit_set
wolfSSL 7:481bce714567 121 #define BN_hex2bn wolfSSL_BN_hex2bn
wolfSSL 7:481bce714567 122
wolfSSL 7:481bce714567 123 #define BN_dup wolfSSL_BN_dup
wolfSSL 7:481bce714567 124 #define BN_copy wolfSSL_BN_copy
wolfSSL 7:481bce714567 125
wolfSSL 7:481bce714567 126 #define BN_set_word wolfSSL_BN_set_word
wolfSSL 7:481bce714567 127
wolfSSL 7:481bce714567 128 #define BN_dec2bn wolfSSL_BN_dec2bn
wolfSSL 7:481bce714567 129 #define BN_bn2dec wolfSSL_BN_bn2dec
wolfSSL 7:481bce714567 130 #define BN_bn2hex wolfSSL_BN_bn2hex
wolfSSL 7:481bce714567 131
wolfSSL 7:481bce714567 132 #define BN_lshift wolfSSL_BN_lshift
wolfSSL 7:481bce714567 133 #define BN_add_word wolfSSL_BN_add_word
wolfSSL 7:481bce714567 134 #define BN_add wolfSSL_BN_add
wolfSSL 7:481bce714567 135 #define BN_set_word wolfSSL_BN_set_word
wolfSSL 7:481bce714567 136 #define BN_set_bit wolfSSL_BN_set_bit
wolfSSL 7:481bce714567 137
wolfSSL 7:481bce714567 138
wolfSSL 7:481bce714567 139 #define BN_is_prime_ex wolfSSL_BN_is_prime_ex
wolfSSL 7:481bce714567 140 #define BN_print_fp wolfSSL_BN_print_fp
wolfSSL 7:481bce714567 141 #define BN_rshift wolfSSL_BN_rshift
wolfSSL 7:481bce714567 142 #define BN_mod_word wolfSSL_BN_mod_word
wolfSSL 7:481bce714567 143
wolfSSL 7:481bce714567 144 #define BN_CTX_get wolfSSL_BN_CTX_get
wolfSSL 7:481bce714567 145 #define BN_CTX_start wolfSSL_BN_CTX_start
wolfSSL 7:481bce714567 146
wolfSSL 7:481bce714567 147 #ifdef __cplusplus
wolfSSL 7:481bce714567 148 } /* extern "C" */
wolfSSL 7:481bce714567 149 #endif
wolfSSL 7:481bce714567 150
wolfSSL 7:481bce714567 151
wolfSSL 7:481bce714567 152 #endif /* WOLFSSL__H_ */
wolfSSL 7:481bce714567 153