BN_CMP(3ossl)

πŸ“¦ version 15.1, in freebsd 15.1

okay bestie, welcome to BN_CMP from the 3ossl manual β€” the BIGNUM comparison and test functions are about to get the group-chat treatment. πŸ’…βœ¨

🌸 NAME 🌸

BN_cmp, BN_ucmp, BN_is_zero, BN_is_one, BN_is_word, BN_abs_is_word, BN_is_odd, BN_are_coprime β€” these are the BIGNUM comparison and test functions, and yes, they ate. 🫢

✨ SYNOPSIS ✨

#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);

int BN_are_coprime(BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);

πŸ’– DESCRIPTION πŸ’–

BN_cmp() compares the numbers a and b β€” full comparison, sign and all. BN_ucmp() compares their absolute values, like the absolute-value remix. 🌈

BN_is_zero(), BN_is_one(), BN_is_word() and BN_abs_is_word() test if a equals 0, 1, w, or |w| respectively. BN_is_odd() tests if a is odd. No cap, that's the whole vibe check. πŸ¦‹

BN_are_coprime() determines if a and b are coprime. ctx is used internally for storing temporary variables. πŸŽ€

🚨 bestie, important: the values of a and b and ctx must not be NULL. Like, do not play with that. 😭

πŸ‘‘ 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, and 0 otherwise.
  • BN_are_coprime() returns 1 if the BIGNUMs are coprime, otherwise it returns 0.

πŸ¦‹ HISTORY πŸ¦‹

Prior to OpenSSL 1.1.0, BN_is_zero(), BN_is_one(), BN_is_word(), BN_abs_is_word() and BN_is_odd() were macros. Plot twist era. 😭

The function BN_are_coprime() was added in OpenSSL 3.1. Fresh off the press, iykyk. ✨

Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at <https://www.openssl.org/source/license.html>. πŸ’œ


bye bestie πŸ’– this iconic little page is from OpenSSL version 3.5.6, dated 2026-04-07 β€” footer handled, periodt. πŸŽ€βœ¨

πŸ“¦ where this page comes from