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

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);

*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.

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.

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.

Generates the public and private portions of the key

*$key*,
a

*Crypt::DSA::Key* object.

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