File Coverage

blib/lib/Crypt/PBKDF2/Hash/HMACSHA2.pm
Criterion Covered Total %
statement 29 29 100.0
branch n/a
condition n/a
subroutine 11 11 100.0
pod 0 4 0.0
total 40 44 90.9


line stmt bran cond sub pod time code
1             package Crypt::PBKDF2::Hash::HMACSHA2;
2             # ABSTRACT: HMAC-SHA2 support for Crypt::PBKDF2 using Digest::SHA
3             our $VERSION = '0.261630'; # VERSION
4             our $AUTHORITY = 'cpan:ARODLAND'; # AUTHORITY
5 5     5   3276 use Moo 2;
  5         62  
  5         30  
6 5     5   1461 use strictures 2;
  5         28  
  5         160  
7 5     5   1635 use namespace::autoclean;
  5         7  
  5         57  
8 5     5   2279 use Digest::SHA ();
  5         10757  
  5         121  
9 5     5   24 use Type::Tiny;
  5         6  
  5         135  
10 5     5   17 use Types::Standard qw(Enum);
  5         7  
  5         80  
11              
12             with 'Crypt::PBKDF2::Hash';
13              
14             has 'sha_size' => (
15             is => 'ro',
16             isa => Type::Tiny->new(
17             name => 'SHASize',
18             parent => Enum[qw( 224 256 384 512 )],
19             display_name => 'valid number of bits for SHA-2',
20             ),
21             default => 256,
22             );
23              
24             has '_hasher' => (
25             is => 'lazy',
26             init_arg => undef,
27             );
28              
29             sub _build__hasher {
30 1028     1028   5554 my $self = shift;
31 1028         1551 my $shasize = $self->sha_size;
32              
33 1028         13079 return Digest::SHA->can("hmac_sha$shasize");
34             }
35              
36             sub hash_len {
37 9066     9066 0 12555 my $self = shift;
38 9066         29162 return $self->sha_size() / 8;
39             }
40              
41             sub generate {
42 1404200     1404200 0 1358746 my $self = shift; # ($data, $key)
43 1404200         13811719 return $self->_hasher->(@_);
44             }
45              
46             sub to_algo_string {
47 1022     1022 0 1192 my $self = shift;
48              
49 1022         2229 return $self->sha_size;
50             }
51              
52             sub from_algo_string {
53 1022     1022 0 1616 my ($class, $str) = @_;
54              
55 1022         17126 return $class->new( sha_size => $str );
56             }
57              
58             1;
59              
60             __END__