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

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

Committer:
wolfSSL
Date:
Tue Aug 22 10:48:22 2017 +0000
Revision:
13:f67a6c6013ca
wolfSSL3.12.0 with TLS1.3

Who changed what in which revision?

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