Merge pull request #578 from PX4/fix_mp_prime_strong_lucas_lefridge_compilation
[libtommath.git] / mp_from_sbin.c
blob26eb0f120dbdf45ffd1245e7b7559c2b84a4f03a
1 #include "tommath_private.h"
2 #ifdef MP_FROM_SBIN_C
3 /* LibTomMath, multiple-precision integer library -- Tom St Denis */
4 /* SPDX-License-Identifier: Unlicense */
6 /* read signed bin, big endian, first byte is 0==positive or 1==negative */
7 mp_err mp_from_sbin(mp_int *a, const uint8_t *buf, size_t size)
9 mp_err err;
11 /* read magnitude */
12 if ((err = mp_from_ubin(a, buf + 1, size - 1u)) != MP_OKAY) {
13 return err;
16 /* first byte is 0 for positive, non-zero for negative */
17 a->sign = (buf[0] != (uint8_t)0) ? MP_NEG : MP_ZPOS;
19 return MP_OKAY;
21 #endif