ltm patch (VC6 compatibility)
Karel Miko
5 years ago
133 | 133 | ltm/bn_mp_div_d.o ltm/bn_mp_dr_is_modulus.o ltm/bn_mp_dr_reduce.o ltm/bn_mp_dr_setup.o \ |
134 | 134 | ltm/bn_mp_exch.o ltm/bn_mp_export.o ltm/bn_mp_exptmod.o ltm/bn_mp_exptmod_fast.o \ |
135 | 135 | ltm/bn_mp_expt_d.o ltm/bn_mp_expt_d_ex.o ltm/bn_mp_exteuclid.o ltm/bn_mp_fread.o \ |
136 | ltm/bn_mp_fwrite.o ltm/bn_mp_gcd.o ltm/bn_mp_get_int.o ltm/bn_mp_get_long.o ltm/bn_mp_get_long_long.o \ | |
137 | ltm/bn_mp_grow.o ltm/bn_mp_import.o ltm/bn_mp_init.o ltm/bn_mp_init_copy.o ltm/bn_mp_init_multi.o \ | |
136 | ltm/bn_mp_fwrite.o ltm/bn_mp_gcd.o ltm/bn_mp_get_int.o ltm/bn_mp_get_long.o ltm/bn_mp_grow.o \ | |
137 | ltm/bn_mp_import.o ltm/bn_mp_init.o ltm/bn_mp_init_copy.o ltm/bn_mp_init_multi.o \ | |
138 | 138 | ltm/bn_mp_init_set.o ltm/bn_mp_init_set_int.o ltm/bn_mp_init_size.o ltm/bn_mp_invmod.o \ |
139 | 139 | ltm/bn_mp_invmod_slow.o ltm/bn_mp_is_square.o ltm/bn_mp_jacobi.o ltm/bn_mp_karatsuba_mul.o \ |
140 | 140 | ltm/bn_mp_karatsuba_sqr.o ltm/bn_mp_lcm.o ltm/bn_mp_lshd.o ltm/bn_mp_mod.o ltm/bn_mp_mod_2d.o \ |
148 | 148 | ltm/bn_mp_reduce.o ltm/bn_mp_reduce_2k.o ltm/bn_mp_reduce_2k_l.o ltm/bn_mp_reduce_2k_setup.o \ |
149 | 149 | ltm/bn_mp_reduce_2k_setup_l.o ltm/bn_mp_reduce_is_2k.o ltm/bn_mp_reduce_is_2k_l.o \ |
150 | 150 | ltm/bn_mp_reduce_setup.o ltm/bn_mp_rshd.o ltm/bn_mp_set.o ltm/bn_mp_set_int.o ltm/bn_mp_set_long.o \ |
151 | ltm/bn_mp_set_long_long.o ltm/bn_mp_shrink.o ltm/bn_mp_signed_bin_size.o ltm/bn_mp_sqr.o \ | |
152 | ltm/bn_mp_sqrmod.o ltm/bn_mp_sqrt.o ltm/bn_mp_sqrtmod_prime.o ltm/bn_mp_sub.o ltm/bn_mp_submod.o \ | |
153 | ltm/bn_mp_sub_d.o ltm/bn_mp_toom_mul.o ltm/bn_mp_toom_sqr.o ltm/bn_mp_toradix.o ltm/bn_mp_toradix_n.o \ | |
151 | ltm/bn_mp_shrink.o ltm/bn_mp_signed_bin_size.o ltm/bn_mp_sqr.o ltm/bn_mp_sqrmod.o \ | |
152 | ltm/bn_mp_sqrt.o ltm/bn_mp_sqrtmod_prime.o ltm/bn_mp_sub.o ltm/bn_mp_submod.o ltm/bn_mp_sub_d.o \ | |
153 | ltm/bn_mp_toom_mul.o ltm/bn_mp_toom_sqr.o ltm/bn_mp_toradix.o ltm/bn_mp_toradix_n.o \ | |
154 | 154 | ltm/bn_mp_to_signed_bin.o ltm/bn_mp_to_signed_bin_n.o ltm/bn_mp_to_unsigned_bin.o \ |
155 | 155 | ltm/bn_mp_to_unsigned_bin_n.o ltm/bn_mp_unsigned_bin_size.o ltm/bn_mp_xor.o ltm/bn_mp_zero.o \ |
156 | 156 | ltm/bn_prime_tab.o ltm/bn_reverse.o ltm/bn_s_mp_add.o ltm/bn_s_mp_exptmod.o ltm/bn_s_mp_mul_digs.o \ |
142 | 142 | ltm/bn_mp_dr_is_modulus.obj ltm/bn_mp_dr_reduce.obj ltm/bn_mp_dr_setup.obj ltm/bn_mp_exch.obj \ |
143 | 143 | ltm/bn_mp_export.obj ltm/bn_mp_exptmod.obj ltm/bn_mp_exptmod_fast.obj ltm/bn_mp_expt_d.obj \ |
144 | 144 | ltm/bn_mp_expt_d_ex.obj ltm/bn_mp_exteuclid.obj ltm/bn_mp_fread.obj ltm/bn_mp_fwrite.obj \ |
145 | ltm/bn_mp_gcd.obj ltm/bn_mp_get_int.obj ltm/bn_mp_get_long.obj ltm/bn_mp_get_long_long.obj \ | |
146 | ltm/bn_mp_grow.obj ltm/bn_mp_import.obj ltm/bn_mp_init.obj ltm/bn_mp_init_copy.obj \ | |
147 | ltm/bn_mp_init_multi.obj ltm/bn_mp_init_set.obj ltm/bn_mp_init_set_int.obj ltm/bn_mp_init_size.obj \ | |
148 | ltm/bn_mp_invmod.obj ltm/bn_mp_invmod_slow.obj ltm/bn_mp_is_square.obj ltm/bn_mp_jacobi.obj \ | |
149 | ltm/bn_mp_karatsuba_mul.obj ltm/bn_mp_karatsuba_sqr.obj ltm/bn_mp_lcm.obj ltm/bn_mp_lshd.obj \ | |
150 | ltm/bn_mp_mod.obj ltm/bn_mp_mod_2d.obj ltm/bn_mp_mod_d.obj ltm/bn_mp_montgomery_calc_normalization.obj \ | |
145 | ltm/bn_mp_gcd.obj ltm/bn_mp_get_int.obj ltm/bn_mp_get_long.obj ltm/bn_mp_grow.obj \ | |
146 | ltm/bn_mp_import.obj ltm/bn_mp_init.obj ltm/bn_mp_init_copy.obj ltm/bn_mp_init_multi.obj \ | |
147 | ltm/bn_mp_init_set.obj ltm/bn_mp_init_set_int.obj ltm/bn_mp_init_size.obj ltm/bn_mp_invmod.obj \ | |
148 | ltm/bn_mp_invmod_slow.obj ltm/bn_mp_is_square.obj ltm/bn_mp_jacobi.obj ltm/bn_mp_karatsuba_mul.obj \ | |
149 | ltm/bn_mp_karatsuba_sqr.obj ltm/bn_mp_lcm.obj ltm/bn_mp_lshd.obj ltm/bn_mp_mod.obj \ | |
150 | ltm/bn_mp_mod_2d.obj ltm/bn_mp_mod_d.obj ltm/bn_mp_montgomery_calc_normalization.obj \ | |
151 | 151 | ltm/bn_mp_montgomery_reduce.obj ltm/bn_mp_montgomery_setup.obj ltm/bn_mp_mul.obj \ |
152 | 152 | ltm/bn_mp_mulmod.obj ltm/bn_mp_mul_2.obj ltm/bn_mp_mul_2d.obj ltm/bn_mp_mul_d.obj \ |
153 | 153 | ltm/bn_mp_neg.obj ltm/bn_mp_n_root.obj ltm/bn_mp_n_root_ex.obj ltm/bn_mp_or.obj ltm/bn_mp_prime_fermat.obj \ |
158 | 158 | ltm/bn_mp_reduce_2k.obj ltm/bn_mp_reduce_2k_l.obj ltm/bn_mp_reduce_2k_setup.obj ltm/bn_mp_reduce_2k_setup_l.obj \ |
159 | 159 | ltm/bn_mp_reduce_is_2k.obj ltm/bn_mp_reduce_is_2k_l.obj ltm/bn_mp_reduce_setup.obj \ |
160 | 160 | ltm/bn_mp_rshd.obj ltm/bn_mp_set.obj ltm/bn_mp_set_int.obj ltm/bn_mp_set_long.obj \ |
161 | ltm/bn_mp_set_long_long.obj ltm/bn_mp_shrink.obj ltm/bn_mp_signed_bin_size.obj ltm/bn_mp_sqr.obj \ | |
162 | ltm/bn_mp_sqrmod.obj ltm/bn_mp_sqrt.obj ltm/bn_mp_sqrtmod_prime.obj ltm/bn_mp_sub.obj \ | |
163 | ltm/bn_mp_submod.obj ltm/bn_mp_sub_d.obj ltm/bn_mp_toom_mul.obj ltm/bn_mp_toom_sqr.obj \ | |
164 | ltm/bn_mp_toradix.obj ltm/bn_mp_toradix_n.obj ltm/bn_mp_to_signed_bin.obj ltm/bn_mp_to_signed_bin_n.obj \ | |
161 | ltm/bn_mp_shrink.obj ltm/bn_mp_signed_bin_size.obj ltm/bn_mp_sqr.obj ltm/bn_mp_sqrmod.obj \ | |
162 | ltm/bn_mp_sqrt.obj ltm/bn_mp_sqrtmod_prime.obj ltm/bn_mp_sub.obj ltm/bn_mp_submod.obj \ | |
163 | ltm/bn_mp_sub_d.obj ltm/bn_mp_toom_mul.obj ltm/bn_mp_toom_sqr.obj ltm/bn_mp_toradix.obj \ | |
164 | ltm/bn_mp_toradix_n.obj ltm/bn_mp_to_signed_bin.obj ltm/bn_mp_to_signed_bin_n.obj \ | |
165 | 165 | ltm/bn_mp_to_unsigned_bin.obj ltm/bn_mp_to_unsigned_bin_n.obj ltm/bn_mp_unsigned_bin_size.obj \ |
166 | 166 | ltm/bn_mp_xor.obj ltm/bn_mp_zero.obj ltm/bn_prime_tab.obj ltm/bn_reverse.obj ltm/bn_s_mp_add.obj \ |
167 | 167 | ltm/bn_s_mp_exptmod.obj ltm/bn_s_mp_mul_digs.obj ltm/bn_s_mp_mul_high_digs.obj ltm/bn_s_mp_sqr.obj \ |
0 | #include "tommath_private.h" | |
1 | #ifdef BN_MP_GET_LONG_LONG_C | |
2 | /* LibTomMath, multiple-precision integer library -- Tom St Denis | |
3 | * | |
4 | * LibTomMath is a library that provides multiple-precision | |
5 | * integer arithmetic as well as number theoretic functionality. | |
6 | * | |
7 | * The library was designed directly after the MPI library by | |
8 | * Michael Fromberger but has been written from scratch with | |
9 | * additional optimizations in place. | |
10 | * | |
11 | * The library is free for all purposes without any express | |
12 | * guarantee it works. | |
13 | */ | |
14 | ||
15 | /* get the lower unsigned long long of an mp_int, platform dependent */ | |
16 | unsigned long long mp_get_long_long(const mp_int *a) | |
17 | { | |
18 | int i; | |
19 | unsigned long long res; | |
20 | ||
21 | if (a->used == 0) { | |
22 | return 0; | |
23 | } | |
24 | ||
25 | /* get number of digits of the lsb we have to read */ | |
26 | i = MIN(a->used, ((((int)sizeof(unsigned long long) * CHAR_BIT) + DIGIT_BIT - 1) / DIGIT_BIT)) - 1; | |
27 | ||
28 | /* get most significant digit of result */ | |
29 | res = DIGIT(a, i); | |
30 | ||
31 | #if DIGIT_BIT < 64 | |
32 | while (--i >= 0) { | |
33 | res = (res << DIGIT_BIT) | DIGIT(a, i); | |
34 | } | |
35 | #endif | |
36 | return res; | |
37 | } | |
38 | #endif |
0 | #include "tommath_private.h" | |
1 | #ifdef BN_MP_SET_LONG_LONG_C | |
2 | /* LibTomMath, multiple-precision integer library -- Tom St Denis | |
3 | * | |
4 | * LibTomMath is a library that provides multiple-precision | |
5 | * integer arithmetic as well as number theoretic functionality. | |
6 | * | |
7 | * The library was designed directly after the MPI library by | |
8 | * Michael Fromberger but has been written from scratch with | |
9 | * additional optimizations in place. | |
10 | * | |
11 | * The library is free for all purposes without any express | |
12 | * guarantee it works. | |
13 | */ | |
14 | ||
15 | /* set a platform dependent unsigned long long int */ | |
16 | MP_SET_XLONG(mp_set_long_long, unsigned long long) | |
17 | #endif | |
18 | ||
19 | /* ref: $Format:%D$ */ | |
20 | /* git commit: $Format:%H$ */ | |
21 | /* commit time: $Format:%ai$ */ |
77 | 77 | |
78 | 78 | /* this is to make porting into LibTomCrypt easier :-) */ |
79 | 79 | typedef unsigned int mp_digit; |
80 | typedef unsigned long long mp_word; | |
80 | #ifdef _MSC_VER | |
81 | typedef unsigned __int64 mp_word | |
82 | #else | |
83 | typedef unsigned long long mp_word; /* PATCHED */ | |
84 | #endif | |
81 | 85 | |
82 | 86 | # ifdef MP_31BIT |
83 | 87 | /* this is an extension that uses 31-bit digits */ |
206 | 210 | int mp_set_long(mp_int *a, unsigned long b); |
207 | 211 | |
208 | 212 | /* set a platform dependent unsigned long long value */ |
209 | int mp_set_long_long(mp_int *a, unsigned long long b); | |
213 | /* int mp_set_long_long(mp_int *a, unsigned long long b); */ | |
210 | 214 | |
211 | 215 | /* get a 32-bit value */ |
212 | 216 | unsigned long mp_get_int(const mp_int *a); |
215 | 219 | unsigned long mp_get_long(const mp_int *a); |
216 | 220 | |
217 | 221 | /* get a platform dependent unsigned long long value */ |
218 | unsigned long long mp_get_long_long(const mp_int *a); | |
222 | /* unsigned long long mp_get_long_long(const mp_int *a); */ | |
219 | 223 | |
220 | 224 | /* initialize and set a digit */ |
221 | 225 | int mp_init_set(mp_int *a, mp_digit b); |
4 | 4 | use File::Slurper qw(read_text write_text); |
5 | 5 | use FindBin; |
6 | 6 | |
7 | #remove test files | |
8 | 7 | warn "gonna remove unwanted..\n"; |
9 | 8 | system 'rm', '-rf', "$FindBin::Bin/ltc/encauth/ocb/"; |
10 | 9 | system 'rm', '-rf', "$FindBin::Bin/ltc/modes/f8/"; |
12 | 11 | system 'rm', '-rf', "$FindBin::Bin/ltc/modes/xts/"; |
13 | 12 | system 'rm', '-rf', "$FindBin::Bin/ltc/pk/katja/"; |
14 | 13 | system 'rm', '-rf', "$FindBin::Bin/ltc/math/gmp_desc.c"; |
14 | ||
15 | ### get rid of bn_mp_set_long_long + bn_mp_get_long_long | |
16 | system 'rm', '-rf', "$FindBin::Bin/ltm/bn_mp_set_long_long.c"; | |
17 | system 'rm', '-rf', "$FindBin::Bin/ltm/bn_mp_get_long_long.c"; | |
18 | system 'sed', '-i', 's,^\(int *mp_set_long_long.*\),/* \1 */,', 'src//ltm/tommath.h'; | |
19 | system 'sed', '-i', 's,^\(unsigned *long *long *mp_get_long_long.*\),/* \1 */,', 'src//ltm/tommath.h'; | |
20 | ||
21 | ### MSVC hack required for VC6 compatibility | |
22 | # #ifdef _MSC_VER | |
23 | # typedef unsigned __int64 mp_word | |
24 | # #else | |
25 | # typedef unsigned long long mp_word; | |
26 | # #endif | |
27 | system 'sed', '-i', 's,^\(typedef *unsigned *long *long *mp_word;\)$,#ifdef _MSC_VER\ntypedef unsigned __int64 mp_word\n#else\n\1 /* PATCHED */\n#endif,', 'src//ltm/tommath.h'; | |
28 | ||
15 | 29 | find({ wanted=>sub { unlink $_ if -f $_ && $_ =~ /test\.c$/ && $_ !~ /sha3_test.c$/ }, no_chdir=>1 }, "$FindBin::Bin/ltc"); |
16 | 30 | find({ wanted=>sub { unlink $_ if -f $_ && $_ =~ /\.o$/ }, no_chdir=>1 }, "$FindBin::Bin/ltm", "$FindBin::Bin/ltc"); |
17 | 31 |