[Affelio-cvs 743] CVS update: affelio/extlib/Crypt/Random

Back to archive index

Tadashi Okoshi slash****@users*****
2005年 11月 4日 (金) 11:08:49 JST


Index: affelio/extlib/Crypt/Random/Generator.pm
diff -u /dev/null affelio/extlib/Crypt/Random/Generator.pm:1.1
--- /dev/null	Fri Nov  4 11:08:49 2005
+++ affelio/extlib/Crypt/Random/Generator.pm	Fri Nov  4 11:08:49 2005
@@ -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.1 2005/11/04 02:08:49 slash5234 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}},
+    )    
+
+}
+
+


Affelio-cvs メーリングリストの案内
Back to archive index