## Mercurial > dropbear

### comparison libtommath/bn_mp_get_long.c @ 1655:f52919ffd3b1

Find changesets by keywords (author, files, the commit message), revision
number or hash, or revset expression.

update ltm to 1.1.0 and enable FIPS 186.4 compliant key-generation (#79)
* make key-generation compliant to FIPS 186.4
* fix includes in tommath_class.h
* update fuzzcorpus instead of error-out
* fixup fuzzing make-targets
* update Makefile.in
* apply necessary patches to ltm sources
* clean-up not required ltm files
* update to vanilla ltm 1.1.0
this already only contains the required files
* remove set/get double

author | Steffen Jaeckel <s_jaeckel@gmx.de> |
---|---|

date | Mon, 16 Sep 2019 15:50:38 +0200 |

parents | 60fc6476e044 |

children |

comparison

equal
deleted
inserted
replaced

1654:cc0fc5131c5c | 1655:f52919ffd3b1 |
---|---|

1 #include <tommath_private.h> | 1 #include "tommath_private.h" |

2 #ifdef BN_MP_GET_LONG_C | 2 #ifdef BN_MP_GET_LONG_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. |

7 * | 7 * |

8 * The library was designed directly after the MPI library by | 8 * The library was designed directly after the MPI library by |

9 * Michael Fromberger but has been written from scratch with | 9 * Michael Fromberger but has been written from scratch with |

10 * additional optimizations in place. | 10 * additional optimizations in place. |

11 * | 11 * |

12 * The library is free for all purposes without any express | 12 * SPDX-License-Identifier: Unlicense |

13 * guarantee it works. | |

14 * | |

15 * Tom St Denis, [email protected], http://libtom.org | |

16 */ | 13 */ |

17 | 14 |

18 /* get the lower unsigned long of an mp_int, platform dependent */ | 15 /* get the lower unsigned long of an mp_int, platform dependent */ |

19 unsigned long mp_get_long(mp_int * a) | 16 unsigned long mp_get_long(const mp_int *a) |

20 { | 17 { |

21 int i; | 18 int i; |

22 unsigned long res; | 19 unsigned long res; |

23 | 20 |

24 if (a->used == 0) { | 21 if (a->used == 0) { |

25 return 0; | 22 return 0; |

26 } | 23 } |

27 | 24 |

28 /* get number of digits of the lsb we have to read */ | 25 /* 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; | 26 i = MIN(a->used, ((((int)sizeof(unsigned long) * CHAR_BIT) + DIGIT_BIT - 1) / DIGIT_BIT)) - 1; |

30 | 27 |

31 /* get most significant digit of result */ | 28 /* get most significant digit of result */ |

32 res = DIGIT(a,i); | 29 res = DIGIT(a, i); |

33 | 30 |

34 #if (ULONG_MAX != 0xffffffffuL) || (DIGIT_BIT < 32) | 31 #if (ULONG_MAX != 0xffffffffuL) || (DIGIT_BIT < 32) |

35 while (--i >= 0) { | 32 while (--i >= 0) { |

36 res = (res << DIGIT_BIT) | DIGIT(a,i); | 33 res = (res << DIGIT_BIT) | DIGIT(a, i); |

37 } | 34 } |

38 #endif | 35 #endif |

39 return res; | 36 return res; |

40 } | 37 } |

41 #endif | 38 #endif |

39 | |

40 /* ref: HEAD -> master, tag: v1.1.0 */ | |

41 /* git commit: 08549ad6bc8b0cede0b357a9c341c5c6473a9c55 */ | |

42 /* commit time: 2019-01-28 20:32:32 +0100 */ |