1 #include "tommath_private.h"
2 #ifdef BN_MP_TO_UNSIGNED_BIN_C
3 /* LibTomMath, multiple-precision integer library -- Tom St Denis
4  *
5  * LibTomMath is a library that provides multiple-precision
6  * integer arithmetic as well as number theoretic functionality.
7  *
8  * The library was designed directly after the MPI library by
9  * Michael Fromberger but has been written from scratch with
10  * additional optimizations in place.
11  *
12  * SPDX-License-Identifier: Unlicense
13  */
14 
15 /* store in unsigned [big endian] format */
mp_to_unsigned_bin(const mp_int * a,unsigned char * b)16 int mp_to_unsigned_bin(const mp_int *a, unsigned char *b)
17 {
18    int     x, res;
19    mp_int  t;
20 
21    if ((res = mp_init_copy(&t, a)) != MP_OKAY) {
22       return res;
23    }
24 
25    x = 0;
26    while (mp_iszero(&t) == MP_NO) {
27 #ifndef MP_8BIT
28       b[x++] = (unsigned char)(t.dp[0] & 255u);
29 #else
30       b[x++] = (unsigned char)(t.dp[0] | ((t.dp[1] & 1u) << 7));
31 #endif
32       if ((res = mp_div_2d(&t, 8, &t, NULL)) != MP_OKAY) {
33          mp_clear(&t);
34          return res;
35       }
36    }
37    bn_reverse(b, x);
38    mp_clear(&t);
39    return MP_OKAY;
40 }
41 #endif
42 
43 /* ref:         $Format:%D$ */
44 /* git commit:  $Format:%H$ */
45 /* commit time: $Format:%ai$ */
46