Mercurial > dropbear
comparison libtommath/tommath.h @ 435:337c45621e81
merge of 'a9b0496634cdd25647b65e585cc3240f3fa699ee'
and 'c22be8b8f570b48e9662dac32c7b3e7148a42206'
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Thu, 22 Feb 2007 14:53:49 +0000 |
parents | 5ff8218bcee9 |
children | 60fc6476e044 |
comparison
equal
deleted
inserted
replaced
434:0aaaf68e97dc | 435:337c45621e81 |
---|---|
8 * additional optimizations in place. | 8 * additional optimizations in place. |
9 * | 9 * |
10 * The library is free for all purposes without any express | 10 * The library is free for all purposes without any express |
11 * guarantee it works. | 11 * guarantee it works. |
12 * | 12 * |
13 * Tom St Denis, [email protected], http://math.libtomcrypt.org | 13 * Tom St Denis, [email protected], http://math.libtomcrypt.com |
14 */ | 14 */ |
15 #ifndef BN_H_ | 15 #ifndef BN_H_ |
16 #define BN_H_ | 16 #define BN_H_ |
17 | 17 |
18 #include <stdio.h> | 18 #include <stdio.h> |
19 #include <string.h> | 19 #include <string.h> |
20 #include <stdlib.h> | 20 #include <stdlib.h> |
21 #include <ctype.h> | 21 #include <ctype.h> |
22 #include <limits.h> | 22 #include <limits.h> |
23 | 23 |
24 #include <tommath_class.h> | 24 #include "tommath_class.h" |
25 | 25 |
26 #undef MIN | 26 #ifndef MIN |
27 #define MIN(x,y) ((x)<(y)?(x):(y)) | 27 #define MIN(x,y) ((x)<(y)?(x):(y)) |
28 #undef MAX | 28 #endif |
29 #define MAX(x,y) ((x)>(y)?(x):(y)) | 29 |
30 #ifndef MAX | |
31 #define MAX(x,y) ((x)>(y)?(x):(y)) | |
32 #endif | |
30 | 33 |
31 #ifdef __cplusplus | 34 #ifdef __cplusplus |
32 extern "C" { | 35 extern "C" { |
33 | 36 |
34 /* C++ compilers don't like assigning void * to mp_digit * */ | 37 /* C++ compilers don't like assigning void * to mp_digit * */ |
110 #define XREALLOC realloc | 113 #define XREALLOC realloc |
111 #define XCALLOC calloc | 114 #define XCALLOC calloc |
112 #else | 115 #else |
113 /* prototypes for our heap functions */ | 116 /* prototypes for our heap functions */ |
114 extern void *XMALLOC(size_t n); | 117 extern void *XMALLOC(size_t n); |
115 extern void *REALLOC(void *p, size_t n); | 118 extern void *XREALLOC(void *p, size_t n); |
116 extern void *XCALLOC(size_t n, size_t s); | 119 extern void *XCALLOC(size_t n, size_t s); |
117 extern void XFREE(void *p); | 120 extern void XFREE(void *p); |
118 #endif | 121 #endif |
119 #endif | 122 #endif |
120 | 123 |
145 #define MP_NO 0 /* no response */ | 148 #define MP_NO 0 /* no response */ |
146 | 149 |
147 /* Primality generation flags */ | 150 /* Primality generation flags */ |
148 #define LTM_PRIME_BBS 0x0001 /* BBS style prime */ | 151 #define LTM_PRIME_BBS 0x0001 /* BBS style prime */ |
149 #define LTM_PRIME_SAFE 0x0002 /* Safe prime (p-1)/2 == prime */ | 152 #define LTM_PRIME_SAFE 0x0002 /* Safe prime (p-1)/2 == prime */ |
150 #define LTM_PRIME_2MSB_OFF 0x0004 /* force 2nd MSB to 0 */ | |
151 #define LTM_PRIME_2MSB_ON 0x0008 /* force 2nd MSB to 1 */ | 153 #define LTM_PRIME_2MSB_ON 0x0008 /* force 2nd MSB to 1 */ |
152 | 154 |
153 typedef int mp_err; | 155 typedef int mp_err; |
154 | 156 |
155 /* you'll have to tune these... */ | 157 /* you'll have to tune these... */ |
162 /* #define MP_LOW_MEM */ | 164 /* #define MP_LOW_MEM */ |
163 | 165 |
164 /* default precision */ | 166 /* default precision */ |
165 #ifndef MP_PREC | 167 #ifndef MP_PREC |
166 #ifndef MP_LOW_MEM | 168 #ifndef MP_LOW_MEM |
167 #define MP_PREC 64 /* default digits of precision */ | 169 #define MP_PREC 32 /* default digits of precision */ |
168 #else | 170 #else |
169 #define MP_PREC 8 /* default digits of precision */ | 171 #define MP_PREC 8 /* default digits of precision */ |
170 #endif | 172 #endif |
171 #endif | 173 #endif |
172 | 174 |
516 | 518 |
517 /* ---> radix conversion <--- */ | 519 /* ---> radix conversion <--- */ |
518 int mp_count_bits(mp_int *a); | 520 int mp_count_bits(mp_int *a); |
519 | 521 |
520 int mp_unsigned_bin_size(mp_int *a); | 522 int mp_unsigned_bin_size(mp_int *a); |
521 int mp_read_unsigned_bin(mp_int *a, unsigned char *b, int c); | 523 int mp_read_unsigned_bin(mp_int *a, const unsigned char *b, int c); |
522 int mp_to_unsigned_bin(mp_int *a, unsigned char *b); | 524 int mp_to_unsigned_bin(mp_int *a, unsigned char *b); |
523 int mp_to_unsigned_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen); | 525 int mp_to_unsigned_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen); |
524 | 526 |
525 int mp_signed_bin_size(mp_int *a); | 527 int mp_signed_bin_size(mp_int *a); |
526 int mp_read_signed_bin(mp_int *a, unsigned char *b, int c); | 528 int mp_read_signed_bin(mp_int *a, const unsigned char *b, int c); |
527 int mp_to_signed_bin(mp_int *a, unsigned char *b); | 529 int mp_to_signed_bin(mp_int *a, unsigned char *b); |
528 int mp_to_signed_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen); | 530 int mp_to_signed_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen); |
529 | 531 |
530 int mp_read_radix(mp_int *a, const char *str, int radix); | 532 int mp_read_radix(mp_int *a, const char *str, int radix); |
531 int mp_toradix(mp_int *a, char *str, int radix); | 533 int mp_toradix(mp_int *a, char *str, int radix); |
532 int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen); | 534 int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen); |
574 } | 576 } |
575 #endif | 577 #endif |
576 | 578 |
577 #endif | 579 #endif |
578 | 580 |
581 | |
582 /* $Source: /cvs/libtom/libtommath/tommath.h,v $ */ | |
583 /* $Revision: 1.8 $ */ | |
584 /* $Date: 2006/03/31 14:18:44 $ */ |