---
name: "DSA_generate_key"
section: "3ssl"
platform: "linux"
package: "openssl"
version: "3.6.5-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/DSA_generate_key"
---

# DSA\_generate\_key(3ssl)

generate DSA key pair

## NAME

DSA\_generate\_key - generate DSA key pair

## SYNOPSIS

```
 #include <openssl/dsa.h>
```

The following functions have been deprecated since OpenSSL 3.0, and can be hidden entirely by defining **OPENSSL\_API\_COMPAT** with a suitable version value, see **openssl\_user\_macros**(7):

```
 int DSA_generate_key(DSA *a);
```

## DESCRIPTION

All of the functions described on this page are deprecated. Applications should instead use **EVP\_PKEY\_keygen\_init**(3) and **EVP\_PKEY\_keygen**(3) as described in **EVP\_PKEY-DSA**(7).

**DSA\_generate\_key()** expects **a** to contain DSA parameters. It generates a new key pair and stores it in **a-\>pub\_key** and **a-\>priv\_key**.

The random generator must be seeded prior to calling **DSA\_generate\_key()**. If the automatic seeding or reseeding of the OpenSSL CSPRNG fails due to external circumstances (see **RAND**(7)), the operation will fail.

## RETURN VALUES

**DSA\_generate\_key()** returns 1 on success, 0 otherwise. The error codes can be obtained by **ERR\_get\_error**(3).

## SEE ALSO

**DSA\_new**(3), **ERR\_get\_error**(3), **RAND\_bytes**(3), **DSA\_generate\_parameters\_ex**(3)

## HISTORY

This function was deprecated in OpenSSL 3.0.

## COPYRIGHT

Copyright 2000-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\>.
