NAME
VOMS::Lite::RSAKey - Perl extension for RSA Key Generation
SYNOPSIS
use VOMS::Lite::RSAKey;
%RSAKey = %{ VOMS::Lite::RSAKey::Create(%inputref) };
DESCRIPTION
VOMS::Lite::RSAKey::Create
Generates an RSA key using the MillerRabin Prime search for probable primes.
%inputref may have the following set
Bits => bits e.g. 512
RandomFile /path/to/random e.g. /dev/random or /dev/urandom,
or a reference to a function where:
$_[0] contains the number of bytes of random
Returns a string of random bytes.
Verbose => 'y'
returns
A reference to a hash: either:
Errors ( a regernec to an array of errors )
- or -
Modulus, PublicExponent, PrivateExponent, Prime1, Prime2,
Exponent1, Exponent2, Phi
and
Bits = the number of bits for generated key
VOMS::Lite::RSAKey::Random
Math::BigInt Random ( \%inputref );
where %inputref consists of:
Bits => number of bits of random number to generate e.g. 256
- or -
Upper => upper limit of random number to generate (scalar or Math::BigInt)
Lower => lower limit (default = 0)
Parity => "Odd" | "Even"
returns Math::BigInt object;
VOMS::Lite::RSAKey::Finder
Finder( \%inputref ) finds the next 'probable' prime number after a given number.
where %inputref consists of:
Start => (number scalar or Math::BigInt to start searching at)
Tests => a string consisting of DFSM (tests are performed in the order specified)
D is VOMS::Lite::RSAKey::DivisionTest
F is VOMS::Lite::RSAKey::FermatTest
S is VOMS::Lite::RSAKey::SolovayStrassenTest
M is VOMS::Lite::RSAKey::MillerRabinTest
Default is 'M'.
%inputref is passed through as an input to the above tests.
Returns reference to hash which includes either
Errors a reference to an array of errors
- or -
Candidate => Math::BigInt prime candidate
VOMS::Lite::RSAKey::DivisionTest
DivisionTest( \%inputref ) tests the candidate for primality
by division by known small primes (upto the first 10000).
This is a slow implementation.
%inputref consist of
Candidate => scalar or Math::BigInt to test
D = the number of prime divisors to test; the default is the maximum 10000
returns 0 if Candidate has small prime divisor
otherwise returns 1
VOMS::Lite::RSAKey::FermatTest
FermatTest( \%inputref ) tests the candidate for probable primality
This is not a good test
%inputref consist of
Candidate => scalar or Math::BigInt to test
F = the number of random divisors to test; the default is 10
returns 0 if composite
returns 1 if probably prime
VOMS::Lite::RSAKey::SolovayStrassenTest
SolovayStrassenTest( \%inputref ) tests the candidate for probable primality
This is a slow test and not as good as the MillerRabinTest
%inputref consist of
Candidate => scalar or Math::BigInt to test
S = the number of random divisors to test; the default is 10
returns 0 if composite
returns 1 if probably prime
VOMS::Lite::RSAKey::JacobiSymbol
Used by SolovayStrassenTest
VOMS::Lite::RSAKey::MillerRabinTest
MillerRabinTest( \%inputref ) tests the candidate for probable primality
%inputref consist of
Candidate => scalar or Math::BigInt to test
M = the number of random divisors to test; the default is
calculated based upon table Handbook of Applied Cryptography table 4.4
returns 0 if composite
returns 1 if probably prime
EXPORT
None by default;
SEE ALSO
http://www.rcs.manchester.ac.uk/research/sarongs
This module was originally designed for the SARoNGS project at The University of Manchester for the NGS. http://www.rcs.manchester.ac.uk/research/sarongs http://www.ngs.ac.uk
Handbook of Applied Cryptography, CRC Press, ISBN: 0-8493-8523-7, October 1996.
AUTHOR
Mike Jones <mike.jones@manchester.ac.uk>
COPYRIGHT AND LICENSE
Copyright (C) 2006 2010 by Mike Jones
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.3 or, at your option, any later version of Perl 5 you may have available.