File Coverage

lib/Dancer2/Plugin/Argon2/Passphrase.pm
Criterion Covered Total %
statement 23 23 100.0
branch n/a
condition n/a
subroutine 8 8 100.0
pod 2 3 66.6
total 33 34 97.0


line stmt bran cond sub pod time code
1             package Dancer2::Plugin::Argon2::Passphrase;
2              
3 3     3   58 use 5.008001;
  3         13  
4 3     3   14 use strict;
  3         4  
  3         56  
5 3     3   12 use warnings;
  3         10  
  3         143  
6              
7             our $VERSION = '0.01';
8              
9 3     3   1174 use Crypt::Argon2 qw( argon2id_pass argon2id_verify );
  3         1333  
  3         160  
10 3     3   1195 use Crypt::URandom;
  3         9275  
  3         436  
11              
12             sub new {
13 5     5 0 14 my ( $class, $settings ) = @_;
14 5         22 return bless $settings, $class;
15             }
16              
17             sub encoded {
18 2     2 1 5 my $self = shift;
19 2         9 $self->{salt} = Crypt::URandom::urandom(16);
20 2         1395 my @argon2_params = ( map { $self->{$_} } qw( salt cost factor parallelism size ) );
  10         19  
21 2         349624 return argon2id_pass( $self->{password}, @argon2_params );
22             }
23              
24             sub matches {
25 2     2 1 6 my ( $self, $passphrase ) = @_;
26 2         375209 return argon2id_verify( $passphrase, $self->{password} );
27             }
28              
29             1;
30             __END__