DSA_SIG_NEW(3) | Library Functions Manual | DSA_SIG_NEW(3)

# NAME

`DSA_SIG_new`, `DSA_SIG_free`, `DSA_SIG_get0`, `DSA_SIG_set0` — manipulate DSA signature objects

# SYNOPSIS

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

DSA_SIG *
`DSA_SIG_new`(void);

void
`DSA_SIG_free`(DSA_SIG *sig);

void
`DSA_SIG_get0`(const DSA_SIG *sig, const BIGNUM **r, const BIGNUM **s);

int
`DSA_SIG_set0`(DSA_SIG *sig, BIGNUM *r, BIGNUM *s);

# DESCRIPTION

`DSA_SIG_new`() allocates an empty DSA_SIG structure.

`DSA_SIG_free`() frees the DSA_SIG structure and its components. The values are erased before the memory is returned to the system. If sig is a `NULL` pointer, no action occurs.

`DSA_SIG_get0`() retrieves internal pointers to the r and s values contained in sig.

The r and s values can be set by calling `DSA_SIG_set0`(). Calling this function transfers the memory management of the values to sig, and therefore they should not be freed by the caller.

# RETURN VALUES

If the allocation fails, `DSA_SIG_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_SIG_set0`() returns 1 on success or 0 on failure.

# SEE ALSO

DSA_do_sign(3), DSA_new(3)

# HISTORY

`DSA_SIG_new`() and `DSA_SIG_free`() first appeared in OpenSSL 0.9.3 and have been available since OpenBSD 2.6.

`DSA_SIG_get0`() and `DSA_SIG_set0`() first appeared in OpenSSL 1.1.0 and have been available since OpenBSD 6.3.

June 8, 2025 | Debian