BN_NUM_BYTES(3) | Library Functions Manual | BN_NUM_BYTES(3) |

`BN_num_bytes`

,
`BN_num_bits`

,
`BN_num_bits_word`

—
get BIGNUM size

```
#include
<openssl/bn.h>
```

`BN_num_bytes`

(`BN_num_bits`

(`BN_num_bits_word`

(`BN_num_bytes`

() returns the size of a
`BN_num_bits_word`

() returns the number of
significant bits in a word. As an example, 0x00000432 returns 11, not 16 or
32. Basically, except for a zero, it returns
floor(log2(`w`))
+ 1.

`BN_num_bits`

() returns the number of
significant bits in a `BN_num_bits_word`

().
`BN_num_bytes`

() is a macro.
Some have tried using `BN_num_bits`

() on
individual numbers in RSA keys, DH keys and DSA keys, and found that they
don't always come up with the number of bits they expected (something like
512, 1024, 2048, ...). This is because generating a number with some specific
number of bits doesn't always set the highest bits, thereby making the number
of `BN_num_bytes`

() and multiply with 8
(although there's no real guarantee that will match the "key size",
just a lot more probability).
`BN_num_bytes`

() and
`BN_num_bits`

() first appeared in SSLeay
0.5.1. `BN_num_bits_word`

() first appeared in
SSLeay 0.5.2. These functions have been available since
OpenBSD 2.4.March 27, 2018 | OpenBSD-current |