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 14     14   8198 use strict;
  14         34  
  14         416  
5 14     14   98 use File::Basename 'dirname','basename';
  14         25  
  14         886  
6 13     13   82 use Carp 'croak';
  13         21  
  13         4578  
7              
8             sub new {
9 1768     1768 0 2968 my $class = shift;
10 1768         2060 my $subclass = shift;
11 1768         2108 my $options = shift;
12              
13 1768         3211 my $package = __PACKAGE__."::$subclass";
14 12 50   12   4585 eval "use $package; 1" or
  12     12   38  
  12     11   247  
  12     10   623  
  12     10   26  
  12     10   180  
  11     10   82  
  11     10   24  
  11     10   143  
  10     10   875  
  10     10   23  
  10     10   158  
  10     10   76  
  10     10   118  
  10     9   136  
  10     9   71  
  10     9   17  
  10     9   137  
  10     9   77  
  10     9   19  
  10     9   133  
  10     9   68  
  10     9   20  
  10     9   157  
  10     9   75  
  10     9   21  
  10     9   142  
  10     9   77  
  10     9   19  
  10     9   128  
  10     9   832  
  10     9   23  
  10     9   155  
  10     9   75  
  10     9   19  
  10     9   124  
  10     9   73  
  10     9   18  
  10     9   129  
  10     9   74  
  10     9   23  
  10     9   127  
  9     9   64  
  9     9   19  
  9     9   105  
  9     9   66  
  9     9   25  
  9     9   121  
  9     9   66  
  9     9   21  
  9     9   120  
  9     9   61  
  9     9   19  
  9     9   144  
  9     9   148  
  9     9   23  
  9     9   126  
  9     9   67  
  9     3   17  
  9     3   170  
  9     3   138  
  9     3   20  
  9     3   114  
  9     3   66  
  9     3   19  
  9     3   184  
  9     3   63  
  9     3   65  
  9     3   134  
  9     3   68  
  9     3   17  
  9     3   138  
  9     3   74  
  9     3   80  
  9     3   139  
  9     3   69  
  9     3   29  
  9     3   114  
  9     3   66  
  9     3   17  
  9     3   132  
  9     3   65  
  9     3   19  
  9     3   113  
  9     3   63  
  9     3   16  
  9     3   114  
  9     3   67  
  9     3   20  
  9     3   115  
  9     3   66  
  9     3   23  
  9     3   117  
  9     3   66  
  9     3   18  
  9     3   114  
  9     3   65  
  9     3   20  
  9     3   119  
  9     3   62  
  9     3   19  
  9     3   110  
  9     3   79  
  9     3   18  
  9     3   118  
  9     3   66  
  9     3   16  
  9     3   112  
  9     3   89  
  9     3   18  
  9     3   115  
  9     3   68  
  9     3   17  
  9     3   110  
  9     3   63  
  9     3   22  
  9     3   109  
  9     3   63  
  9     3   21  
  9     3   132  
  9     3   62  
  9     3   18  
  9     3   115  
  9     3   64  
  9     3   18  
  9     3   103  
  9     3   64  
  9     3   18  
  9     3   122  
  9     3   66  
  9     3   18  
  9     3   114  
  9     3   64  
  9     3   17  
  9     3   150  
  9     3   65  
  9     3   18  
  9     3   107  
  9     3   66  
  9     3   16  
  9     3   115  
  9     3   67  
  9     3   18  
  9     3   112  
  9     3   63  
  9     3   18  
  9     3   112  
  9     3   69  
  9     3   19  
  9     3   113  
  9     3   64  
  9     3   16  
  9     3   112  
  9     3   99  
  9     3   19  
  9     3   123  
  9     3   62  
  9     3   21  
  9     3   121  
  9     3   65  
  9     3   19  
  9     3   115  
  9     3   66  
  9     3   18  
  9     3   117  
  9     3   72  
  9     3   21  
  9     3   138  
  9     3   64  
  9     3   20  
  9     3   112  
  9     3   67  
  9     3   17  
  9     3   137  
  1768     3   96353  
  3     3   18  
  3     3   7  
  3     3   32  
  3     3   19  
  3     3   7  
  3     3   35  
  3     3   19  
  3     3   5  
  3     3   35  
  3     3   22  
  3     3   5  
  3     3   35  
  3     3   18  
  3     3   6  
  3     3   35  
  3     3   19  
  3     3   7  
  3     3   32  
  3     3   20  
  3     3   10  
  3     3   36  
  3     3   19  
  3     3   5  
  3     3   32  
  3     3   19  
  3     3   6  
  3     3   32  
  3     3   20  
  3     3   6  
  3     3   57  
  3     3   19  
  3     3   6  
  3     3   34  
  3     3   21  
  3     3   4  
  3     3   36  
  3     3   18  
  3     3   6  
  3     3   47  
  3     3   18  
  3     3   7  
  3     3   34  
  3     3   22  
  3     3   7  
  3     3   36  
  3     3   21  
  3     3   5  
  3     3   34  
  3     3   20  
  3     3   5  
  3     3   34  
  3     3   19  
  3     3   5  
  3     3   35  
  3     3   18  
  3     3   7  
  3     3   34  
  3     3   19  
  3     3   7  
  3     3   47  
  3     3   19  
  3     3   5  
  3     3   31  
  3     3   18  
  3     3   12  
  3     3   33  
  3     3   19  
  3     3   7  
  3     3   35  
  3     3   17  
  3     3   6  
  3     3   33  
  3     3   20  
  3     3   6  
  3     3   67  
  3     3   20  
  3     3   7  
  3     3   34  
  3     3   19  
  3     3   4  
  3     3   31  
  3     3   19  
  3     3   5  
  3     3   33  
  3     3   20  
  3     3   6  
  3     3   33  
  3     3   17  
  3     3   6  
  3     3   34  
  3     3   19  
  3     3   6  
  3     3   35  
  3     3   18  
  3     3   7  
  3     3   33  
  3     3   22  
  3     3   37  
  3     3   39  
  3     3   19  
  3     3   6  
  3     3   34  
  3     3   19  
  3     3   5  
  3     3   33  
  3     3   21  
  3     3   6  
  3     3   32  
  3     3   19  
  3     3   6  
  3     3   31  
  3     3   19  
  3     3   5  
  3     3   34  
  3     3   18  
  3     3   8  
  3     3   48  
  3     3   18  
  3     3   5  
  3     3   34  
  3     3   18  
  3     3   6  
  3     3   31  
  3     3   18  
  3     3   7  
  3     3   35  
  3     3   17  
  3     3   6  
  3     3   33  
  3     3   21  
  3     3   5  
  3     3   36  
  3     3   24  
  3     3   15  
  3     3   38  
  3     3   20  
  3     3   6  
  3     3   32  
  3     3   18  
  3     3   6  
  3     3   32  
  3     3   18  
  3     3   7  
  3     3   34  
  3     3   19  
  3     3   6  
  3     3   33  
  3     3   19  
  3     3   6  
  3     3   34  
  3     3   20  
  3     3   6  
  3     3   34  
  3     3   18  
  3     3   5  
  3     3   34  
  3     3   19  
  3     3   6  
  3     3   47  
  3     3   21  
  3     3   4  
  3     3   35  
  3     3   20  
  3     3   5  
  3     3   34  
  3     3   19  
  3     3   4  
  3     3   35  
  3     3   25  
  3     3   12  
  3     3   38  
  3     3   21  
  3     3   5  
  3     3   34  
  3     3   17  
  3     3   7  
  3     3   36  
  3     3   18  
  3     3   6  
  3     3   34  
  3     3   19  
  3     3   8  
  3     3   33  
  3     3   19  
  3     3   7  
  3     3   32  
  3     3   19  
  3     3   5  
  3     3   34  
  3     3   18  
  3     3   5  
  3     3   36  
  3     3   28  
  3     3   8  
  3     3   38  
  3     3   18  
  3     3   7  
  3     3   33  
  3     3   20  
  3     3   5  
  3     3   33  
  3     3   19  
  3     3   8  
  3     3   40  
  3     3   21  
  3     3   6  
  3     3   34  
  3     3   19  
  3     3   9  
  3     3   34  
  3     3   19  
  3     3   7  
  3     3   31  
  3     3   19  
  3     3   5  
  3     3   32  
  3     3   19  
  3     3   15  
  3     3   36  
  3     3   19  
  3     3   5  
  3     3   35  
  3     3   20  
  3     3   8  
  3     3   34  
  3     3   18  
  3     3   5  
  3     3   33  
  3     3   19  
  3     3   5  
  3     3   35  
  3     3   18  
  3     3   6  
  3     3   35  
  3     3   19  
  3     3   6  
  3     3   35  
  3     3   18  
  3     3   6  
  3     3   35  
  3     3   24  
  3     3   5  
  3     3   37  
  3     3   18  
  3     3   8  
  3     3   35  
  3     3   19  
  3     3   6  
  3     1   32  
  3     1   18  
  3     1   6  
  3     1   33  
  3     1   21  
  3     1   6  
  3     1   35  
  3     1   19  
  3     1   6  
  3     1   35  
  3     1   19  
  3     1   6  
  3     1   34  
  3     1   18  
  3     1   6  
  3     1   32  
  3     1   19  
  3     1   6  
  3     1   47  
  3     1   20  
  3     1   6  
  3     1   35  
  3     1   21  
  3     1   6  
  3     1   34  
  3     1   19  
  3     1   5  
  3     1   35  
  3     1   19  
  3     1   7  
  3     1   35  
  3     1   19  
  3     1   6  
  3     1   33  
  3     1   27  
  3     1   5  
  3     1   36  
  3     1   20  
  3     1   7  
  3     1   35  
  3     1   19  
  3     1   6  
  3     1   35  
  3     1   21  
  3     1   7  
  3     1   34  
  3     1   19  
  3     1   7  
  3     1   36  
  3     1   19  
  3     1   8  
  3     1   37  
  3     1   23  
  3     1   6  
  3     1   32  
  3     1   19  
  3     1   5  
  3     1   36  
  3     1   19  
  3     1   8  
  3     1   35  
  3     1   18  
  3     1   6  
  3     1   35  
  3     1   18  
  3     1   17  
  3     1   44  
  3     1   18  
  3     1   6  
  3     1   36  
  3     1   26  
  3     1   6  
  3     1   37  
  3     1   20  
  3     1   5  
  3     1   37  
  3     1   19  
  3     1   8  
  3     1   34  
  3     1   19  
  3     1   6  
  3     1   33  
  3     1   20  
  3     1   5  
  3     1   35  
  3     1   23  
  3     1   5  
  3     1   33  
  3     1   20  
  3     1   7  
  3     1   48  
  3     1   19  
  3     1   6  
  3     1   40  
  3     1   23  
  3     1   6  
  3     1   34  
  3     1   19  
  3     1   7  
  3     1   36  
  3     1   21  
  3     1   5  
  3     1   36  
  3     1   19  
  3     1   4  
  3     1   39  
  3         21  
  3         5  
  3         38  
  3         19  
  3         5  
  3         35  
  3         19  
  3         6  
  3         34  
  3         23  
  3         7  
  3         32  
  3         20  
  3         6  
  3         31  
  3         20  
  3         6  
  3         35  
  3         18  
  3         18  
  3         36  
  3         69  
  3         7  
  3         37  
  3         20  
  3         6  
  3         37  
  3         18  
  3         7  
  3         34  
  3         18  
  3         8  
  3         37  
  3         19  
  3         6  
  3         36  
  3         19  
  3         6  
  3         35  
  3         19  
  3         7  
  3         35  
  3         18  
  3         7  
  3         33  
  3         19  
  3         9  
  3         36  
  3         21  
  3         6  
  3         36  
  3         19  
  3         6  
  3         36  
  3         20  
  3         6  
  3         35  
  3         20  
  3         6  
  3         34  
  3         21  
  3         6  
  3         34  
  3         19  
  3         6  
  3         33  
  3         20  
  3         57  
  3         43  
  3         19  
  3         6  
  3         36  
  3         17  
  3         7  
  3         39  
  3         19  
  3         7  
  3         35  
  3         18  
  3         6  
  3         34  
  3         18  
  3         7  
  3         36  
  3         18  
  3         7  
  3         49  
  3         19  
  3         7  
  3         35  
  3         19  
  3         7  
  3         34  
  3         18  
  3         6  
  3         37  
  3         19  
  3         7  
  3         33  
  3         18  
  3         6  
  3         34  
  3         21  
  3         5  
  3         34  
  3         19  
  3         6  
  3         34  
  3         19  
  3         7  
  3         35  
  3         20  
  3         7  
  3         37  
  3         19  
  3         9  
  3         34  
  3         20  
  3         6  
  3         35  
  3         21  
  3         4  
  3         41  
  3         19  
  3         13  
  3         35  
  3         18  
  3         6  
  3         33  
  3         20  
  3         5  
  3         35  
  3         21  
  3         7  
  3         35  
  3         18  
  3         15  
  3         39  
  3         19  
  3         6  
  3         34  
  3         19  
  3         7  
  3         33  
  3         20  
  3         6  
  3         33  
  3         18  
  3         7  
  3         34  
  3         20  
  3         6  
  3         33  
  3         19  
  3         6  
  3         36  
  3         19  
  3         6  
  3         35  
  3         19  
  3         7  
  3         33  
  3         21  
  3         5  
  3         36  
  3         20  
  3         6  
  3         36  
  3         20  
  3         8  
  3         45  
  3         18  
  3         6  
  3         36  
  3         19  
  3         7  
  3         33  
  3         18  
  3         6  
  3         33  
  3         19  
  3         8  
  3         34  
  3         19  
  3         6  
  3         36  
  3         21  
  3         6  
  3         33  
  3         20  
  3         5  
  3         35  
  3         22  
  3         8  
  3         33  
  3         19  
  3         6  
  3         36  
  3         22  
  3         5  
  3         36  
  3         19  
  3         7  
  3         34  
  3         19  
  3         6  
  3         34  
  3         18  
  3         9  
  3         33  
  3         18  
  3         8  
  3         34  
  3         19  
  3         7  
  3         36  
  3         21  
  3         5  
  3         69  
  3         22  
  3         6  
  3         34  
  3         19  
  3         6  
  3         35  
  3         18  
  3         6  
  3         37  
  3         20  
  3         8  
  3         34  
  3         20  
  3         7  
  3         34  
  3         19  
  3         6  
  3         33  
  3         29  
  3         7  
  3         38  
  3         21  
  3         7  
  3         34  
  3         19  
  3         6  
  3         35  
  3         19  
  3         6  
  3         35  
  3         21  
  3         6  
  3         38  
  3         20  
  3         7  
  3         36  
  3         20  
  3         7  
  3         39  
  3         20  
  3         6  
  3         34  
  3         20  
  3         11  
  3         35  
  3         20  
  3         7  
  3         35  
  3         19  
  3         4  
  3         36  
  3         21  
  3         6  
  3         36  
  3         18  
  3         6  
  3         36  
  3         19  
  3         5  
  3         33  
  3         18  
  3         6  
  3         38  
  3         21  
  3         6  
  3         35  
  3         21  
  3         7  
  3         32  
  3         20  
  3         6  
  3         37  
  3         21  
  3         6  
  3         38  
  3         18  
  3         5  
  3         35  
  3         20  
  3         5  
  3         36  
  3         20  
  3         7  
  3         34  
  3         18  
  3         6  
  3         36  
  3         20  
  3         7  
  3         33  
  3         20  
  3         9  
  3         36  
  3         20  
  3         5  
  3         34  
  3         20  
  3         5  
  3         37  
  3         21  
  3         7  
  3         33  
  3         19  
  3         8  
  3         36  
  3         19  
  3         6  
  3         35  
  3         21  
  3         5  
  3         37  
  3         22  
  3         6  
  3         36  
  3         19  
  3         6  
  3         33  
  3         18  
  3         8  
  3         33  
  3         21  
  3         9  
  3         32  
  3         20  
  3         6  
  3         35  
  3         19  
  3         7  
  3         33  
  3         24  
  3         7  
  3         33  
  3         23  
  3         15  
  3         34  
  3         20  
  3         6  
  3         38  
  3         41  
  3         8  
  3         35  
  3         22  
  3         6  
  3         33  
  3         22  
  3         7  
  3         34  
  3         22  
  3         7  
  3         36  
  3         20  
  3         9  
  3         36  
  3         17  
  3         7  
  3         34  
  3         20  
  3         6  
  3         35  
  3         19  
  3         6  
  3         34  
  3         21  
  3         7  
  3         34  
  3         21  
  3         8  
  3         33  
  3         18  
  3         7  
  3         35  
  3         19  
  3         18  
  3         37  
  3         17  
  3         5  
  3         36  
  3         21  
  3         6  
  3         36  
  3         19  
  3         6  
  3         36  
  3         19  
  3         6  
  3         35  
  3         20  
  3         7  
  3         36  
  3         20  
  3         7  
  3         33  
  3         20  
  3         10  
  3         34  
  3         20  
  3         9  
  3         54  
  3         18  
  3         6  
  3         38  
  3         19  
  3         7  
  3         33  
  3         20  
  3         5  
  3         38  
  3         22  
  3         8  
  3         113  
  3         19  
  3         6  
  3         35  
  3         20  
  3         6  
  3         34  
  3         24  
  3         7  
  3         35  
  3         26  
  3         7  
  3         32  
  3         18  
  3         7  
  3         37  
  3         19  
  3         8  
  3         34  
  3         19  
  3         7  
  3         33  
  3         23  
  3         5  
  3         35  
  3         18  
  3         5  
  3         34  
  3         20  
  3         7  
  3         35  
  3         20  
  3         6  
  3         34  
  3         20  
  3         6  
  3         34  
  3         19  
  3         8  
  3         34  
  3         19  
  3         5  
  3         36  
  3         19  
  3         6  
  3         403  
  3         18  
  3         7  
  3         35  
  3         19  
  3         5  
  3         38  
  3         18  
  3         6  
  3         35  
  3         19  
  3         7  
  3         35  
  3         19  
  3         6  
  3         125  
  3         19  
  3         6  
  3         35  
  3         19  
  3         4  
  3         33  
  3         19  
  3         6  
  3         35  
  3         21  
  3         5  
  3         35  
  3         19  
  3         6  
  3         33  
  3         21  
  3         8  
  3         34  
  3         20  
  3         5  
  3         36  
  3         18  
  3         6  
  3         36  
  3         21  
  3         5  
  3         33  
  3         19  
  3         9  
  3         35  
  3         20  
  3         6  
  3         36  
  3         19  
  3         5  
  3         48  
  3         20  
  3         4  
  3         34  
  3         19  
  3         7  
  3         32  
  3         18  
  3         7  
  3         36  
  3         19  
  3         7  
  3         32  
  3         19  
  3         4  
  3         35  
  3         22  
  3         6  
  3         34  
  3         19  
  3         6  
  3         36  
  3         21  
  3         6  
  3         34  
  3         18  
  3         6  
  3         36  
  3         19  
  3         6  
  3         33  
  3         19  
  3         8  
  3         33  
  3         19  
  3         7  
  3         35  
  3         19  
  3         9  
  3         36  
  3         20  
  3         6  
  3         47  
  3         18  
  3         6  
  3         34  
  3         18  
  3         7  
  3         46  
  3         18  
  3         5  
  3         35  
  3         20  
  3         7  
  3         34  
  3         20  
  3         5  
  3         36  
  3         21  
  3         6  
  3         35  
  3         17  
  3         6  
  3         34  
  3         19  
  3         13  
  3         41  
  3         18  
  3         6  
  3         34  
  3         24  
  3         7  
  3         36  
  3         18  
  3         6  
  3         34  
  3         20  
  3         6  
  3         35  
  3         21  
  3         5  
  3         34  
  3         18  
  3         6  
  3         36  
  3         23  
  3         9  
  3         36  
  3         20  
  3         13  
  3         34  
  3         21  
  3         7  
  3         32  
  3         22  
  3         4  
  3         34  
  3         20  
  3         6  
  3         37  
  3         18  
  3         6  
  3         32  
  3         21  
  3         6  
  3         34  
  3         20  
  3         6  
  3         35  
  3         21  
  3         10  
  3         34  
  3         19  
  3         7  
  3         34  
  3         23  
  3         6  
  3         37  
  3         1079  
  3         6  
  3         40  
  3         18  
  3         7  
  3         36  
  3         17  
  3         7  
  3         34  
  3         20  
  3         6  
  3         33  
  3         53  
  3         4  
  3         37  
  3         19  
  3         6  
  3         36  
  3         22  
  3         6  
  3         47  
  3         18  
  3         6  
  3         33  
  3         982  
  3         6  
  3         39  
  3         18  
  3         5  
  3         34  
  3         20  
  3         6  
  3         33  
  3         19  
  3         7  
  3         33  
  3         20  
  3         5  
  3         34  
  3         20  
  3         4  
  3         33  
  3         19  
  3         6  
  3         34  
  3         18  
  3         7  
  3         68  
  3         19  
  3         5  
  3         47  
  3         19  
  3         6  
  3         32  
  3         21  
  3         8  
  3         33  
  3         19  
  3         40  
  3         39  
  3         20  
  3         8  
  3         33  
  3         20  
  3         6  
  3         36  
  3         19  
  3         5  
  3         797  
  3         21  
  3         7  
  3         39  
  3         19  
  3         6  
  3         33  
  3         18  
  3         6  
  3         34  
  3         17  
  3         6  
  3         33  
  3         19  
  3         5  
  3         42  
  3         19  
  3         5  
  3         34  
  1         7  
  1         2  
  1         126  
  1         6  
  1         2  
  1         11  
  1         6  
  1         2  
  1         12  
  1         6  
  1         2  
  1         10  
  1         7  
  1         2  
  1         11  
  1         7  
  1         2  
  1         11  
  1         6  
  1         2  
  1         12  
  1         6  
  1         2  
  1         11  
  1         7  
  1         2  
  1         11  
  1         6  
  1         2  
  1         11  
  1         8  
  1         2  
  1         10  
  1         7  
  1         2  
  1         12  
  1         7  
  1         2  
  1         12  
  1         7  
  1         1  
  1         13  
  1         6  
  1         2  
  1         12  
  1         6  
  1         2  
  1         10  
  1         7  
  1         1  
  1         11  
  1         7  
  1         2  
  1         10  
  1         6  
  1         2  
  1         10  
  1         5  
  1         3  
  1         12  
  1         6  
  1         2  
  1         12  
  1         5  
  1         2  
  1         11  
  1         6  
  1         2  
  1         12  
  1         6  
  1         1  
  1         12  
  1         6  
  1         2  
  1         12  
  1         7  
  1         2  
  1         10  
  1         7  
  1         2  
  1         11  
  1         6  
  1         2  
  1         23  
  1         6  
  1         2  
  1         12  
  1         7  
  1         2  
  1         11  
  1         6  
  1         3  
  1         12  
  1         6  
  1         2  
  1         11  
  1         6  
  1         2  
  1         13  
  1         8  
  1         2  
  1         12  
  1         6  
  1         3  
  1         11  
  1         7  
  1         1  
  1         11  
  1         7  
  1         2  
  1         13  
  1         7  
  1         3  
  1         11  
  1         7  
  1         1  
  1         13  
  1         6  
  1         3  
  1         12  
  1         6  
  1         3  
  1         13  
  1         6  
  1         2  
  1         10  
  1         6  
  1         2  
  1         12  
  1         6  
  1         2  
  1         11  
  1         7  
  1         3  
  1         10  
  1         8  
  1         2  
  1         11  
  1         7  
  1         2  
  1         12  
  1         7  
  1         2  
  1         12  
  1         7  
  1         2  
  1         10  
  1         6  
  1         2  
  1         11  
  1         7  
  1         2  
  1         11  
  1         7  
  1         2  
  1         12  
  1         8  
  1         2  
  1         11  
  1         6  
  1         2  
  1         11  
  1         7  
  1         2  
  1         10  
  1         6  
  1         2  
  1         11  
  1         6  
  1         2  
  1         11  
  1         20  
  1         3  
  1         12  
  1         6  
  1         2  
  1         16  
  1         7  
  1         2  
  1         13  
  1         6  
  1         2  
  1         12  
  1         5  
  1         2  
  1         12  
  1         6  
  1         2  
  1         11  
  1         6  
  1         3  
  1         11  
  1         6  
  1         3  
  1         11  
  1         7  
  1         1  
  1         11  
  1         6  
  1         3  
  1         13  
  1         8  
  1         2  
  1         21  
  1         6  
  1         2  
  1         12  
  1         7  
  1         3  
  1         11  
  1         6  
  1         2  
  1         13  
  1         6  
  1         2  
  1         11  
  1         6  
  1         2  
  1         12  
  1         7  
  1         2  
  1         12  
  1         6  
  1         2  
  1         11  
  1         6  
  1         2  
  1         11  
  1         6  
  1         2  
  1         12  
  1         6  
  1         2  
  1         12  
  1         7  
  1         2  
  1         11  
  1         6  
  1         2  
  1         11  
  1         6  
  1         1  
  1         11  
  1         8  
  1         2  
  1         13  
  1         6  
  1         2  
  1         12  
  1         6  
  1         3  
  1         11  
  1         6  
  1         3  
  1         13  
  1         7  
  1         3  
  1         22  
  1         6  
  1         2  
  1         12  
  1         6  
  1         2  
  1         11  
  1         5  
  1         2  
  1         12  
  1         6  
  1         2  
  1         12  
  1         7  
  1         3  
  1         11  
  1         7  
  1         2  
  1         12  
  1         7  
  1         2  
  1         11  
  1         7  
  1         3  
  1         11  
  1         6  
  1         3  
  1         11  
  1         6  
  1         1  
  1         13  
  1         6  
  1         2  
  1         13  
  1         6  
  1         2  
  1         13  
  1         6  
  1         2  
  1         12  
  1         6  
  1         1  
  1         11  
  1         6  
  1         2  
  1         11  
  1         7  
  1         2  
  1         11  
  1         6  
  1         2  
  1         11  
  1         8  
  1         1  
  1         12  
  1         6  
  1         2  
  1         14  
  1         7  
  1         3  
  1         11  
15             croak "Could not load $subclass: $@";
16              
17 1768         9264 return $package->create(%$options);
18             }
19              
20             # returns a series of subclasses
21             sub list {
22 3     3 0 20 my $self = shift;
23 3         8 my $dir = dirname(__FILE__);
24 3         35 my @pm_files = <$dir/PBKDF/*.pm>;
25 3         19 my @subclasses;
26 3         6 foreach (@pm_files) {
27 3         33 my $base = basename($_);
28 3         20 $base =~ s/\.pm$//;
29 3         6 push @subclasses,$base;
30             }
31 3         34 return @subclasses;
32             }
33              
34             sub generate_hash {
35 3     3 0 22 my $self = shift;
36 3         6 my ($salt,$passphrase) = @_;
37 3         33 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 2386 my $self = shift;
42 1767 50       3366 croak 'usage $obj->salt_key_iv($salt,$passphrase)' unless @_ == 2;
43              
44 1767         4230 my $hash = $self->generate_hash(@_);
45              
46 1767         66870122 my $key = substr($hash,0,$self->{key_len});
47 1767         3006 my $iv = substr($hash,$self->{key_len},$self->{iv_len});
48 1767         4823 return ($key,$iv);
49             }
50              
51             1;