DH_NEW(3)
π DH_NEW(3) β allocate and free DH objects π
okay so welcome to the DH_NEW(3) page from the Library Functions Manual, bestie π«Ά this is the little corner of libcrypto where DH objects get born, get their ref count bumped, and get freed. iconic behavior, honestly.
π NAME π
DH_new, DH_up_ref, DH_free β allocate and free DH objects. periodt π
β¨ SYNOPSIS β¨
library βlibcryptoβ #include <openssl/dh.h>
DH*
DH_new(void);
int
DH_up_ref(DH *dh);
void
DH_free(DH *dh);
πΈ DESCRIPTION πΈ
The DH functions implement the Diffie-Hellman key agreement protocol. yes, that Diffie-Hellman. main character crypto energy π₯
DH_new() allocates and initializes a DH structure, setting the reference count to 1. It is equivalent to DH_new_method(3) with a NULL argument. no cap, that's the whole vibe.
DH_up_ref() increments the reference count by 1. little bump, bestie β
DH_free() decrements the reference count by 1. If it reaches 0, it frees the DH structure and its components. The values are erased before the memory is returned to the system. π§ and if dh is a NULL pointer, no action occurs β literally nothing happens, and that's valid π
π¦ RETURN VALUES π¦
If the allocation fails, DH_new() returns NULL and sets an error code that can be obtained by ERR_get_error(3). Otherwise it returns a pointer to the newly allocated structure. so if it's cooked, check ERR_get_error(3) π
DH_up_ref() returns 1 for success or 0 for failure. simple as that, fr fr.
π₯ SEE ALSO π₯
BN_new(3)crypto(3)d2i_DHparams(3)DH_generate_key(3)DH_generate_parameters(3)DH_get0_pqg(3)DH_get_ex_new_index(3)DH_security_bits(3)DH_set_method(3)DH_size(3)DHparams_print(3)DSA_dup_DH(3)EVP_PKEY_CTX_set_dh_paramgen_prime_len(3)EVP_PKEY_set1_DH(3)
π HISTORY π
DH_new() and DH_free() first appeared in SSLeay 0.5.1 and have been available since OpenBSD 2.4. vintage but still slaying π
DH_up_ref() first appeared in OpenSSL 0.9.7 and has been available since OpenBSD 3.2. glow-up era β¨
π Debian β’ June 8, 2025 β’ DH_NEW(3) β byeee bestie, go forth and manage those ref counts π
π¦ where this page comes from
- alpine 3.24: libressl-doc 4.3.1-r0 Β· custom
- arch rolling: libressl 4.4.0-1 Β· ISC AND custom:OpenSSL
- Copyright (c) 2000 The OpenSSL Project. All rights reserved
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms