NAME

Crypt::OpenSSL::DSA - Digital Signature Algorithm using OpenSSL

SYNOPSIS

use Crypt::OpenSSL::DSA;
my $dsa_priv = Crypt::OpenSSL::DSA->read_priv_key( $filename );
my $sig = $dsa_priv->sign($message);
my $dsa_pub = Crypt::OpenSSL::DSA->read_pub_key( $filename );
my $valid = $dsa_pub->verify($message, $sig);

DESCRIPTION

Crypt::OpenSSL::DSA implements the DSA (Digital Signature Algorithm) signature verification system.

It is a thin XS wrapper to the DSA functions contained in the OpenSSL crypto library, located at http://www.openssl.org

CLASS METHODS

$dsa = Crypt::OpenSSL::DSA->generate_parameters( $bits, $seed );

Returns a new DSA object and generates the p, q and g parameters necessary to generate keys.

bits is the length of the prime to be generated; the DSS allows a maximum of 1024 bits.

$dsa = Crypt::OpenSSL::DSA->read_params( $filename );

Reads in a parameter PEM file and returns a new DSA object with the p, q and g parameters necessary to generate keys.

$dsa = Crypt::OpenSSL::DSA->read_pub_key( $filename );

Reads in a public key PEM file and returns a new DSA object that can be used to verify DSA signatures.

$dsa = Crypt::OpenSSL::DSA->read_priv_key( $filename );

Reads in a private key PEM file and returns a new DSA object that can be used to sign messages.

OBJECT METHODS

$sig = $dsa->sign( $message );

Signs $message, returning the signature. Note that $meesage cannot exceed 20 characters in length.

$dsa is the signer's private key.

$valid = $dsa->verify( $message, $sig );

Verifies that the $sig signature for $message is valid.

$dsa is the signer's public key.

$dsa->write_params( $filename );

Writes the parameters into a PEM file.

$dsa->write_pub_key( $filename );

Writes the public key into a PEM file.

$dsa->write_priv_key( $filename );

Writes the private key into a PEM file.

$p = $dsa->get_p

Returns the prime number in binary format.

$q = $dsa->get_q

Returns the subprime number (q | p-1) in binary format.

$g = $dsa->get_g

Returns the generator of subgroup in binary format.

$pub_key = $dsa->get_pub_key

Returns the public key (y = g^x) in binary format.

NOTES

This module is in early alpha stage. It is suggested that you look over the source code and test cases before using the module. In addition, the API is subject to change.

Crpyt::DSA is a more mature Perl DSA module, but can be difficult to install.

Comments, suggestions, and patches welcome.

AUTHOR

T.J. Mather, <tjmather@tjmather.com>

COPYRIGHT

Copyright (c) 2001 T.J. Mather. Crypt::OpenSSL::DSA is free software; you may redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

Crypt::DSA, Crypt::OpenSSL::RSA