Crypt::RSA::Key - RSA Key Pair Generator.
my $keychain = new Crypt::RSA::Key;
my ($public, $private) = $keychain->generate (
Identity => 'Lord Macbeth <macbeth@glamis.com>',
Size => 2048,
Password => 'A day so foul & fair',
Verbosity => 1,
) or die $keychain->errstr();
This module provides a method to generate an RSA key pair.
generate() generates an RSA key of specified bitsize. It returns a list
of two elements, a Crypt::RSA::Key::Public object that holds the public part
of the key pair and a Crypt::RSA::Key::Private object that holds that private
part. On failure, it returns undef and sets
$self->errstr to appropriate error string.
generate() takes a hash argument with the following keys:
- Size
- Bitsize of the key to be generated. This should be an even integer >
48. Bitsize is a mandatory argument.
- Password
- String with which the private key will be encrypted. If Password is not
provided the key will be stored unencrypted.
- Identity
- A string that identifies the owner of the key. This string usually takes
the form of a name and an email address. The identity is not bound to the
key with a signature. However, a future release or another module will
provide this facility.
- Cipher
- The block cipher which is used for encrypting the private key. Defaults to
`Blowfish'. Cipher could be set to any value that works with
Crypt::CBC(3) and Tie::EncryptedHash(3).
- Verbosity
- When set to 1, generate() will draw a progress display on
STDOUT.
- Filename
- The generated key pair will be written to disk, in
$Filename.public and
$Filename.private files, if this argument is
provided. Disk writes can be deferred by skipping this argument and
achieved later with the write() method of
Crypt::RSA::Key::Public(3) and
Crypt::RSA::Key::Private(3).
- KF
- A string that specifies the key format. As of this writing, two key
formats, `Native' and `SSH', are supported. KF defaults to `Native'.
- SKF
- Secret (Private) Key Format. Instead of specifying KF, the user could
choose to specify secret and public key formats separately. The value for
SKF can be a string ("Native" or "SSH") or a hash
reference that specifies a module name, its constructor and constructor
arguments. The specified module is loaded with Class::Loader(3) and
must be interface compatible with Crypt::RSA::Key::Private(3).
- PKF
- Public Key Format. This option is like SKF but for the public key.
See ERROR HANDLING in Crypt::RSA(3) manpage.
There's an inefficiency in the way generate() ensures the key pair is
exactly Size bits long. This will be fixed in a future release.
Vipul Ved Prakash, <mail@vipul.net>
Crypt::RSA(3), Crypt::RSA::Key::Public(3),
Crypt::RSA::Key::Private(3), Crypt::Primes(3),
Tie::EncryptedHash(3), Class::Loader(3)