BN_CMP(3) | Library Functions Manual | BN_CMP(3)

# NAME

`BN_cmp`, `BN_ucmp`, `BN_is_zero`, `BN_is_one`, `BN_is_word`, `BN_abs_is_word`, `BN_is_odd` — BIGNUM comparison and test functions

# SYNOPSIS

library “libcrypto”
`#include <openssl/bn.h>`

int
`BN_cmp`(const BIGNUM *a, const BIGNUM *b);

int
`BN_ucmp`(const BIGNUM *a, const BIGNUM *b);

int
`BN_is_zero`(const BIGNUM *a);

int
`BN_is_one`(const BIGNUM *a);

int
`BN_is_word`(const BIGNUM *a, const BN_ULONG w);

int
`BN_abs_is_word`(const BIGNUM *a, const BN_ULONG w);

int
`BN_is_odd`(const BIGNUM *a);

# DESCRIPTION

`BN_cmp`() compares the numbers a and b. `BN_ucmp`() compares their absolute values.

`BN_is_zero`(), `BN_is_one`() and `BN_is_word`() test if a equals 0, 1, or w respectively. `BN_abs_is_word`() tests if the absolute value of a equals w. `BN_is_odd`() tests if a is odd.

BN_ULONG is a macro that expands to unsigned long (= uint64_t) on `_LP64` platforms and unsigned int (= uint32_t) elsewhere.

# RETURN VALUES

`BN_cmp`() returns -1 if a<b, 0 if a==b, and 1 if a>b. `BN_ucmp`() is the same using the absolute values of a and b.

`BN_is_zero`(), `BN_is_one`(), `BN_is_word`(), `BN_abs_is_word`(), and `BN_is_odd`() return 1 if the condition is true, 0 otherwise.

# SEE ALSO

BN_new(3)

# HISTORY

`BN_cmp`(), `BN_ucmp`(), `BN_is_zero`(), `BN_is_one`(), and `BN_is_word`() first appeared in SSLeay 0.5.1. `BN_is_odd`() first appeared in SSLeay 0.8.0. These functions have been available since OpenBSD 2.4.

`BN_abs_is_word`() first appeared in OpenSSL 0.9.7 and has been available since OpenBSD 3.2.

June 8, 2025 | Debian