diff options
Diffstat (limited to 'Master/tlpkg/tlperl/lib/Crypt/Random/Generator.pm')
-rwxr-xr-x | Master/tlpkg/tlperl/lib/Crypt/Random/Generator.pm | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/Crypt/Random/Generator.pm b/Master/tlpkg/tlperl/lib/Crypt/Random/Generator.pm new file mode 100755 index 00000000000..8833b0e7679 --- /dev/null +++ b/Master/tlpkg/tlperl/lib/Crypt/Random/Generator.pm @@ -0,0 +1,101 @@ +#!/usr/bin/perl -sw +## +## +## +## Copyright (c) 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. +## +## $Id: Generator.pm,v 1.2 2001/06/22 03:43:51 vipul Exp $ + +package Crypt::Random::Generator; +use Crypt::Random qw(makerandom makerandom_itv makerandom_octet); +use Carp; + +my @PROVIDERS = qw(devrandom devurandom egd rand); +my %STRENGTH = ( 0 => [ qw(devurandom egd rand) ], 1 => [ qw(devrandom egd rand) ] ); + +sub new { + + my ($class, %params) = @_; + + my $self = { _STRENGTH => \%STRENGTH, _PROVIDERS => \@PROVIDERS }; + + $$self{Strength} = $params{Strength} || 0; + $$self{Provider} = $params{Provider} || ""; + $$self{ProviderParams} = $params{ProviderParams} || ""; + + bless $self, $class; + + unless ($$self{Provider}) { + SELECT_PROVIDER: for ($self->strength_order($$self{Strength})) { + my $pname = $_; my $fqpname = "Crypt::Random::Provider::$pname"; + if (eval "use $fqpname; $fqpname->available()") { + if (grep { $pname eq $_ } $self->providers) { + $$self{Provider} = $pname; + last SELECT_PROVIDER; + } + } + } + } + + croak "No provider available.\n" unless $$self{Provider}; + return $self; + +} + + +sub providers { + + my ($self, @args) = @_; + if (@args) { $$self{_PROVIDERS} = [@args] } + return @{$$self{_PROVIDERS}}; + +} + + +sub strength_order { + + my ($self, $strength, @args) = @_; + if (@args) { $$self{_STRENGTH}{$strength} = [@args] } + return @{$$self{_STRENGTH}{$strength}} + +} + + +sub integer { + + my ($self, %params) = @_; + if ($params{Size}) { + return makerandom ( + Size => $params{Size}, + Provider => $$self{Provider}, + Verbosity => $params{Verbosity} || $$self{Verbosity}, + %{$$self{ProviderParams}}, + ) + } elsif ($params{Upper}) { + return makerandom_itv ( + Lower => $params{Lower} || 0, + Upper => $params{Upper}, + Provider => $$self{Provider}, + Verbosity => $params{Verbosity} || $$self{Verbosity}, + %{$$self{ProviderParams}}, + ) + } + +} + + +sub string { + + my ($self, %params) = @_; + return makerandom_octet ( + %params, + Provider => $$self{Provider}, + Verbosity => $params{Verbosity} || $$self{Verbosity}, + %{$$self{ProviderParams}}, + ) + +} + + |