File Coverage

lib/Crypt/Random/Generator.pm
Criterion Covered Total %
statement 1797 1797 100.0
branch 10 16 62.5
condition 13 25 52.0
subroutine 599 599 100.0
pod 0 5 0.0
total 2419 2442 99.0


line stmt bran cond sub pod time code
1             #!/usr/bin/perl -sw
2             ##
3             ## Copyright (c) 1998-2018, Vipul Ved Prakash. All rights reserved.
4             ## This code is free software; you can redistribute it and/or modify
5             ## it under the same terms as Perl itself.
6              
7             package Crypt::Random::Generator;
8 9     9   8800 use Crypt::Random qw(makerandom makerandom_itv makerandom_octet);
  9         13  
  9         706  
9 8     8   40 use Carp;
  8         18  
  8         3018  
10              
11             my @PROVIDERS = qw(devrandom devurandom egd rand);
12             my %STRENGTH = ( 0 => [ qw(devurandom egd rand) ], 1 => [ qw(devrandom egd rand) ] );
13              
14             sub new {
15              
16 708     708 0 1494 my ($class, %params) = @_;
17            
18 708         1891 my $self = { _STRENGTH => \%STRENGTH, _PROVIDERS => \@PROVIDERS };
19              
20 708   50     2007 $$self{Strength} = $params{Strength} || 0;
21 708   100     1717 $$self{Uniform} = $params{Uniform} || 0;
22 708   100     1647 $$self{Provider} = $params{Provider} || "";
23 708   50     1522 $$self{ProviderParams} = $params{ProviderParams} || "";
24              
25 708         1053 bless $self, $class;
26              
27 708 100       1217 unless ($$self{Provider}) {
28 707         1297 SELECT_PROVIDER: for ($self->strength_order($$self{Strength})) {
29 707         870 my $pname = $_; my $fqpname = "Crypt::Random::Provider::$pname";
  707         1143  
30 8 50   8   2091 if (eval "use $fqpname; $fqpname->available()") {
  8     2   16  
  8     2   152  
  707     2   35078  
  2     2   3  
  2     2   29  
  2     2   11  
  2     2   4  
  2     2   39  
  2     2   12  
  2     2   4  
  2     2   38  
  2     2   12  
  2     2   4  
  2     2   38  
  2     2   11  
  2     2   4  
  2     2   29  
  2     2   10  
  2     2   3  
  2     2   28  
  2     2   12  
  2     2   3  
  2     2   30  
  2     2   11  
  2     2   4  
  2     2   28  
  2     2   11  
  2     2   3  
  2     2   39  
  2     2   11  
  2     2   4  
  2     2   29  
  2     2   11  
  2     2   4  
  2     2   37  
  2     2   11  
  2     2   3  
  2     2   29  
  2     2   12  
  2     2   3  
  2     2   29  
  2     2   11  
  2     2   4  
  2     2   30  
  2     2   11  
  2     2   4  
  2     2   28  
  2     2   11  
  2     2   4  
  2     2   28  
  2     2   12  
  2     2   2  
  2     2   29  
  2     2   11  
  2     2   4  
  2     2   28  
  2     2   13  
  2     2   3  
  2     2   31  
  2     2   11  
  2     2   4  
  2     2   29  
  2     2   12  
  2     2   4  
  2     2   28  
  2     2   11  
  2     2   3  
  2     2   29  
  2     2   12  
  2     2   4  
  2     2   29  
  2     2   10  
  2     2   4  
  2     2   29  
  2     2   11  
  2     2   3  
  2     2   37  
  2     2   12  
  2     2   4  
  2     2   40  
  2     2   11  
  2     2   4  
  2     2   30  
  2     2   11  
  2     2   3  
  2     2   28  
  2     2   10  
  2     2   4  
  2     2   29  
  2     2   11  
  2     2   3  
  2     1   29  
  2     1   11  
  2     1   4  
  2     1   39  
  2     1   12  
  2     1   3  
  2     1   31  
  2     1   12  
  2     1   3  
  2     1   29  
  2     1   12  
  2     1   3  
  2     1   29  
  2     1   11  
  2     1   6  
  2     1   36  
  2     1   10  
  2     1   6  
  2     1   28  
  2     1   12  
  2     1   4  
  2     1   38  
  2     1   12  
  2     1   3  
  2     1   29  
  2     1   13  
  2     1   3  
  2     1   43  
  2     1   13  
  2     1   3  
  2     1   29  
  2     1   10  
  2     1   4  
  2     1   29  
  2     1   11  
  2     1   3  
  2     1   29  
  2     1   11  
  2     1   3  
  2     1   30  
  2     1   13  
  2     1   3  
  2     1   30  
  2     1   13  
  2     1   3  
  2     1   30  
  2     1   12  
  2     1   3  
  2     1   58  
  2     1   23  
  2     1   3  
  2     1   53  
  2     1   11  
  2     1   3  
  2     1   28  
  2     1   12  
  2     1   2  
  2     1   40  
  2     1   12  
  2     1   2  
  2     1   28  
  2     1   11  
  2     1   3  
  2     1   48  
  2     1   11  
  2     1   4  
  2     1   28  
  2     1   23  
  2     1   4  
  2     1   39  
  2     1   11  
  2     1   131  
  2     1   41  
  2     1   11  
  2     1   3  
  2     1   28  
  2     1   11  
  2     1   4  
  2     1   38  
  2     1   11  
  2     1   4  
  2     1   35  
  2     1   11  
  2     1   4  
  2     1   57  
  2     1   12  
  2     1   3  
  2     1   29  
  2     1   11  
  2     1   3  
  2     1   29  
  2     1   10  
  2     1   4  
  2     1   52  
  2     1   11  
  2     1   4  
  2     1   41  
  2     1   12  
  2     1   4  
  2     1   37  
  2     1   12  
  2     1   4  
  2     1   36  
  2     1   12  
  2     1   3  
  2     1   30  
  2     1   11  
  2     1   4  
  2     1   30  
  2     1   12  
  2     1   3  
  2     1   30  
  2     1   11  
  2     1   3  
  2     1   27  
  2     1   12  
  2     1   2  
  2     1   54  
  2     1   11  
  2     1   3  
  2     1   41  
  2     1   11  
  2     1   3  
  2     1   31  
  2     1   10  
  2     1   4  
  2     1   38  
  2     1   11  
  2     1   3  
  2     1   29  
  2     1   12  
  2     1   2  
  2     1   30  
  2     1   12  
  2     1   3  
  2     1   39  
  2     1   12  
  2     1   3  
  2     1   41  
  2     1   12  
  2     1   2  
  2     1   29  
  2     1   13  
  2     1   3  
  2     1   29  
  2     1   11  
  2     1   4  
  2     1   31  
  2     1   12  
  2     1   3  
  2     1   31  
  2     1   10  
  2     1   4  
  2     1   28  
  2     1   14  
  2     1   2  
  2     1   33  
  2     1   28  
  2     1   4  
  2     1   43  
  2     1   10  
  2     1   3  
  2     1   30  
  1     1   8  
  1     1   2  
  1     1   24  
  1     1   5  
  1     1   2  
  1     1   13  
  1     1   6  
  1     1   2  
  1     1   23  
  1     1   6  
  1     1   2  
  1     1   15  
  1     1   5  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   2  
  1     1   14  
  1     1   5  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   2  
  1     1   14  
  1     1   5  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   1  
  1     1   15  
  1     1   6  
  1     1   1  
  1     1   14  
  1     1   6  
  1     1   2  
  1     1   17  
  1     1   5  
  1     1   2  
  1     1   14  
  1     1   5  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   9  
  1     1   15  
  1     1   6  
  1     1   2  
  1     1   40  
  1     1   5  
  1     1   2  
  1     1   29  
  1     1   6  
  1     1   2  
  1     1   13  
  1     1   5  
  1     1   2  
  1     1   14  
  1     1   5  
  1     1   2  
  1     1   23  
  1     1   6  
  1     1   1  
  1     1   15  
  1     1   6  
  1     1   1  
  1     1   29  
  1     1   6  
  1     1   1  
  1     1   15  
  1     1   6  
  1     1   1  
  1     1   14  
  1     1   6  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   2  
  1     1   15  
  1     1   6  
  1     1   1  
  1     1   14  
  1     1   5  
  1     1   2  
  1     1   22  
  1     1   5  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   2  
  1     1   15  
  1     1   6  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   1  
  1     1   23  
  1     1   6  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   1  
  1     1   15  
  1     1   6  
  1     1   1  
  1     1   25  
  1     1   6  
  1     1   2  
  1     1   15  
  1     1   6  
  1     1   1  
  1     1   14  
  1     1   5  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   2  
  1     1   23  
  1     1   6  
  1     1   1  
  1     1   14  
  1     1   6  
  1     1   1  
  1     1   15  
  1     1   5  
  1     1   1  
  1     1   25  
  1     1   5  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   1  
  1     1   14  
  1     1   5  
  1     1   2  
  1     1   15  
  1     1   6  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   2  
  1     1   16  
  1     1   6  
  1     1   1  
  1     1   14  
  1     1   6  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   2  
  1     1   13  
  1     1   6  
  1     1   2  
  1     1   14  
  1     1   5  
  1     1   2  
  1     1   14  
  1     1   5  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   2  
  1     1   23  
  1     1   5  
  1     1   2  
  1     1   14  
  1     1   5  
  1     1   2  
  1     1   15  
  1     1   6  
  1     1   1  
  1     1   15  
  1     1   5  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   2  
  1     1   21  
  1     1   6  
  1     1   2  
  1     1   15  
  1     1   6  
  1     1   2  
  1     1   26  
  1     1   5  
  1     1   2  
  1     1   15  
  1     1   6  
  1     1   2  
  1     1   15  
  1     1   5  
  1     1   2  
  1     1   14  
  1     1   11  
  1     1   2  
  1     1   14  
  1     1   5  
  1     1   2  
  1     1   22  
  1     1   5  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   1  
  1     1   24  
  1     1   5  
  1     1   2  
  1     1   15  
  1     1   6  
  1     1   2  
  1     1   20  
  1     1   6  
  1     1   1  
  1     1   15  
  1     1   6  
  1     1   1  
  1     1   15  
  1     1   5  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   1  
  1     1   23  
  1     1   6  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   2  
  1     1   15  
  1     1   6  
  1     1   1  
  1     1   14  
  1     1   8  
  1     1   2  
  1     1   17  
  1     1   6  
  1     1   2  
  1     1   30  
  1     1   7  
  1     1   1  
  1     1   14  
  1     1   5  
  1     1   2  
  1     1   14  
  1     1   5  
  1     1   2  
  1     1   23  
  1     1   5  
  1     1   2  
  1     1   15  
  1     1   6  
  1     1   2  
  1     1   14  
  1     1   5  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   2  
  1     1   23  
  1     1   6  
  1     1   2  
  1     1   14  
  1     1   5  
  1     1   2  
  1     1   25  
  1     1   7  
  1     1   1  
  1     1   14  
  1     1   6  
  1     1   1  
  1     1   14  
  1     1   6  
  1     1   2  
  1     1   14  
  1     1   5  
  1     1   2  
  1     1   25  
  1     1   6  
  1     1   2  
  1     1   14  
  1     1   5  
  1     1   2  
  1     1   23  
  1     1   6  
  1     1   124  
  1     1   21  
  1     1   6  
  1     1   1  
  1     1   15  
  1     1   6  
  1     1   1  
  1     1   17  
  1     1   7  
  1     1   1  
  1     1   16  
  1     1   6  
  1     1   2  
  1     1   22  
  1     1   5  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   1  
  1     1   15  
  1     1   5  
  1     1   2  
  1     1   23  
  1     1   6  
  1     1   2  
  1     1   14  
  1     1   6  
  1     1   5  
  1     1   15  
  1     1   6  
  1     1   2  
  1     1   14  
  1     1   5  
  1     1   2  
  1     1   13  
  1     1   6  
  1     1   2  
  1     1   13  
  1     1   5  
  1     1   2  
  1     1   14  
  1     1   7  
  1     1   2  
  1     1   14  
  1     1   6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         13  
  1         5  
  1         2  
  1         15  
  1         6  
  1         1  
  1         15  
  1         6  
  1         1  
  1         14  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         27  
  1         7  
  1         1  
  1         15  
  1         6  
  1         1  
  1         14  
  1         6  
  1         1  
  1         14  
  1         6  
  1         1  
  1         15  
  1         5  
  1         2  
  1         14  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         14  
  1         6  
  1         1  
  1         25  
  1         5  
  1         2  
  1         14  
  1         6  
  1         1  
  1         14  
  1         6  
  1         1  
  1         23  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         19  
  1         5  
  1         2  
  1         15  
  1         5  
  1         2  
  1         15  
  1         5  
  1         2  
  1         14  
  1         5  
  1         2  
  1         14  
  1         6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         15  
  1         6  
  1         5  
  1         14  
  1         6  
  1         4  
  1         14  
  1         5  
  1         2  
  1         13  
  1         5  
  1         2  
  1         14  
  1         6  
  1         2  
  1         22  
  1         6  
  1         1  
  1         16  
  1         5  
  1         2  
  1         14  
  1         6  
  1         1  
  1         15  
  1         6  
  1         1  
  1         14  
  1         5  
  1         2  
  1         14  
  1         6  
  1         1  
  1         15  
  1         6  
  1         1  
  1         14  
  1         6  
  1         2  
  1         22  
  1         5  
  1         2  
  1         14  
  1         6  
  1         1  
  1         14  
  1         6  
  1         1  
  1         15  
  1         6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         22  
  1         6  
  1         1  
  1         15  
  1         6  
  1         2  
  1         15  
  1         16  
  1         2  
  1         22  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         31  
  1         6  
  1         1  
  1         15  
  1         5  
  1         3  
  1         14  
  1         6  
  1         9  
  1         17  
  1         5  
  1         2  
  1         14  
  1         6  
  1         2  
  1         14  
  1         5  
  1         2  
  1         14  
  1         6  
  1         2  
  1         16  
  1         5  
  1         2  
  1         36  
  1         5  
  1         2  
  1         14  
  1         6  
  1         9  
  1         18  
  1         6  
  1         1  
  1         16  
  1         6  
  1         2  
  1         13  
  1         6  
  1         1  
  1         15  
  1         6  
  1         2  
  1         14  
  1         6  
  1         1  
  1         23  
  1         5  
  1         2  
  1         14  
  1         6  
  1         1  
  1         32  
  1         5  
  1         2  
  1         14  
  1         5  
  1         2  
  1         14  
  1         6  
  1         2  
  1         23  
  1         14  
  1         1  
  1         15  
  1         5  
  1         2  
  1         35  
  1         6  
  1         2  
  1         23  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         34  
  1         6  
  1         2  
  1         15  
  1         5  
  1         2  
  1         14  
  1         6  
  1         1  
  1         14  
  1         5  
  1         2  
  1         14  
  1         5  
  1         3  
  1         14  
  1         5  
  1         2  
  1         24  
  1         6  
  1         1  
  1         15  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         14  
  1         6  
  1         1  
  1         24  
  1         5  
  1         2  
  1         15  
  1         5  
  1         2  
  1         14  
  1         5  
  1         2  
  1         14  
  1         6  
  1         1  
  1         14  
  1         6  
  1         2  
  1         14  
  1         11  
  1         2  
  1         15  
  1         6  
  1         2  
  1         15  
  1         5  
  1         2  
  1         14  
  1         7  
  1         5  
  1         16  
  1         6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         15  
  1         6  
  1         1  
  1         15  
  1         8  
  1         2  
  1         14  
  1         6  
  1         1  
  1         25  
  1         7  
  1         2  
  1         18  
  1         7  
  1         1  
  1         14  
  1         5  
  1         2  
  1         14  
  1         6  
  1         1  
  1         19  
  1         5  
  1         2  
  1         23  
  1         5  
  1         2  
  1         15  
  1         6  
  1         1  
  1         23  
  1         6  
  1         2  
  1         14  
  1         5  
  1         2  
  1         14  
  1         6  
  1         2  
  1         13  
  1         6  
  1         1  
  1         15  
  1         6  
  1         2  
  1         14  
  1         6  
  1         1  
  1         15  
  1         6  
  1         1  
  1         15  
  1         5  
  1         3  
  1         14  
  1         6  
  1         2  
  1         15  
  1         6  
  1         4  
  1         15  
  1         5  
  1         2  
  1         14  
  1         10  
  1         2  
  1         19  
  1         6  
  1         1  
  1         14  
  1         5  
  1         2  
  1         15  
  1         6  
  1         1  
  1         23  
  1         6  
  1         2  
  1         14  
  1         8  
  1         2  
  1         13  
  1         6  
  1         2  
  1         14  
  1         7  
  1         1  
  1         17  
  1         6  
  1         1  
  1         15  
  1         6  
  1         1  
  1         14  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         14  
  1         6  
  1         1  
  1         14  
  1         6  
  1         8  
  1         15  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         23  
  1         6  
  1         2  
  1         26  
  1         5  
  1         2  
  1         14  
  1         7  
  1         2  
  1         16  
  1         6  
  1         1  
  1         14  
  1         5  
  1         2  
  1         24  
  1         5  
  1         2  
  1         31  
  1         6  
  1         1  
  1         14  
  1         10  
  1         2  
  1         15  
  1         6  
  1         2  
  1         15  
  1         6  
  1         1  
  1         14  
  1         15  
  1         2  
  1         15  
  1         6  
  1         2  
  1         15  
  1         5  
  1         2  
  1         14  
  1         6  
  1         2  
  1         14  
  1         6  
  1         1  
  1         31  
  1         6  
  1         2  
  1         15  
  1         5  
  1         2  
  1         14  
  1         5  
  1         8  
  1         15  
  1         6  
  1         2  
  1         14  
  1         5  
  1         2  
  1         14  
  1         6  
  1         2  
  1         15  
  1         7  
  1         2  
  1         15  
  1         6  
  1         2  
  1         26  
  1         6  
  1         1  
  1         15  
  1         6  
  1         2  
  1         14  
  1         6  
  1         1  
  1         14  
  1         6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         24  
  1         8  
  1         5  
  1         17  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         14  
  1         6  
  1         1  
  1         16  
  1         6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         14  
  1         5  
  1         2  
  1         15  
  1         6  
  1         2  
  1         15  
  1         5  
  1         2  
  1         25  
  1         7  
  1         1  
  1         16  
  1         5  
  1         2  
  1         14  
  1         5  
  1         3  
  1         14  
  1         6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         14  
  1         5  
  1         3  
  1         23  
  1         6  
  1         3  
  1         24  
  1         6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         16  
  1         6  
  1         2  
  1         15  
  1         5  
  1         2  
  1         14  
  1         5  
  1         2  
  1         14  
  1         6  
  1         2  
  1         15  
  1         5  
  1         5  
  1         14  
  1         6  
  1         2  
  1         33  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         14  
  1         5  
  1         2  
  1         14  
  1         5  
  1         2  
  1         14  
  1         6  
  1         2  
  1         15  
  1         7  
  1         1  
  1         15  
  1         6  
  1         2  
  1         14  
  1         6  
  1         5  
  1         15  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         14  
  1         9  
  1         2  
  1         14  
  1         6  
  1         2  
  1         27  
  1         6  
  1         2  
  1         14  
  1         6  
  1         6  
  1         15  
  1         6  
  1         1  
  1         15  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         13  
  1         6  
  1         4  
  1         15  
  1         6  
  1         2  
  1         24  
  1         7  
  1         2  
  1         15  
  1         7  
  1         1  
  1         15  
  1         7  
  1         1  
  1         15  
  1         5  
  1         2  
  1         16  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         23  
  1         6  
  1         2  
  1         15  
  1         6  
  1         1  
  1         24  
  1         6  
  1         2  
  1         14  
  1         6  
  1         1  
  1         32  
  1         6  
  1         2  
  1         22  
  1         6  
  1         2  
  1         24  
  1         5  
  1         2  
  1         15  
  1         7  
  1         2  
  1         26  
  1         6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         15  
  1         7  
  1         1  
  1         15  
  1         6  
  1         2  
  1         23  
  1         8  
  1         1  
  1         18  
  1         6  
  1         1  
  1         15  
  1         6  
  1         4  
  1         14  
  1         6  
  1         1  
  1         15  
  1         6  
  1         2  
  1         14  
  1         7  
  1         2  
  1         15  
  1         6  
  1         2  
  1         45  
  1         6  
  1         2  
  1         17  
  1         6  
  1         3  
  1         14  
  1         5  
  1         2  
  1         14  
  1         6  
  1         2  
  1         15  
  1         6  
  1         583  
  1         22  
  1         5  
  1         2  
  1         15  
  1         6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         14  
  1         5  
  1         2  
  1         15  
  1         6  
  1         2  
  1         14  
  1         8  
  1         1  
  1         24  
  1         6  
  1         1  
  1         15  
  1         6  
  1         2  
  1         15  
  1         5  
  1         2  
  1         15  
  1         5  
  1         2  
  1         23  
  1         7  
  1         1  
  1         14  
  1         5  
  1         2  
  1         22  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         16  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         14  
  1         7  
  1         1  
  1         15  
  1         6  
  1         2  
  1         14  
  1         5  
  1         2  
  1         14  
  1         6  
  1         2  
  1         14  
  1         5  
  1         2  
  1         14  
  1         6  
  1         1  
  1         15  
  1         6  
  1         1  
  1         15  
  1         5  
  1         2  
  1         15  
  1         6  
  1         5  
  1         14  
  1         6  
  1         1  
  1         15  
  1         6  
  1         1  
  1         14  
  1         6  
  1         1  
  1         15  
  1         6  
  1         2  
  1         14  
  1         5  
  1         2  
  1         14  
  1         5  
  1         2  
  1         15  
  1         5  
  1         2  
  1         14  
  1         5  
  1         2  
  1         14  
  1         6  
  1         1  
  1         24  
  1         6  
  1         2  
  1         13  
  1         5  
  1         2  
  1         14  
  1         5  
  1         2  
  1         14  
  1         6  
  1         2  
  1         14  
  1         6  
  1         1  
  1         15  
  1         6  
  1         2  
  1         23  
  1         6  
  1         2  
  1         14  
  1         5  
  1         2  
  1         24  
  1         5  
  1         2  
  1         14  
  1         7  
  1         1  
  1         14  
  1         6  
  1         1  
  1         14  
  1         5  
  1         2  
  1         14  
  1         6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         23  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         13  
  1         6  
  1         1  
  1         15  
  1         6  
  1         1  
  1         14  
  1         6  
  1         2  
  1         14  
  1         5  
  1         2  
  1         14  
  1         6  
  1         2  
  1         14  
  1         6  
  1         1  
  1         26  
  1         6  
  1         2  
  1         14  
  1         7  
  1         1  
  1         15  
  1         6  
  1         1  
  1         16  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         22  
  1         6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         15  
  1         6  
  1         1  
  1         14  
  1         5  
  1         2  
  1         14  
  1         6  
  1         1  
  1         15  
  1         6  
  1         2  
  1         13  
  1         5  
  1         3  
  1         23  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         13  
  1         6  
  1         1  
  1         14  
  1         6  
  1         1  
  1         15  
  1         6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         23  
  1         6  
  1         2  
  1         15  
  1         6  
  1         1  
  1         18  
  1         6  
  1         2  
  1         14  
  1         7  
  1         2  
  1         17  
  1         5  
  1         2  
  1         14  
  1         6  
  1         2  
  1         13  
  1         6  
  1         1  
  1         14  
  1         6  
  1         2  
  1         13  
  1         5  
  1         2  
  1         15  
  1         6  
  1         1  
  1         14  
  1         6  
  1         2  
  1         13  
  1         5  
  1         2  
  1         14  
  1         5  
  1         2  
  1         14  
  1         6  
  1         2  
  1         14  
  1         10  
  1         2  
  1         14  
  1         6  
  1         2  
  1         15  
  1         7  
  1         1  
  1         14  
  1         5  
  1         2  
  1         15  
  1         5  
  1         2  
  1         15  
  1         6  
  1         2  
  1         16  
  1         6  
  1         2  
  1         24  
  1         6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         21  
  1         9  
  1         2  
  1         26  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         22  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         16  
  1         5  
  1         2  
  1         14  
  1         7  
  1         2  
  1         13  
  1         12  
  1         2  
  1         13  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         14  
  1         6  
  1         3  
  1         14  
  1         7  
  1         3  
  1         15  
  1         5  
  1         2  
  1         15  
  1         6  
  1         5  
  1         14  
  1         10  
  1         2  
  1         23  
  1         6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         23  
  1         9  
  1         4  
  1         14  
  1         8  
  1         2  
  1         27  
  1         6  
  1         2  
  1         15  
  1         6  
  1         3  
  1         16  
  1         6  
  1         5  
  1         23  
  1         6  
  1         1  
  1         15  
  1         6  
  1         1  
  1         26  
  1         6  
  1         9  
  1         18  
  1         5  
  1         2  
  1         15  
  1         6  
  1         2  
  1         14  
  1         7  
  1         2  
  1         17  
  1         6  
  1         4  
  1         23  
  1         6  
  1         2  
  1         23  
  1         6  
  1         2  
  1         14  
  1         6  
  1         2  
  1         15  
  1         5  
  1         2  
  1         14  
  1         5  
  1         3  
  1         14  
  1         6  
  1         2  
  1         14  
  1         8  
  1         1  
  1         15  
  1         6  
  1         2  
  1         23  
  1         6  
  1         1  
  1         15  
  1         5  
  1         3  
  1         24  
  1         5  
  1         2  
  1         14  
  1         6  
  1         2  
  1         15  
  1         6  
  1         2  
  1         15  
  1         6  
  1         1  
  1         15  
  1         6  
  1         1  
  1         15  
  1         6  
  1         2  
  1         14  
31 707 50       1993 if (grep { $pname eq $_ } $self->providers) {
  2822         4703  
32 707         1053 $$self{Provider} = $pname;
33 707         1451 last SELECT_PROVIDER;
34             }
35             }
36             }
37             }
38              
39 708 50       1518 croak "No provider available.\n" unless $$self{Provider};
40 708         1729 return $self;
41              
42             }
43              
44              
45             sub providers {
46              
47 707     707 0 1099 my ($self, @args) = @_;
48 707 50       1221 if (@args) { $$self{_PROVIDERS} = [@args] }
  2         28  
49 707         854 return @{$$self{_PROVIDERS}};
  707         3688  
50              
51             }
52              
53              
54             sub strength_order {
55              
56 707     707 0 1191 my ($self, $strength, @args) = @_;
57 707 50       1269 if (@args) { $$self{_STRENGTH}{$strength} = [@args] }
  2         2  
58 707         836 return @{$$self{_STRENGTH}{$strength}}
  707         2235  
59              
60             }
61              
62              
63             sub integer {
64              
65 1011     1011 0 44036 my ($self, %params) = @_;
66 1011 100       1704 if ($params{Size}) {
    50          
67             return makerandom (
68             Size => $params{Size},
69             Provider => $$self{Provider},
70             Verbosity => $params{Verbosity} || $$self{Verbosity},
71             Uniform => $params{Uniform} || $$self{Uniform},
72 1009   33     3963 %{$$self{ProviderParams}},
  1009   66     3285  
73             )
74             } elsif ($params{Upper}) {
75             return makerandom_itv (
76             Lower => $params{Lower} || 0,
77             Upper => $params{Upper},
78             Provider => $$self{Provider},
79             Verbosity => $params{Verbosity} || $$self{Verbosity},
80             Uniform => $params{Uniform} || $$self{Uniform},
81 4   50     42 %{$$self{ProviderParams}},
  4   33     21  
      33        
82             )
83             }
84              
85             }
86              
87              
88             sub string {
89              
90 4     4 0 303 my ($self, %params) = @_;
91             return makerandom_octet (
92             %params,
93             Provider => $$self{Provider},
94             Verbosity => $params{Verbosity} || $$self{Verbosity},
95 4   33     46 %{$$self{ProviderParams}},
  4         20  
96             )
97              
98             }
99              
100