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.160010'; # TRIAL VERSION
4             our $AUTHORITY = 'cpan:ARODLAND'; # AUTHORITY
5 3     3   2518 use Moo 2;
  3         76  
  3         23  
6 3     3   975 use strictures 2;
  3         23  
  3         120  
7 3     3   718 use namespace::autoclean;
  3         5  
  3         25  
8 3     3   1912 use Digest::SHA ();
  3         7770  
  3         73  
9 3     3   18 use Type::Tiny;
  3         29  
  3         85  
10 3     3   21 use Types::Standard qw(Enum);
  3         12  
  3         45  
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 24     24   990 my $self = shift;
31 24         53 my $shasize = $self->sha_size;
32              
33 24         471 return Digest::SHA->can("hmac_sha$shasize");
34             }
35              
36             sub hash_len {
37 63     63 0 87 my $self = shift;
38 63         287 return $self->sha_size() / 8;
39             }
40              
41             sub generate {
42 4200     4200 0 5366 my $self = shift; # ($data, $key)
43 4200         80703 return $self->_hasher->(@_);
44             }
45              
46             sub to_algo_string {
47 21     21 0 32 my $self = shift;
48              
49 21         64 return $self->sha_size;
50             }
51              
52             sub from_algo_string {
53 21     21 0 35 my ($class, $str) = @_;
54              
55 21         552 return $class->new( sha_size => $str );
56             }
57              
58             1;
59              
60             __END__