BN_SWAP(3)

πŸ“¦ version 4.1.0, in opensuse-leap 16.0

πŸ’… BN_SWAP(3) πŸ’…

okay bestie, welcome to the Library Functions Manual entry for BN_SWAP(3) β€” yes, we're doing BIGNUM swapping and it's lowkey iconic ✨

🌸 NAME 🌸

  • BN_swap, BN_consttime_swap β€” exchange BIGNUMs

✨ SYNOPSIS ✨

#include <openssl/bn.h>

void
BN_swap(BIGNUM *a, BIGNUM *b);

void
BN_consttime_swap(BN_ULONG condition, BIGNUM *a, BIGNUM *b, int nwords);

πŸ’– DESCRIPTION πŸ’–

BN_swap() and BN_consttime_swap() exchange the values of a and b. That's the whole vibe: value swap 🫢

BN_swap() does it by exchanging the pointers to the data buffers of a and b, and it also exchanges the values of the BN_FLG_STATIC_DATA bits. So it's fast, and its execution time does not depend on any properties of the two numbers. But bestie, be real: execution time obviously differs between swapping (by calling this function) and not swapping (by not calling this function) πŸ’€

BN_consttime_swap() is the careful one: it only performs the exchange if the condition is non-zero; otherwise it has no effect. It implements the exchange by exchanging the contents of the data buffers rather than the pointers to the data buffers. That's slower, but it's implemented in such a way that the execution time is not only independent of the properties of the two numbers, but also independent of the condition argument β€” i.e. the same for swapping or not swapping. Execution time does however grow in an approximately linear manner with the nwords argument πŸ“ˆ

⚠️ Important: BN_consttime_swap() calls abort(3) if at least one of a or b has fewer than nwords data words allocated or more than nwords data words are currently in use in at least one of them. Like, do not play with that 😭

πŸ¦‹ SEE ALSO πŸ¦‹

πŸŽ€ HISTORY πŸŽ€

  • BN_swap() first appeared in OpenSSL 0.9.7 and has been available since OpenBSD 3.2.
  • BN_consttime_swap() first appeared in OpenSSL 1.0.1g and has been available since OpenBSD 5.6.

Bye bestie! This page came from Debian, dated December 19, 2021, and it's BN_SWAP(3) β€” mwah πŸ’‹πŸ’–

πŸ“¦ where this page comes from