Mercurial > dropbear
comparison libtommath/bn_mp_get_int.c @ 1436:60fc6476e044
Update to libtommath v1.0
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Sat, 24 Jun 2017 22:37:14 +0800 |
parents | 5ff8218bcee9 |
children | 8bba51a55704 |
comparison
equal
deleted
inserted
replaced
1435:f849a5ca2efc | 1436:60fc6476e044 |
---|---|
1 #include <tommath.h> | 1 #include <tommath_private.h> |
2 #ifdef BN_MP_GET_INT_C | 2 #ifdef BN_MP_GET_INT_C |
3 /* LibTomMath, multiple-precision integer library -- Tom St Denis | 3 /* LibTomMath, multiple-precision integer library -- Tom St Denis |
4 * | 4 * |
5 * LibTomMath is a library that provides multiple-precision | 5 * LibTomMath is a library that provides multiple-precision |
6 * integer arithmetic as well as number theoretic functionality. | 6 * integer arithmetic as well as number theoretic functionality. |
10 * additional optimizations in place. | 10 * additional optimizations in place. |
11 * | 11 * |
12 * The library is free for all purposes without any express | 12 * The library is free for all purposes without any express |
13 * guarantee it works. | 13 * guarantee it works. |
14 * | 14 * |
15 * Tom St Denis, [email protected], http://math.libtomcrypt.com | 15 * Tom St Denis, [email protected], http://libtom.org |
16 */ | 16 */ |
17 | 17 |
18 /* get the lower 32-bits of an mp_int */ | 18 /* get the lower 32-bits of an mp_int */ |
19 unsigned long mp_get_int(mp_int * a) | 19 unsigned long mp_get_int(mp_int * a) |
20 { | 20 { |
21 int i; | 21 int i; |
22 unsigned long res; | 22 mp_min_u32 res; |
23 | 23 |
24 if (a->used == 0) { | 24 if (a->used == 0) { |
25 return 0; | 25 return 0; |
26 } | 26 } |
27 | 27 |
28 /* get number of digits of the lsb we have to read */ | 28 /* get number of digits of the lsb we have to read */ |
29 i = MIN(a->used,(int)((sizeof(unsigned long)*CHAR_BIT+DIGIT_BIT-1)/DIGIT_BIT))-1; | 29 i = MIN(a->used,(int)(((sizeof(unsigned long) * CHAR_BIT) + DIGIT_BIT - 1) / DIGIT_BIT)) - 1; |
30 | 30 |
31 /* get most significant digit of result */ | 31 /* get most significant digit of result */ |
32 res = DIGIT(a,i); | 32 res = DIGIT(a,i); |
33 | 33 |
34 while (--i >= 0) { | 34 while (--i >= 0) { |
35 res = (res << DIGIT_BIT) | DIGIT(a,i); | 35 res = (res << DIGIT_BIT) | DIGIT(a,i); |
36 } | 36 } |
37 | 37 |
38 /* force result to 32-bits always so it is consistent on non 32-bit platforms */ | 38 /* force result to 32-bits always so it is consistent on non 32-bit platforms */ |
39 return res & 0xFFFFFFFFUL; | 39 return res & 0xFFFFFFFFUL; |
40 } | 40 } |
41 #endif | 41 #endif |
42 | 42 |
43 /* $Source: /cvs/libtom/libtommath/bn_mp_get_int.c,v $ */ | 43 /* $Source$ */ |
44 /* $Revision: 1.3 $ */ | 44 /* $Revision$ */ |
45 /* $Date: 2006/03/31 14:18:44 $ */ | 45 /* $Date$ */ |