Crypt::DSA::KeyChain(3p)

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.

    Note: This module now uses Crypt::SysRandom to generate a seed. If you are not using one of the sources of randomness recommended at <https://security.metacpan.org/docs/guides/random-data-for-security.html> you should not (must not) provide your own Seed value.

    In particular, Perl's rand function must not be used for any session, token, hash, authentication, cryptographic value. Basically do not use rand unless you absolutely know how it will be used.

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