]> Dogcows Code - chaz/p5-File-KDBX/blob - t/kdf.t
372298df2c0acd19a168f218f49f7e789892f4d3
[chaz/p5-File-KDBX] / t / kdf.t
1 #!/usr/bin/env perl
2
3 use warnings;
4 use strict;
5
6 use lib 't/lib';
7 use TestCommon;
8
9 use File::KDBX::Constants qw(:kdf);
10 use Test::More;
11
12 BEGIN { use_ok('File::KDBX::KDF') }
13
14 subtest 'AES KDF' => sub {
15 my $kdf1 = File::KDBX::KDF->new(uuid => KDF_UUID_AES, seed => "\1" x 32, rounds => 10);
16 my $result1 = $kdf1->transform("\2" x 32);
17 is $result1, "\342\234cp\375\\p\253]\213\f\246\345\230\266\260\r\222j\332Z\204:\322 p\224mhm\360\222",
18 'AES KDF basically works';
19
20 like exception { $kdf1->transform("\2" x 33) }, qr/raw key must be 32 bytes/i,
21 'Transformation requires valid arguments';
22 };
23
24 subtest 'Argon2 KDF' => sub {
25 my $kdf1 = File::KDBX::KDF->new(
26 uuid => KDF_UUID_ARGON2D,
27 salt => "\2" x 32,
28 iterations => 2,
29 parallelism => 2,
30 );
31 my $r1 = $kdf1->transform("\2" x 32);
32 is $r1, "\352\333\247\347+x#\"C\340\224\30\316\350\3068E\246\347H\263\214V\310\5\375\16N.K\320\255",
33 'Argon2D KDF works';
34
35 my $kdf2 = File::KDBX::KDF->new(
36 uuid => KDF_UUID_ARGON2ID,
37 salt => "\2" x 32,
38 iterations => 2,
39 parallelism => 3,
40 );
41 my $r2 = $kdf2->transform("\2" x 32);
42 is $r2, "S\304\304u\316\311\202^\214JW{\312=\236\307P\345\253\323\313\23\215\247\210O!#F\16\1x",
43 'Argon2ID KDF works';
44 };
45
46 done_testing;
This page took 0.03366 seconds and 3 git commands to generate.