Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32)
(The comments found at the beginning of the groff file "man3/BN_num_bits_word.3ssl".)
BN_num_bits, BN_num_bytes, BN_num_bits_word - get BIGNUM size
int BN_num_bytes(const BIGNUM *a);
int BN_num_bits(const BIGNUM *a);
int BN_num_bits_word(BN_ULONG w);
returns the size of a
BN_num_bits_word() returns the number of significant bits in a word.
If we take 0x00000432 as an example, it returns 11, not 16, not 32.
Basically, except for a zero, it returns floor(log2(w))+1.
BN_num_bits() returns the number of significant bits in a
following the same principle as BN_num_bits_word()
BN_num_bytes() is a macro.
Some have tried using BN_num_bits()
on individual numbers in
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
bits a little lower. If you want to know the ``key
size'' of such a key, either use functions like RSA_size()
, or use BN_num_bytes()
and multiply with 8 (although
there's no real guarantee that will match the ``key size'', just a lot
are available in
all versions of SSLeay and OpenSSL.