DSA_NEW(3) | Library Functions Manual | DSA_NEW(3)

# NAME

`DSA_new`, `DSA_up_ref`, `DSA_free` — allocate and free DSA objects

# SYNOPSIS

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

DSA*
`DSA_new`(void);

int
`DSA_up_ref`(DSA *dsa);

void
`DSA_free`(DSA *dsa);

# DESCRIPTION

The DSA functions implement the Digital Signature Algorithm.

`DSA_new`() allocates and initializes a DSA structure, setting the reference count to 1. It is equivalent to calling DSA_new_method(3) with a `NULL` argument.

`DSA_up_ref`() increments the reference count by 1.

`DSA_free`() decrements the reference count by 1. If it reaches 0, it frees the DSA structure and its components. The values are erased before the memory is returned to the system. If dsa is a `NULL` pointer, no action occurs.

# RETURN VALUES

If the allocation fails, `DSA_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.

`DSA_up_ref`() returns 1 for success or 0 for failure.

# SEE ALSO

BN_new(3), crypto(3), d2i_DSAPublicKey(3), DH_new(3), DSA_do_sign(3), DSA_dup_DH(3), DSA_generate_key(3), DSA_generate_parameters_ex(3), DSA_get0_pqg(3), DSA_get_ex_new_index(3), DSA_meth_new(3), DSA_print(3), DSA_security_bits(3), DSA_set_method(3), DSA_SIG_new(3), DSA_sign(3), DSA_size(3), EVP_PKEY_set1_DSA(3), RSA_new(3)

# STANDARDS

US Federal Information Processing Standard FIPS 186 (Digital Signature Standard, DSS), ANSI X9.30

# HISTORY

`DSA_new`() and `DSA_free`() first appeared in SSLeay 0.6.0 and have been available since OpenBSD 2.4.

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

June 8, 2025 | Debian