[openssl-users] How to get a bye or word from BIGNUM in OpenSSL 1.1?

Jakob Bohm jb-openssl at wisemo.com
Wed Aug 2 04:38:53 UTC 2017

On 02/08/2017 04:21, Jeffrey Walton wrote:
> I'm trying to extract the low-order byte or word from a BIGNUM in
> OpenSSL 1.1. We were told to use BN_bn2binpad, but its not clear to me
> how to specify the location we want to extract.
> For example:
>      const char v[] = "ffeeddccbbaa99887766554433221100";
>      BIGNUM n = BN_new();
>      if (BN_hex2bn(&n, v))
>      {
>          fprintf(stderr, "failed to parse BIGNUM\n");
>          exit (1);
>      }
> I don't see how to get the low-order word 33221100, or the second to
> last byte 11.
> Here' the documentation but I don't see how to do it:
> https://www.openssl.org/docs/man1.1.0/crypto/BN_bn2binpad.html. Other
> libraries, like Java, Botan and Crypto++ allow us to specify a potion
> to extract from in cases like these.
> How do we extract bytes or words from a BIGNUM?
> Thanks in advance.
BN_bn2binpad (and it's friends) always give you *all* the bytes
in the number in a buffer of you own.  You can then extract the
bytes from there.

If you care mostly about the least significant bytes, using
BN_bn2lebinpad may be easier than BN_bn2binpad, as the least
significant bytes will be first, not last, in the result.


Jakob Bohm, CIO, Partner, WiseMo A/S.  https://www.wisemo.com
Transformervej 29, 2860 Søborg, Denmark.  Direct +45 31 13 16 10
This public discussion message is non-binding and may contain errors.
WiseMo - Remote Service Management for PCs, Phones and Embedded

More information about the openssl-users mailing list