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

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

Committer:
wolfSSL
Date:
Thu Apr 28 00:56:55 2016 +0000
Revision:
3:6f956bdb3073
wolfSSL 3.9.0

Who changed what in which revision?

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