File Coverage

lib/Crypt/CBC/PBKDF.pm
Criterion Covered Total %
statement 1608 1608 100.0
branch 2 4 50.0
condition n/a
subroutine 536 536 100.0
pod 0 4 0.0
total 2146 2152 99.7


line stmt bran cond sub pod time code
1             package Crypt::CBC::PBKDF;
2              
3             # just a virtual base class for passphrase=>key derivation functions
4 13     13   7855 use strict;
  13         33  
  13         373  
5 13     13   81 use File::Basename 'dirname','basename';
  13         75  
  13         779  
6 12     12   86 use Carp 'croak';
  12         21  
  12         4137  
7              
8             sub new {
9 1768     1768 0 2991 my $class = shift;
10 1768         2021 my $subclass = shift;
11 1768         2066 my $options = shift;
12              
13 1768         3299 my $package = __PACKAGE__."::$subclass";
14 12 50   12   4903 eval "use $package; 1" or
  12     12   37  
  12     11   249  
  12     10   103  
  12     10   26  
  12     10   180  
  11     10   501  
  11     10   24  
  11     10   165  
  10     10   863  
  10     10   20  
  10     10   143  
  10     10   79  
  10     10   21  
  10     9   206  
  10     9   81  
  10     9   21  
  10     9   164  
  10     9   83  
  10     9   20  
  10     9   250  
  10     9   73  
  10     9   42  
  10     9   142  
  10     9   79  
  10     9   24  
  10     9   160  
  10     9   74  
  10     9   24  
  10     9   158  
  10     9   868  
  10     9   21  
  10     9   169  
  10     9   80  
  10     9   23  
  10     9   143  
  10     9   83  
  10     9   26  
  10     9   153  
  10     9   81  
  10     9   21  
  10     9   151  
  9     9   70  
  9     9   19  
  9     9   124  
  9     9   70  
  9     9   19  
  9     9   150  
  9     9   68  
  9     9   20  
  9     9   127  
  9     9   123  
  9     9   18  
  9     9   132  
  9     9   67  
  9     9   23  
  9     9   150  
  9     9   156  
  9     3   21  
  9     3   143  
  9     3   65  
  9     3   19  
  9     3   140  
  9     3   137  
  9     3   32  
  9     3   137  
  9     3   67  
  9     3   94  
  9     3   127  
  9     3   67  
  9     3   87  
  9     3   129  
  9     3   70  
  9     3   23  
  9     3   154  
  9     3   71  
  9     3   98  
  9     3   135  
  9     3   81  
  9     3   30  
  9     3   123  
  9     3   66  
  9     3   21  
  9     3   138  
  9     3   73  
  9     3   19  
  9     3   132  
  9     3   68  
  9     3   26  
  9     3   121  
  9     3   66  
  9     3   18  
  9     3   144  
  9     3   67  
  9     3   18  
  9     3   123  
  9     3   66  
  9     3   34  
  9     3   120  
  9     3   70  
  9     3   20  
  9     3   122  
  9     3   65  
  9     3   19  
  9     3   125  
  9     3   68  
  9     3   17  
  9     3   121  
  9     3   138  
  9     3   33  
  9     3   131  
  9     3   67  
  9     3   20  
  9     3   121  
  9     3   68  
  9     3   16  
  9     3   135  
  9     3   70  
  9     3   19  
  9     3   123  
  9     3   64  
  9     3   20  
  9     3   122  
  9     3   67  
  9     3   19  
  9     3   164  
  9     3   74  
  9     3   26  
  9     3   133  
  9     3   68  
  9     3   17  
  9     3   118  
  9     3   85  
  9     3   28  
  9     3   138  
  9     3   69  
  9     3   18  
  9     3   123  
  9     3   72  
  9     3   19  
  9     3   137  
  9     3   68  
  9     3   32  
  9     3   127  
  9     3   72  
  9     3   17  
  9     3   134  
  9     3   71  
  9     3   20  
  9     3   124  
  9     3   84  
  9     3   19  
  9     3   123  
  9     3   67  
  9     3   19  
  9     3   124  
  9     3   69  
  9     3   22  
  9     3   126  
  9     3   72  
  9     3   17  
  9     3   121  
  9     3   63  
  9     3   22  
  9     3   125  
  9     3   68  
  9     3   17  
  9     3   199  
  9     3   72  
  9     3   17  
  9     3   124  
  9     3   67  
  9     3   29  
  9     3   132  
  1768     3   104816  
  3     3   20  
  3     3   7  
  3     3   34  
  3     3   20  
  3     3   7  
  3     3   35  
  3     3   23  
  3     3   6  
  3     3   38  
  3     3   22  
  3     3   6  
  3     3   39  
  3     3   18  
  3     3   7  
  3     3   36  
  3     3   20  
  3     3   7  
  3     3   36  
  3     3   24  
  3     3   5  
  3     3   35  
  3     3   20  
  3     3   5  
  3     3   36  
  3     3   20  
  3     3   14  
  3     3   137  
  3     3   20  
  3     3   6  
  3     3   39  
  3     3   22  
  3     3   8  
  3     3   62  
  3     3   20  
  3     3   6  
  3     3   35  
  3     3   18  
  3     3   6  
  3     3   35  
  3     3   32  
  3     3   7  
  3     3   37  
  3     3   21  
  3     3   6  
  3     3   37  
  3     3   21  
  3     3   6  
  3     3   36  
  3     3   20  
  3     3   6  
  3     3   35  
  3     3   18  
  3     3   7  
  3     3   37  
  3     3   21  
  3     3   7  
  3     3   31  
  3     3   19  
  3     3   6  
  3     3   35  
  3     3   20  
  3     3   7  
  3     3   34  
  3     3   20  
  3     3   6  
  3     3   36  
  3     3   22  
  3     3   6  
  3     3   36  
  3     3   21  
  3     3   7  
  3     3   40  
  3     3   20  
  3     3   6  
  3     3   37  
  3     3   18  
  3     3   7  
  3     3   57  
  3     3   20  
  3     3   9  
  3     3   34  
  3     3   19  
  3     3   18  
  3     3   41  
  3     3   21  
  3     3   7  
  3     3   38  
  3     3   21  
  3     3   7  
  3     3   36  
  3     3   19  
  3     3   9  
  3     3   35  
  3     3   20  
  3     3   7  
  3     3   36  
  3     3   20  
  3     3   8  
  3     3   43  
  3     3   19  
  3     3   7  
  3     3   40  
  3     3   21  
  3     3   6  
  3     3   49  
  3     3   19  
  3     3   5  
  3     3   36  
  3     3   19  
  3     3   8  
  3     3   32  
  3     3   19  
  3     3   6  
  3     3   36  
  3     3   20  
  3     3   5  
  3     3   34  
  3     3   18  
  3     3   5  
  3     3   35  
  3     3   19  
  3     3   5  
  3     3   33  
  3     3   19  
  3     3   7  
  3     3   37  
  3     3   20  
  3     3   5  
  3     3   33  
  3     3   21  
  3     3   6  
  3     3   36  
  3     3   22  
  3     3   8  
  3     3   33  
  3     3   19  
  3     3   6  
  3     3   37  
  3     3   20  
  3     3   14  
  3     3   39  
  3     3   18  
  3     3   7  
  3     3   37  
  3     3   20  
  3     3   7  
  3     3   33  
  3     3   20  
  3     3   7  
  3     3   36  
  3     3   20  
  3     3   4  
  3     3   37  
  3     3   18  
  3     3   6  
  3     3   35  
  3     3   21  
  3     3   5  
  3     3   35  
  3     3   18  
  3     3   8  
  3     3   34  
  3     3   22  
  3     3   6  
  3     3   34  
  3     3   20  
  3     3   7  
  3     3   34  
  3     3   21  
  3     3   6  
  3     3   35  
  3     3   20  
  3     3   6  
  3     3   37  
  3     3   21  
  3     3   9  
  3     3   35  
  3     3   20  
  3     3   6  
  3     3   35  
  3     3   20  
  3     3   5  
  3     3   35  
  3     3   19  
  3     3   6  
  3     3   35  
  3     3   20  
  3     3   4  
  3     3   37  
  3     3   20  
  3     3   6  
  3     3   36  
  3     3   18  
  3     3   5  
  3     3   33  
  3     3   19  
  3     3   5  
  3     3   36  
  3     3   20  
  3     3   7  
  3     3   46  
  3     3   18  
  3     3   7  
  3     3   34  
  3     3   19  
  3     3   6  
  3     3   34  
  3     3   19  
  3     3   7  
  3     3   35  
  3     3   20  
  3     3   6  
  3     3   398  
  3     3   18  
  3     3   9  
  3     3   37  
  3     3   19  
  3     3   7  
  3     3   35  
  3     3   20  
  3     3   8  
  3     3   36  
  3     3   20  
  3     3   6  
  3     3   33  
  3     3   18  
  3     3   5  
  3     3   38  
  3     3   18  
  3     3   6  
  3     3   33  
  3     3   19  
  3     3   8  
  3     3   38  
  3     3   29  
  3     3   9  
  3     3   38  
  3     3   21  
  3     3   6  
  3     3   36  
  3     3   18  
  3     3   7  
  3     3   37  
  3     3   18  
  3     3   6  
  3     3   36  
  3     3   18  
  3     3   8  
  3     1   32  
  3     1   19  
  3     1   6  
  3     1   36  
  3     1   20  
  3     1   8  
  3     1   34  
  3     1   20  
  3     1   6  
  3     1   34  
  3     1   20  
  3     1   4  
  3     1   34  
  3     1   81  
  3     1   9  
  3     1   39  
  3     1   22  
  3     1   7  
  3     1   34  
  3     1   17  
  3     1   7  
  3     1   36  
  3     1   22  
  3     1   7  
  3     1   35  
  3     1   22  
  3     1   6  
  3     1   37  
  3     1   20  
  3     1   5  
  3     1   33  
  3     1   20  
  3     1   7  
  3     1   34  
  3     1   20  
  3     1   8  
  3     1   37  
  3     1   20  
  3     1   6  
  3     1   34  
  3     1   19  
  3     1   7  
  3     1   33  
  3     1   18  
  3     1   5  
  3     1   38  
  3     1   19  
  3     1   9  
  3     1   48  
  3     1   18  
  3     1   7  
  3     1   35  
  3     1   21  
  3     1   6  
  3     1   36  
  3     1   19  
  3     1   6  
  3     1   36  
  3     1   20  
  3     1   5  
  3     1   34  
  3     1   19  
  3     1   8  
  3     1   35  
  3     1   20  
  3     1   6  
  3     1   34  
  3     1   20  
  3     1   7  
  3     1   38  
  3     1   20  
  3     1   7  
  3     1   33  
  3     1   20  
  3     1   6  
  3     1   35  
  3     1   19  
  3     1   5  
  3     1   36  
  3     1   20  
  3     1   6  
  3     1   35  
  3     1   21  
  3     1   5  
  3     1   36  
  3     1   19  
  3     1   6  
  3     1   36  
  3     1   22  
  3     1   7  
  3     1   35  
  3     1   19  
  3     1   8  
  3     1   36  
  3     1   19  
  3     1   6  
  3     1   36  
  3     1   20  
  3     1   7  
  3     1   36  
  3     1   19  
  3     1   9  
  3     1   37  
  3     1   20  
  3     1   6  
  3     1   52  
  3         20  
  3         6  
  3         37  
  3         20  
  3         7  
  3         38  
  3         20  
  3         7  
  3         50  
  3         20  
  3         7  
  3         36  
  3         21  
  3         6  
  3         34  
  3         20  
  3         6  
  3         35  
  3         22  
  3         4  
  3         49  
  3         18  
  3         7  
  3         36  
  3         20  
  3         6  
  3         36  
  3         23  
  3         9  
  3         35  
  3         22  
  3         6  
  3         61  
  3         22  
  3         6  
  3         40  
  3         21  
  3         6  
  3         38  
  3         21  
  3         6  
  3         36  
  3         21  
  3         6  
  3         33  
  3         19  
  3         5  
  3         38  
  3         19  
  3         7  
  3         48  
  3         19  
  3         6  
  3         36  
  3         19  
  3         6  
  3         33  
  3         20  
  3         7  
  3         67  
  3         21  
  3         6  
  3         33  
  3         19  
  3         8  
  3         36  
  3         30  
  3         8  
  3         38  
  3         20  
  3         6  
  3         36  
  3         19  
  3         6  
  3         35  
  3         21  
  3         6  
  3         37  
  3         20  
  3         7  
  3         32  
  3         21  
  3         6  
  3         38  
  3         18  
  3         6  
  3         38  
  3         18  
  3         9  
  3         35  
  3         20  
  3         17  
  3         38  
  3         21  
  3         8  
  3         36  
  3         19  
  3         9  
  3         37  
  3         21  
  3         5  
  3         37  
  3         19  
  3         7  
  3         34  
  3         19  
  3         7  
  3         34  
  3         19  
  3         6  
  3         34  
  3         22  
  3         5  
  3         36  
  3         19  
  3         8  
  3         33  
  3         20  
  3         8  
  3         37  
  3         21  
  3         6  
  3         59  
  3         24  
  3         8  
  3         40  
  3         22  
  3         6  
  3         40  
  3         20  
  3         7  
  3         36  
  3         23  
  3         6  
  3         42  
  3         20  
  3         6  
  3         37  
  3         19  
  3         7  
  3         32  
  3         20  
  3         6  
  3         37  
  3         29  
  3         8  
  3         38  
  3         22  
  3         6  
  3         35  
  3         20  
  3         7  
  3         64  
  3         20  
  3         6  
  3         36  
  3         18  
  3         6  
  3         35  
  3         19  
  3         6  
  3         38  
  3         24  
  3         5  
  3         36  
  3         19  
  3         7  
  3         37  
  3         20  
  3         7  
  3         35  
  3         19  
  3         7  
  3         38  
  3         20  
  3         6  
  3         37  
  3         24  
  3         7  
  3         36  
  3         19  
  3         6  
  3         37  
  3         21  
  3         6  
  3         34  
  3         20  
  3         6  
  3         35  
  3         20  
  3         7  
  3         36  
  3         20  
  3         6  
  3         36  
  3         20  
  3         7  
  3         37  
  3         23  
  3         5  
  3         34  
  3         19  
  3         7  
  3         35  
  3         21  
  3         7  
  3         36  
  3         18  
  3         7  
  3         38  
  3         19  
  3         6  
  3         50  
  3         20  
  3         5  
  3         36  
  3         20  
  3         7  
  3         34  
  3         22  
  3         8  
  3         36  
  3         125  
  3         7  
  3         37  
  3         20  
  3         5  
  3         37  
  3         20  
  3         6  
  3         36  
  3         18  
  3         6  
  3         36  
  3         22  
  3         5  
  3         57  
  3         21  
  3         6  
  3         38  
  3         22  
  3         8  
  3         35  
  3         20  
  3         8  
  3         37  
  3         31  
  3         8  
  3         37  
  3         22  
  3         4  
  3         36  
  3         20  
  3         6  
  3         34  
  3         20  
  3         6  
  3         37  
  3         21  
  3         6  
  3         37  
  3         18  
  3         9  
  3         36  
  3         20  
  3         6  
  3         35  
  3         22  
  3         7  
  3         37  
  3         20  
  3         6  
  3         36  
  3         20  
  3         7  
  3         32  
  3         22  
  3         24  
  3         41  
  3         21  
  3         7  
  3         52  
  3         21  
  3         6  
  3         34  
  3         22  
  3         8  
  3         38  
  3         20  
  3         7  
  3         39  
  3         19  
  3         7  
  3         36  
  3         21  
  3         6  
  3         34  
  3         20  
  3         7  
  3         36  
  3         22  
  3         7  
  3         33  
  3         21  
  3         7  
  3         39  
  3         18  
  3         8  
  3         36  
  3         21  
  3         5  
  3         43  
  3         21  
  3         5  
  3         35  
  3         20  
  3         6  
  3         40  
  3         23  
  3         8  
  3         36  
  3         21  
  3         6  
  3         36  
  3         19  
  3         7  
  3         35  
  3         20  
  3         8  
  3         37  
  3         20  
  3         6  
  3         35  
  3         20  
  3         6  
  3         35  
  3         22  
  3         7  
  3         35  
  3         21  
  3         7  
  3         34  
  3         21  
  3         7  
  3         32  
  3         20  
  3         9  
  3         39  
  3         20  
  3         10  
  3         34  
  3         21  
  3         8  
  3         39  
  3         21  
  3         16  
  3         44  
  3         20  
  3         5  
  3         37  
  3         20  
  3         6  
  3         39  
  3         20  
  3         7  
  3         39  
  3         23  
  3         6  
  3         36  
  3         21  
  3         6  
  3         35  
  3         18  
  3         7  
  3         34  
  3         57  
  3         8  
  3         40  
  3         20  
  3         7  
  3         37  
  3         20  
  3         7  
  3         35  
  3         20  
  3         6  
  3         35  
  3         20  
  3         6  
  3         38  
  3         21  
  3         6  
  3         35  
  3         22  
  3         6  
  3         37  
  3         20  
  3         26  
  3         42  
  3         20  
  3         6  
  3         41  
  3         20  
  3         6  
  3         36  
  3         22  
  3         6  
  3         39  
  3         22  
  3         7  
  3         38  
  3         22  
  3         7  
  3         40  
  3         23  
  3         10  
  3         35  
  3         21  
  3         10  
  3         34  
  3         20  
  3         7  
  3         37  
  3         21  
  3         6  
  3         36  
  3         19  
  3         8  
  3         37  
  3         20  
  3         6  
  3         37  
  3         22  
  3         17  
  3         136  
  3         36  
  3         7  
  3         38  
  3         20  
  3         5  
  3         35  
  3         21  
  3         7  
  3         38  
  3         21  
  3         8  
  3         33  
  3         20  
  3         6  
  3         36  
  3         20  
  3         4  
  3         36  
  3         20  
  3         9  
  3         36  
  3         20  
  3         7  
  3         40  
  3         21  
  3         8  
  3         36  
  3         23  
  3         7  
  3         36  
  3         22  
  3         7  
  3         38  
  3         22  
  3         5  
  3         36  
  3         22  
  3         8  
  3         39  
  3         21  
  3         8  
  3         428  
  3         20  
  3         9  
  3         36  
  3         19  
  3         6  
  3         34  
  3         21  
  3         8  
  3         38  
  3         20  
  3         5  
  3         34  
  3         18  
  3         7  
  3         145  
  3         21  
  3         6  
  3         34  
  3         20  
  3         6  
  3         36  
  3         19  
  3         7  
  3         37  
  3         21  
  3         7  
  3         38  
  3         19  
  3         9  
  3         36  
  3         19  
  3         10  
  3         39  
  3         22  
  3         8  
  3         38  
  3         19  
  3         9  
  3         54  
  3         21  
  3         9  
  3         37  
  3         21  
  3         6  
  3         39  
  3         21  
  3         5  
  3         37  
  3         22  
  3         8  
  3         38  
  3         19  
  3         6  
  3         38  
  3         19  
  3         8  
  3         36  
  3         22  
  3         6  
  3         37  
  3         21  
  3         7  
  3         38  
  3         21  
  3         8  
  3         97  
  3         19  
  3         8  
  3         38  
  3         20  
  3         6  
  3         36  
  3         21  
  3         7  
  3         35  
  3         20  
  3         7  
  3         33  
  3         20  
  3         8  
  3         35  
  3         19  
  3         7  
  3         35  
  3         22  
  3         6  
  3         38  
  3         22  
  3         6  
  3         116  
  3         21  
  3         6  
  3         35  
  3         21  
  3         7  
  3         37  
  3         20  
  3         7  
  3         35  
  3         22  
  3         5  
  3         35  
  3         21  
  3         6  
  3         38  
  3         23  
  3         7  
  3         36  
  3         23  
  3         9  
  3         40  
  3         20  
  3         6  
  3         36  
  3         21  
  3         6  
  3         38  
  3         20  
  3         6  
  3         57  
  3         21  
  3         7  
  3         37  
  3         19  
  3         7  
  3         35  
  3         20  
  3         7  
  3         35  
  3         22  
  3         5  
  3         36  
  3         20  
  3         8  
  3         37  
  3         22  
  3         6  
  3         37  
  3         23  
  3         6  
  3         39  
  3         20  
  3         7  
  3         33  
  3         23  
  3         6  
  3         38  
  3         23  
  3         8  
  3         37  
  3         21  
  3         7  
  3         38  
  3         20  
  3         8  
  3         34  
  3         21  
  3         6  
  3         37  
  3         20  
  3         7  
  3         33  
  3         23  
  3         7  
  3         39  
  3         20  
  3         7  
  3         50  
  3         20  
  3         8  
  3         40  
  3         21  
  3         1146  
  3         46  
  3         42  
  3         6  
  3         41  
  3         22  
  3         7  
  3         37  
  3         21  
  3         5  
  3         37  
  3         34  
  3         7  
  3         37  
  3         21  
  3         8  
  3         37  
  3         19  
  3         5  
  3         35  
  3         22  
  3         6  
  3         37  
  3         21  
  3         1353  
  3         206  
  3         25  
  3         7  
  3         37  
  3         20  
  3         7  
  3         35  
  3         22  
  3         7  
  3         39  
  3         21  
  3         6  
  3         36  
  3         23  
  3         6  
  3         42  
  3         20  
  3         7  
  3         34  
  3         21  
  3         8  
  3         37  
  3         20  
  3         6  
  3         34  
  3         23  
  3         5  
  3         39  
  3         20  
  3         6  
  3         32  
  3         19  
  3         8  
  3         37  
  3         22  
  3         6  
  3         37  
  3         20  
  3         7  
  3         982  
  3         21  
  3         6  
  3         35  
  3         20  
  3         7  
  3         42  
  3         20  
  3         7  
  3         34  
  3         21  
  3         7  
  3         38  
  3         20  
  3         7  
  3         36  
  1         7  
  1         2  
  1         13  
  1         9  
  1         3  
  1         12  
  1         7  
  1         3  
  1         182  
  1         10  
  1         3  
  1         12  
  1         7  
  1         2  
  1         13  
  1         7  
  1         2  
  1         12  
  1         7  
  1         3  
  1         14  
  1         6  
  1         2  
  1         12  
  1         7  
  1         2  
  1         12  
  1         7  
  1         1  
  1         12  
  1         7  
  1         2  
  1         11  
  1         7  
  1         3  
  1         12  
  1         7  
  1         2  
  1         12  
  1         6  
  1         3  
  1         11  
  1         7  
  1         3  
  1         13  
  1         7  
  1         2  
  1         12  
  1         8  
  1         2  
  1         13  
  1         7  
  1         3  
  1         12  
  1         8  
  1         2  
  1         12  
  1         7  
  1         3  
  1         11  
  1         7  
  1         3  
  1         12  
  1         6  
  1         2  
  1         12  
  1         9  
  1         2  
  1         14  
  1         7  
  1         2  
  1         14  
  1         7  
  1         2  
  1         13  
  1         7  
  1         3  
  1         13  
  1         6  
  1         4  
  1         12  
  1         7  
  1         2  
  1         12  
  1         8  
  1         3  
  1         13  
  1         7  
  1         2  
  1         13  
  1         7  
  1         3  
  1         13  
  1         6  
  1         2  
  1         13  
  1         6  
  1         2  
  1         12  
  1         7  
  1         2  
  1         12  
  1         6  
  1         2  
  1         13  
  1         6  
  1         2  
  1         12  
  1         8  
  1         2  
  1         12  
  1         7  
  1         2  
  1         13  
  1         8  
  1         2  
  1         13  
  1         6  
  1         2  
  1         12  
  1         6  
  1         3  
  1         12  
  1         7  
  1         2  
  1         23  
  1         6  
  1         1  
  1         13  
  1         6  
  1         2  
  1         12  
  1         7  
  1         1  
  1         13  
  1         7  
  1         2  
  1         11  
  1         7  
  1         2  
  1         13  
  1         7  
  1         2  
  1         12  
  1         7  
  1         2  
  1         12  
  1         8  
  1         2  
  1         12  
  1         7  
  1         2  
  1         13  
  1         8  
  1         2  
  1         13  
  1         7  
  1         2  
  1         11  
  1         7  
  1         1  
  1         13  
  1         8  
  1         4  
  1         13  
  1         7  
  1         2  
  1         12  
  1         7  
  1         2  
  1         12  
  1         7  
  1         2  
  1         13  
  1         7  
  1         3  
  1         13  
  1         7  
  1         2  
  1         12  
  1         7  
  1         2  
  1         12  
  1         7  
  1         2  
  1         13  
  1         7  
  1         2  
  1         13  
  1         7  
  1         2  
  1         13  
  1         7  
  1         2  
  1         12  
  1         7  
  1         2  
  1         12  
  1         7  
  1         1  
  1         13  
  1         8  
  1         2  
  1         12  
  1         6  
  1         2  
  1         14  
  1         8  
  1         1  
  1         12  
  1         7  
  1         2  
  1         12  
  1         6  
  1         4  
  1         12  
  1         7  
  1         3  
  1         12  
  1         9  
  1         26  
  1         17  
  1         7  
  1         2  
  1         12  
  1         7  
  1         2  
  1         12  
  1         7  
  1         3  
  1         13  
  1         8  
  1         2  
  1         14  
  1         7  
  1         2  
  1         14  
  1         6  
  1         4  
  1         14  
  1         8  
  1         2  
  1         14  
  1         9  
  1         2  
  1         13  
  1         6  
  1         2  
  1         13  
  1         7  
  1         4  
  1         11  
  1         7  
  1         2  
  1         13  
  1         6  
  1         3  
  1         12  
  1         6  
  1         3  
  1         13  
  1         8  
  1         2  
  1         22  
  1         6  
  1         2  
  1         11  
  1         6  
  1         3  
  1         11  
  1         7  
  1         2  
  1         12  
  1         6  
  1         2  
  1         12  
  1         6  
  1         3  
  1         13  
  1         7  
  1         3  
  1         13  
  1         7  
  1         2  
  1         12  
  1         8  
  1         2  
  1         13  
  1         9  
  1         3  
  1         12  
  1         6  
  1         2  
  1         12  
  1         7  
  1         2  
  1         12  
  1         6  
  1         4  
  1         29  
  1         6  
  1         2  
  1         12  
  1         6  
  1         3  
  1         13  
  1         6  
  1         2  
  1         14  
  1         7  
  1         1  
  1         11  
  1         6  
  1         2  
  1         13  
  1         7  
  1         2  
  1         14  
15             croak "Could not load $subclass: $@";
16              
17 1768         10062 return $package->create(%$options);
18             }
19              
20             # returns a series of subclasses
21             sub list {
22 3     3 0 19 my $self = shift;
23 3         5 my $dir = dirname(__FILE__);
24 3         35 my @pm_files = <$dir/PBKDF/*.pm>;
25 3         20 my @subclasses;
26 3         5 foreach (@pm_files) {
27 3         60 my $base = basename($_);
28 3         21 $base =~ s/\.pm$//;
29 3         7 push @subclasses,$base;
30             }
31 3         50 return @subclasses;
32             }
33              
34             sub generate_hash {
35 3     3 0 18 my $self = shift;
36 3         9 my ($salt,$passphrase) = @_;
37 3         37 croak "generate() method not implemented in this class. Use one of the subclasses",join(',',$self->list);
38             }
39              
40             sub key_and_iv {
41 1767     1767 0 2761 my $self = shift;
42 1767 50       3641 croak 'usage $obj->salt_key_iv($salt,$passphrase)' unless @_ == 2;
43              
44 1767         4385 my $hash = $self->generate_hash(@_);
45              
46 1767         67332217 my $key = substr($hash,0,$self->{key_len});
47 1767         3188 my $iv = substr($hash,$self->{key_len},$self->{iv_len});
48 1767         6032 return ($key,$iv);
49             }
50              
51             1;