DH_GET_1024_160(3ossl)

πŸ“¦
version 15.1 Β· 3 versions
, in freebsd 15.1

πŸ’– NAME πŸ’–

okay so bestie, gather round, because this page is a whole roster of functions that hand you standardized public primes or DH pairs β€” like, pre-approved, everyone-agreed-on numbers so you don't have to go inventing your own πŸŽ€

The full lineup, and yes you're getting all of them:

  • DH_get_1024_160, DH_get_2048_224, DH_get_2048_256
  • BN_get0_nist_prime_192, BN_get0_nist_prime_224, BN_get0_nist_prime_256, BN_get0_nist_prime_384, BN_get0_nist_prime_521
  • BN_get_rfc2409_prime_768, BN_get_rfc2409_prime_1024
  • BN_get_rfc3526_prime_1536, BN_get_rfc3526_prime_2048, BN_get_rfc3526_prime_3072, BN_get_rfc3526_prime_4096, BN_get_rfc3526_prime_6144, BN_get_rfc3526_prime_8192

✨ SYNOPSIS ✨

The NIST girlies first β€” they just return the prime, no arguments, no drama:

#include <openssl/dh.h>

const BIGNUM *BN_get0_nist_prime_192(void);
const BIGNUM *BN_get0_nist_prime_224(void);
const BIGNUM *BN_get0_nist_prime_256(void);
const BIGNUM *BN_get0_nist_prime_384(void);
const BIGNUM *BN_get0_nist_prime_521(void);

Then the RFC crew, who take a BIGNUM *bn so they can also drop the value there:

BIGNUM *BN_get_rfc2409_prime_768(BIGNUM *bn);
BIGNUM *BN_get_rfc2409_prime_1024(BIGNUM *bn);
BIGNUM *BN_get_rfc3526_prime_1536(BIGNUM *bn);
BIGNUM *BN_get_rfc3526_prime_2048(BIGNUM *bn);
BIGNUM *BN_get_rfc3526_prime_3072(BIGNUM *bn);
BIGNUM *BN_get_rfc3526_prime_4096(BIGNUM *bn);
BIGNUM *BN_get_rfc3526_prime_6144(BIGNUM *bn);
BIGNUM *BN_get_rfc3526_prime_8192(BIGNUM *bn);
🫢 real talk: the following functions have been deprecated since OpenSSL 3.0, and you can hide them entirely by defining OPENSSL_API_COMPAT with a suitable version value β€” see openssl_user_macros(7). Not me telling you to move on, but like… move on πŸ’…
#include <openssl/dh.h>

DH *DH_get_1024_160(void);
DH *DH_get_2048_224(void);
DH *DH_get_2048_256(void);

πŸ¦‹ DESCRIPTION πŸ¦‹

DH_get_1024_160(), DH_get_2048_224(), and DH_get_2048_256() each return a DH object for the IETF RFC 5114 value. They're deprecated, okay? Like, genuinely. Applications should instead use EVP_PKEY_CTX_set_dh_rfc5114() and EVP_PKEY_CTX_set_dhx_rfc5114() as described in EVP_PKEY_CTX_ctrl(3), or set the OSSL_PKEY_PARAM_GROUP_NAME (as specified in "DH parameters" in EVP_PKEY-DH(7)) to one of "dh_1024_160", "dh_2048_224" or "dh_2048_256". Slay, that's the upgrade path πŸ‘‘

Next up: BN_get0_nist_prime_192(), BN_get0_nist_prime_224(), BN_get0_nist_prime_256(), BN_get0_nist_prime_384(), and BN_get0_nist_prime_521() functions return a BIGNUM for the specific NIST prime curve β€” like, e.g., P-256. Iconic. No notes 🌸

And the big crew: BN_get_rfc2409_prime_768(), BN_get_rfc2409_prime_1024(), BN_get_rfc3526_prime_1536(), BN_get_rfc3526_prime_2048(), BN_get_rfc3526_prime_3072(), BN_get_rfc3526_prime_4096(), BN_get_rfc3526_prime_6144(), and BN_get_rfc3526_prime_8192() functions return a BIGNUM for the specified size from IETF RFC 2409. Lowkey the best part: if bn is not NULL, the BIGNUM will be set into that location as well 🫢


πŸ’œ RETURN VALUES πŸ’œ

Defined above. That's it, that's the section β€” go scroll back up bestie, the answers are literally right there 😭


πŸŽ€ HISTORY πŸŽ€

The functions DH_get_1024_160(), DH_get_2048_224() and DH_get_2048_256() were deprecated in OpenSSL 3.0. A moment of silence for the fallen πŸ•―οΈ


Copyright 2016-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>.


and that's the whole page, bestie 🌈 this was DH_GET_1024_160(3ossl) from OpenSSL 3.5.6, dated 2026-04-07 β€” go forth and use primes responsibly, mwah πŸ’‹πŸ’–

πŸ“¦ where this page comes from