---
name: "Crypt::DSA::KeyChain"
section: "3pm"
platform: "linux"
package: "libcrypt-dsa-perl"
version: "1.19-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Crypt::DSA::KeyChain"
---

# Crypt::DSA::KeyChain(3pm)

DSA key generation system

## NAME

Crypt::DSA::KeyChain - DSA key generation system

## SYNOPSIS

```
    use Crypt::DSA::KeyChain;
    my $keychain = Crypt::DSA::KeyChain->new;
    my $key = $keychain->generate_params(
                    Size      => 512,
                    Seed      => $seed,
                    Verbosity => 1,
              );
    $keychain->generate_keys($key);
```

## DESCRIPTION

*Crypt::DSA::KeyChain* is a lower-level interface to key generation than the interface in *Crypt::DSA* (the *keygen* method). It allows you to separately generate the *p*, *q*, and *g* key parameters, given an optional starting seed, and a mandatory bit size for *p* (*q* and *g* are 160 bits each).

You can then call *generate\_keys* to generate the public and private portions of the key.

## USAGE

### $keychain = Crypt::DSA::KeyChain-\>new

Constructs a new *Crypt::DSA::KeyChain* object. At the moment this isn't particularly useful in itself, other than being the object you need in order to call the other methods.

Returns the new object.

### $key = $keychain-\>generate\_params(%arg)

Generates a set of DSA parameters: the *p*, *q*, and *g* values of the key. This involves finding primes, and as such it can be a relatively long process.

When invoked in scalar context, returns a new *Crypt::DSA::Key* object.

In list context, returns the new *Crypt::DSA::Key* object, along with: the value of the internal counter when a suitable prime *p* was found; the value of *h* when *g* was derived; and the value of the seed (a 20-byte string) when *q* was found. These values aren't particularly useful in normal circumstances, but they could be useful.

*%arg* can contain:

- •

  Size

  The size in bits of the *p* value to generate. The *q* and *g* values are always 160 bits each.

  This argument is mandatory.

- •

  Seed

  A seed with which *q* generation will begin. If this seed does not lead to a suitable prime, it will be discarded, and a new random seed chosen in its place, until a suitable prime can be found.

  This is entirely optional, and if not provided a random seed will be generated automatically.

- •

  Verbosity

  Should be either 0 or 1. A value of 1 will give you a progress meter during *p* and *q* generation--this can be useful, since the process can be relatively long.

  The default is 0.

### $keychain-\>generate\_keys($key)

Generates the public and private portions of the key *$key*, a *Crypt::DSA::Key* object.

## AUTHOR & COPYRIGHT

Please see the Crypt::DSA manpage for author, copyright, and license information.
