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__ |