s4:heimdal: import lorikeet-heimdal-202201172009 (commit 5a0b45cd723628b3690ea848548b...
[samba.git] / source4 / heimdal / lib / hcrypto / libtommath / bn_mp_cmp_mag.c
1 #include "tommath_private.h"
2 #ifdef BN_MP_CMP_MAG_C
3 /* LibTomMath, multiple-precision integer library -- Tom St Denis */
4 /* SPDX-License-Identifier: Unlicense */
5
6 /* compare maginitude of two ints (unsigned) */
7 mp_ord mp_cmp_mag(const mp_int *a, const mp_int *b)
8 {
9    int     n;
10    const mp_digit *tmpa, *tmpb;
11
12    /* compare based on # of non-zero digits */
13    if (a->used > b->used) {
14       return MP_GT;
15    }
16
17    if (a->used < b->used) {
18       return MP_LT;
19    }
20
21    /* alias for a */
22    tmpa = a->dp + (a->used - 1);
23
24    /* alias for b */
25    tmpb = b->dp + (a->used - 1);
26
27    /* compare based on digits  */
28    for (n = 0; n < a->used; ++n, --tmpa, --tmpb) {
29       if (*tmpa > *tmpb) {
30          return MP_GT;
31       }
32
33       if (*tmpa < *tmpb) {
34          return MP_LT;
35       }
36    }
37    return MP_EQ;
38 }
39 #endif