NAME
Crypt::RSA - RSA public-key cryptosystem.
VERSION
$Revision: 1.25 $ (Beta)
$Date: 2001/03/12 16:17:31 $
SYNOPSIS
my $rsa = new Crypt::RSA;
my ($public, $private) = $rsa->keygen ( ... );
my $cyphertext = $rsa->encrypt (
Message => $message,
Key => $public
Armour => 1,
) || die $rsa->errstr();
my $plaintext = $rsa->decrypt (
Cyphertext => $message,
Key => $private
Armour => 1,
) || die $rsa->errstr();
my $signature = $rsa->sign (
Message => $message,
Key => $private
) || die $rsa->errstr();
my $verify = $rsa->verify (
Message => $message,
Signature => $signature,
Key => $public
) || die $rsa->errstr();
DESCRIPTION
Crypt::RSA is a pure-perl, cleanroom implementation of the RSA public-key cryptosystem, written atop the blazingly fast number theory library Pari. As far as possible, Crypt::RSA conforms with PKCS #1, RSA Cryptography Specifications v2.1[13].
This implementation is structured as a bundle of modules that provide key pair generation and management, plaintext-aware encryption and digital signatures with appendix. Crypt::RSA is a DWIM wrapper around the other modules in the bundle.
WARNINGS
This is beta, and largely untested, software. Please use at your own risk!
ASN.1 encoded formats are not supported yet.
METHODS
new()
Constructor.
keygen()
encrypt()
decrypt()
sign()
verify()
MODULES
As of this writing, Crypt::RSA is just a placeholder for the wrapper code, which will appear soon. In the meantime, please use the following modules directly:
- Crypt::RSA::Key
-
RSA key pair generator.
- Crypt::RSA::Key::Public
-
RSA Public Key Management.
- Crypt::RSA::Key::Private
-
RSA Private Key Management.
- Crypt::RSA::EME::OAEP
-
Plaintext-aware encryption with RSA.
- Crypt::RSA::SSA::PSS
-
Probablistic Signature Scheme based on RSA.
ERROR HANDLING
All modules in the Crypt::RSA bundle use a common error handling method. When a method fails it returns a non-true value and sets $self->errstr to a string that explains the reason for the error. Private keys and plaintext representations passed to the method in question are wiped from memory.
AUTHOR
Vipul Ved Prakash, <mail@vipul.net>
ACKNOWLEDGEMENTS
Thanks to Ilya Zakharevich for answering even the goofiest of my questions regarding Math::Pari with unwavering paitence. Shizukesa on #perl for clueing me into the error handling method used in this module and a-mused for good advice.
LICENSE
Copyright (c) 1998-2001, Vipul Ved Prakash. All rights reserved. This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
SEE ALSO
Crypt::RSA::Primitives(3), Crypt::RSA::DataFormat(3), Crypt::RSA::Errorhandler(3), Crypt::RSA::Debug(3), Crypt::Primes(3), Crypt::Random(3), Crypt::CBC(3), Crypt::Blowfish(3), Tie::EncryptedHash(3), Math::Pari(3).
MAILING LIST
pac@lists.vipul.net is a mailing list for discussing development of asymmetric cryptography modules in perl. Please send Crypt::RSA related communications directly to the list address. Subscription interface for pac is at http://lists.vipul.net/mailman/listinfo/pac/
BIBLIOGRAPHY
(Chronologically sorted.)
- 1 R. Rivest, A. Shamir, L. Aldeman. A Method for Obtaining Digital Signatures and Public-Key Cryptosystems (1978).
- 2 U. Maurer. Fast Generation of Prime Numbers and Secure Public-Key Cryptographic Parameters (1994).
- 3 M. Bellare, P. Rogaway. Optimal Asymmetric Encryption - How to Encrypt with RSA (1995).
- 4 M. Bellare, P. Rogaway. The Exact Security of Digital Signatures - How to sign with RSA and Rabin (1996).
- 5 B. Schneier. Applied Cryptography, Second Edition (1996).
- 6 A. Menezes, P. Oorschot, S. Vanstone. Handbook of Applied Cryptography (1997).
- 7 D. Boneh. Twenty Years of Attacks on the RSA Cryptosystem (1998).
- 8 D. Bleichenbacher, M. Joye, J. Quisquater. A New and Optimal Chosen-message Attack on RSA-type Cryptosystems (1998).
- 9 B. Kaliski, J. Staddon. Recent Results on PKCS #1: RSA Encryption Standard, RSA Labs Bulletin Number 7 (1998).
- 10 B. Kaliski, J. Staddon. PKCS #1: RSA Cryptography Specifications v2.0, RFC 2437 (1998).
- 11 SSH Communications Security. SSH 1.2.7 source code (1998).
- 12 S. Simpson. PGP DH vs. RSA FAQ v1.5 (1999).
- 13 RSA Laboratories Draft I, PKCS #1 v2.1: RSA Cryptography Standard (1999).
- 14 E. Young, T. Hudson, OpenSSL Team. OpenSSL 0.9.5a source code (2000).
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 260:
=over without closing =back