]> Dogcows Code - chaz/p5-File-KDBX/blobdiff - t/kdf.t
add initial WIP
[chaz/p5-File-KDBX] / t / kdf.t
diff --git a/t/kdf.t b/t/kdf.t
new file mode 100644 (file)
index 0000000..372298d
--- /dev/null
+++ b/t/kdf.t
@@ -0,0 +1,46 @@
+#!/usr/bin/env perl
+
+use warnings;
+use strict;
+
+use lib 't/lib';
+use TestCommon;
+
+use File::KDBX::Constants qw(:kdf);
+use Test::More;
+
+BEGIN { use_ok('File::KDBX::KDF') }
+
+subtest 'AES KDF' => sub {
+    my $kdf1 = File::KDBX::KDF->new(uuid => KDF_UUID_AES, seed => "\1" x 32, rounds => 10);
+    my $result1 = $kdf1->transform("\2" x 32);
+    is $result1, "\342\234cp\375\\p\253]\213\f\246\345\230\266\260\r\222j\332Z\204:\322 p\224mhm\360\222",
+        'AES KDF basically works';
+
+    like exception { $kdf1->transform("\2" x 33) }, qr/raw key must be 32 bytes/i,
+        'Transformation requires valid arguments';
+};
+
+subtest 'Argon2 KDF' => sub {
+    my $kdf1 = File::KDBX::KDF->new(
+        uuid        => KDF_UUID_ARGON2D,
+        salt        => "\2" x 32,
+        iterations  => 2,
+        parallelism => 2,
+    );
+    my $r1 = $kdf1->transform("\2" x 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",
+        'Argon2D KDF works';
+
+    my $kdf2 = File::KDBX::KDF->new(
+        uuid        => KDF_UUID_ARGON2ID,
+        salt        => "\2" x 32,
+        iterations  => 2,
+        parallelism => 3,
+    );
+    my $r2 = $kdf2->transform("\2" x 32);
+    is $r2, "S\304\304u\316\311\202^\214JW{\312=\236\307P\345\253\323\313\23\215\247\210O!#F\16\1x",
+        'Argon2ID KDF works';
+};
+
+done_testing;
This page took 0.020039 seconds and 4 git commands to generate.