From b86dcd5e065ed822a20c92848f5688cede2168ee Mon Sep 17 00:00:00 2001 From: Charles McGarvey Date: Sat, 6 Aug 2022 12:13:34 -0600 Subject: [PATCH] Version 0.905 --- Changes | 5 ++ META.json | 86 ++++++++++++++------------ META.yml | 82 ++++++++++++------------ Makefile.PL | 10 ++- README | 9 ++- lib/File/KDBX.pm | 10 +-- lib/File/KDBX/Cipher.pm | 4 +- lib/File/KDBX/Cipher/CBC.pm | 4 +- lib/File/KDBX/Cipher/Stream.pm | 5 +- lib/File/KDBX/Constants.pm | 4 +- lib/File/KDBX/Dumper.pm | 4 +- lib/File/KDBX/Dumper/KDB.pm | 4 +- lib/File/KDBX/Dumper/Raw.pm | 4 +- lib/File/KDBX/Dumper/V3.pm | 4 +- lib/File/KDBX/Dumper/V4.pm | 4 +- lib/File/KDBX/Dumper/XML.pm | 4 +- lib/File/KDBX/Entry.pm | 4 +- lib/File/KDBX/Error.pm | 4 +- lib/File/KDBX/Group.pm | 4 +- lib/File/KDBX/IO.pm | 4 +- lib/File/KDBX/IO/Crypt.pm | 4 +- lib/File/KDBX/IO/HashBlock.pm | 4 +- lib/File/KDBX/IO/HmacBlock.pm | 4 +- lib/File/KDBX/Iterator.pm | 4 +- lib/File/KDBX/KDF.pm | 4 +- lib/File/KDBX/KDF/AES.pm | 4 +- lib/File/KDBX/KDF/Argon2.pm | 4 +- lib/File/KDBX/Key.pm | 4 +- lib/File/KDBX/Key/ChallengeResponse.pm | 4 +- lib/File/KDBX/Key/Composite.pm | 4 +- lib/File/KDBX/Key/File.pm | 4 +- lib/File/KDBX/Key/Password.pm | 4 +- lib/File/KDBX/Key/YubiKey.pm | 10 +-- lib/File/KDBX/Loader.pm | 4 +- lib/File/KDBX/Loader/KDB.pm | 4 +- lib/File/KDBX/Loader/Raw.pm | 4 +- lib/File/KDBX/Loader/V3.pm | 4 +- lib/File/KDBX/Loader/V4.pm | 4 +- lib/File/KDBX/Loader/XML.pm | 4 +- lib/File/KDBX/Object.pm | 4 +- lib/File/KDBX/Safe.pm | 4 +- lib/File/KDBX/Transaction.pm | 4 +- lib/File/KDBX/Util.pm | 4 +- t/00-report-prereqs.dd | 8 +++ t/crypt.t | 2 +- 45 files changed, 200 insertions(+), 167 deletions(-) diff --git a/Changes b/Changes index 857ced2..8a20613 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,10 @@ Revision history for File-KDBX. +0.905 2022-08-06 12:12:42-0600 + * Declare Time::Local 1.19 as a required dependency. + * Declare CryptX 0.055 as a required dependency. Thanks HIGHTOWE. + * Fixed minor documentation errors. + 0.904 2022-07-07 21:51:17-0600 * Use expanded title, username in OTP parameters. diff --git a/META.json b/META.json index a3c9e99..73423f2 100644 --- a/META.json +++ b/META.json @@ -104,11 +104,14 @@ "Carp" : "0", "Crypt::Argon2" : "0", "Crypt::Cipher" : "0", + "Crypt::Cipher::AES" : "0", "Crypt::Digest" : "0", "Crypt::Mac::HMAC" : "0", "Crypt::Misc" : "0.049", "Crypt::Mode::CBC" : "0", "Crypt::PRNG" : "0", + "Crypt::Stream::ChaCha" : "0.048", + "Crypt::Stream::Salsa20" : "0.055", "Data::Dumper" : "0", "Devel::GlobalDestruction" : "0", "Encode" : "0", @@ -129,6 +132,7 @@ "Storable" : "0", "Symbol" : "0", "Text::ParseWords" : "0", + "Time::Local" : "1.19", "Time::Piece" : "1.33", "XML::LibXML" : "0", "XML::LibXML::Reader" : "0", @@ -138,6 +142,10 @@ "perl" : "5.010", "strict" : "0", "warnings" : "0" + }, + "suggests" : { + "Crypt::Stream::Serpent" : "0.055", + "Crypt::Stream::Twofish" : "0" } }, "test" : { @@ -168,155 +176,155 @@ "provides" : { "File::KDBX" : { "file" : "lib/File/KDBX.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Cipher" : { "file" : "lib/File/KDBX/Cipher.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Cipher::CBC" : { "file" : "lib/File/KDBX/Cipher/CBC.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Cipher::Stream" : { "file" : "lib/File/KDBX/Cipher/Stream.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Constants" : { "file" : "lib/File/KDBX/Constants.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Dumper" : { "file" : "lib/File/KDBX/Dumper.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Dumper::KDB" : { "file" : "lib/File/KDBX/Dumper/KDB.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Dumper::Raw" : { "file" : "lib/File/KDBX/Dumper/Raw.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Dumper::V3" : { "file" : "lib/File/KDBX/Dumper/V3.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Dumper::V4" : { "file" : "lib/File/KDBX/Dumper/V4.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Dumper::XML" : { "file" : "lib/File/KDBX/Dumper/XML.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Entry" : { "file" : "lib/File/KDBX/Entry.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Error" : { "file" : "lib/File/KDBX/Error.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Group" : { "file" : "lib/File/KDBX/Group.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::IO" : { "file" : "lib/File/KDBX/IO.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::IO::Crypt" : { "file" : "lib/File/KDBX/IO/Crypt.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::IO::HashBlock" : { "file" : "lib/File/KDBX/IO/HashBlock.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::IO::HmacBlock" : { "file" : "lib/File/KDBX/IO/HmacBlock.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Iterator" : { "file" : "lib/File/KDBX/Iterator.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::KDF" : { "file" : "lib/File/KDBX/KDF.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::KDF::AES" : { "file" : "lib/File/KDBX/KDF/AES.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::KDF::Argon2" : { "file" : "lib/File/KDBX/KDF/Argon2.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Key" : { "file" : "lib/File/KDBX/Key.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Key::ChallengeResponse" : { "file" : "lib/File/KDBX/Key/ChallengeResponse.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Key::Composite" : { "file" : "lib/File/KDBX/Key/Composite.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Key::File" : { "file" : "lib/File/KDBX/Key/File.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Key::Password" : { "file" : "lib/File/KDBX/Key/Password.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Key::YubiKey" : { "file" : "lib/File/KDBX/Key/YubiKey.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Loader" : { "file" : "lib/File/KDBX/Loader.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Loader::KDB" : { "file" : "lib/File/KDBX/Loader/KDB.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Loader::Raw" : { "file" : "lib/File/KDBX/Loader/Raw.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Loader::V3" : { "file" : "lib/File/KDBX/Loader/V3.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Loader::V4" : { "file" : "lib/File/KDBX/Loader/V4.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Loader::XML" : { "file" : "lib/File/KDBX/Loader/XML.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Object" : { "file" : "lib/File/KDBX/Object.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Safe" : { "file" : "lib/File/KDBX/Safe.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Transaction" : { "file" : "lib/File/KDBX/Transaction.pm", - "version" : "0.904" + "version" : "0.905" }, "File::KDBX::Util" : { "file" : "lib/File/KDBX/Util.pm", - "version" : "0.904" + "version" : "0.905" } }, "release_status" : "stable", @@ -331,7 +339,7 @@ "web" : "https://github.com/chazmcgarvey/File-KDBX" } }, - "version" : "0.904", + "version" : "0.905", "x_authority" : "cpan:CCM", "x_generated_by_perl" : "v5.36.0", "x_serialization_backend" : "Cpanel::JSON::XS version 4.30", diff --git a/META.yml b/META.yml index 855ea07..42e4c88 100644 --- a/META.yml +++ b/META.yml @@ -50,118 +50,118 @@ optional_features: provides: File::KDBX: file: lib/File/KDBX.pm - version: '0.904' + version: '0.905' File::KDBX::Cipher: file: lib/File/KDBX/Cipher.pm - version: '0.904' + version: '0.905' File::KDBX::Cipher::CBC: file: lib/File/KDBX/Cipher/CBC.pm - version: '0.904' + version: '0.905' File::KDBX::Cipher::Stream: file: lib/File/KDBX/Cipher/Stream.pm - version: '0.904' + version: '0.905' File::KDBX::Constants: file: lib/File/KDBX/Constants.pm - version: '0.904' + version: '0.905' File::KDBX::Dumper: file: lib/File/KDBX/Dumper.pm - version: '0.904' + version: '0.905' File::KDBX::Dumper::KDB: file: lib/File/KDBX/Dumper/KDB.pm - version: '0.904' + version: '0.905' File::KDBX::Dumper::Raw: file: lib/File/KDBX/Dumper/Raw.pm - version: '0.904' + version: '0.905' File::KDBX::Dumper::V3: file: lib/File/KDBX/Dumper/V3.pm - version: '0.904' + version: '0.905' File::KDBX::Dumper::V4: file: lib/File/KDBX/Dumper/V4.pm - version: '0.904' + version: '0.905' File::KDBX::Dumper::XML: file: lib/File/KDBX/Dumper/XML.pm - version: '0.904' + version: '0.905' File::KDBX::Entry: file: lib/File/KDBX/Entry.pm - version: '0.904' + version: '0.905' File::KDBX::Error: file: lib/File/KDBX/Error.pm - version: '0.904' + version: '0.905' File::KDBX::Group: file: lib/File/KDBX/Group.pm - version: '0.904' + version: '0.905' File::KDBX::IO: file: lib/File/KDBX/IO.pm - version: '0.904' + version: '0.905' File::KDBX::IO::Crypt: file: lib/File/KDBX/IO/Crypt.pm - version: '0.904' + version: '0.905' File::KDBX::IO::HashBlock: file: lib/File/KDBX/IO/HashBlock.pm - version: '0.904' + version: '0.905' File::KDBX::IO::HmacBlock: file: lib/File/KDBX/IO/HmacBlock.pm - version: '0.904' + version: '0.905' File::KDBX::Iterator: file: lib/File/KDBX/Iterator.pm - version: '0.904' + version: '0.905' File::KDBX::KDF: file: lib/File/KDBX/KDF.pm - version: '0.904' + version: '0.905' File::KDBX::KDF::AES: file: lib/File/KDBX/KDF/AES.pm - version: '0.904' + version: '0.905' File::KDBX::KDF::Argon2: file: lib/File/KDBX/KDF/Argon2.pm - version: '0.904' + version: '0.905' File::KDBX::Key: file: lib/File/KDBX/Key.pm - version: '0.904' + version: '0.905' File::KDBX::Key::ChallengeResponse: file: lib/File/KDBX/Key/ChallengeResponse.pm - version: '0.904' + version: '0.905' File::KDBX::Key::Composite: file: lib/File/KDBX/Key/Composite.pm - version: '0.904' + version: '0.905' File::KDBX::Key::File: file: lib/File/KDBX/Key/File.pm - version: '0.904' + version: '0.905' File::KDBX::Key::Password: file: lib/File/KDBX/Key/Password.pm - version: '0.904' + version: '0.905' File::KDBX::Key::YubiKey: file: lib/File/KDBX/Key/YubiKey.pm - version: '0.904' + version: '0.905' File::KDBX::Loader: file: lib/File/KDBX/Loader.pm - version: '0.904' + version: '0.905' File::KDBX::Loader::KDB: file: lib/File/KDBX/Loader/KDB.pm - version: '0.904' + version: '0.905' File::KDBX::Loader::Raw: file: lib/File/KDBX/Loader/Raw.pm - version: '0.904' + version: '0.905' File::KDBX::Loader::V3: file: lib/File/KDBX/Loader/V3.pm - version: '0.904' + version: '0.905' File::KDBX::Loader::V4: file: lib/File/KDBX/Loader/V4.pm - version: '0.904' + version: '0.905' File::KDBX::Loader::XML: file: lib/File/KDBX/Loader/XML.pm - version: '0.904' + version: '0.905' File::KDBX::Object: file: lib/File/KDBX/Object.pm - version: '0.904' + version: '0.905' File::KDBX::Safe: file: lib/File/KDBX/Safe.pm - version: '0.904' + version: '0.905' File::KDBX::Transaction: file: lib/File/KDBX/Transaction.pm - version: '0.904' + version: '0.905' File::KDBX::Util: file: lib/File/KDBX/Util.pm - version: '0.904' + version: '0.905' recommends: Compress::Raw::Zlib: '0' File::KDBX::XS: '0' @@ -173,11 +173,14 @@ requires: Carp: '0' Crypt::Argon2: '0' Crypt::Cipher: '0' + Crypt::Cipher::AES: '0' Crypt::Digest: '0' Crypt::Mac::HMAC: '0' Crypt::Misc: '0.049' Crypt::Mode::CBC: '0' Crypt::PRNG: '0' + Crypt::Stream::ChaCha: '0.048' + Crypt::Stream::Salsa20: '0.055' Data::Dumper: '0' Devel::GlobalDestruction: '0' Encode: '0' @@ -198,6 +201,7 @@ requires: Storable: '0' Symbol: '0' Text::ParseWords: '0' + Time::Local: '1.19' Time::Piece: '1.33' XML::LibXML: '0' XML::LibXML::Reader: '0' @@ -211,7 +215,7 @@ resources: bugtracker: https://github.com/chazmcgarvey/File-KDBX/issues homepage: https://github.com/chazmcgarvey/File-KDBX repository: https://github.com/chazmcgarvey/File-KDBX.git -version: '0.904' +version: '0.905' x_authority: cpan:CCM x_generated_by_perl: v5.36.0 x_serialization_backend: 'YAML::Tiny version 1.73' diff --git a/Makefile.PL b/Makefile.PL index a554cb8..df6d119 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -20,11 +20,14 @@ my %WriteMakefileArgs = ( "Carp" => 0, "Crypt::Argon2" => 0, "Crypt::Cipher" => 0, + "Crypt::Cipher::AES" => 0, "Crypt::Digest" => 0, "Crypt::Mac::HMAC" => 0, "Crypt::Misc" => "0.049", "Crypt::Mode::CBC" => 0, "Crypt::PRNG" => 0, + "Crypt::Stream::ChaCha" => "0.048", + "Crypt::Stream::Salsa20" => "0.055", "Data::Dumper" => 0, "Devel::GlobalDestruction" => 0, "Encode" => 0, @@ -45,6 +48,7 @@ my %WriteMakefileArgs = ( "Storable" => 0, "Symbol" => 0, "Text::ParseWords" => 0, + "Time::Local" => "1.19", "Time::Piece" => "1.33", "XML::LibXML" => 0, "XML::LibXML::Reader" => 0, @@ -69,7 +73,7 @@ my %WriteMakefileArgs = ( "lib" => 0, "utf8" => 0 }, - "VERSION" => "0.904", + "VERSION" => "0.905", "test" => { "TESTS" => "t/*.t" } @@ -80,11 +84,14 @@ my %FallbackPrereqs = ( "Carp" => 0, "Crypt::Argon2" => 0, "Crypt::Cipher" => 0, + "Crypt::Cipher::AES" => 0, "Crypt::Digest" => 0, "Crypt::Mac::HMAC" => 0, "Crypt::Misc" => "0.049", "Crypt::Mode::CBC" => 0, "Crypt::PRNG" => 0, + "Crypt::Stream::ChaCha" => "0.048", + "Crypt::Stream::Salsa20" => "0.055", "Data::Dumper" => 0, "Devel::GlobalDestruction" => 0, "Encode" => 0, @@ -114,6 +121,7 @@ my %FallbackPrereqs = ( "Test::More" => "1.001004_001", "Test::Warnings" => 0, "Text::ParseWords" => 0, + "Time::Local" => "1.19", "Time::Piece" => "1.33", "XML::LibXML" => 0, "XML::LibXML::Reader" => 0, diff --git a/README b/README index 6e3ebb4..40a2050 100644 --- a/README +++ b/README @@ -4,7 +4,7 @@ NAME VERSION - version 0.904 + version 0.905 SYNOPSIS @@ -576,7 +576,7 @@ METHODS $kdbx->add_entry($entry, %options); $kdbx->add_entry(%entry_attributes, %options); - Add a entry to a database. This is equivalent to identifying a parent + Add an entry to a database. This is equivalent to identifying a parent group and calling "add_entry" in File::KDBX::Group on the parent group, forwarding the arguments. Available options: @@ -875,7 +875,7 @@ METHODS keep (default: value of "history_max_size", no limit: -1) * max_age - Maximum age (in days) of historical entries to keep - (default: 365, no limit: -1) + (default: value of "maintenance_history_days", no limit: -1) randomize_seeds @@ -897,8 +897,7 @@ METHODS Randomizing these values has no effect on a loaded database. These are only used when a database is dumped. You normally do not need to call - this method explicitly because the dumper does it explicitly by - default. + this method explicitly because the dumper does it for you by default. key diff --git a/lib/File/KDBX.pm b/lib/File/KDBX.pm index 4d289df..2da002b 100644 --- a/lib/File/KDBX.pm +++ b/lib/File/KDBX.pm @@ -20,7 +20,7 @@ use Time::Piece 1.33; use boolean; use namespace::clean; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION our $WARNINGS = 1; fieldhashes \my (%SAFE, %KEYS); @@ -1121,7 +1121,7 @@ File::KDBX - Encrypted database to store secret text and files =head1 VERSION -version 0.904 +version 0.905 =head1 SYNOPSIS @@ -1684,7 +1684,7 @@ C - Search algorithm, one of C, C or C (default: Cadd_entry($entry, %options); $kdbx->add_entry(%entry_attributes, %options); -Add a entry to a database. This is equivalent to identifying a parent group and calling +Add an entry to a database. This is equivalent to identifying a parent group and calling L on the parent group, forwarding the arguments. Available options: =over 4 @@ -2021,7 +2021,7 @@ C - Maximum total size (in bytes) of historical entries to keep (defau =item * -C - Maximum age (in days) of historical entries to keep (default: 365, no limit: -1) +C - Maximum age (in days) of historical entries to keep (default: value of L, no limit: -1) =back @@ -2057,7 +2057,7 @@ L =back Randomizing these values has no effect on a loaded database. These are only used when a database is dumped. -You normally do not need to call this method explicitly because the dumper does it explicitly by default. +You normally do not need to call this method explicitly because the dumper does it for you by default. =head2 key diff --git a/lib/File/KDBX/Cipher.pm b/lib/File/KDBX/Cipher.pm index 4266dc6..75ea6a8 100644 --- a/lib/File/KDBX/Cipher.pm +++ b/lib/File/KDBX/Cipher.pm @@ -12,7 +12,7 @@ use Module::Load; use Scalar::Util qw(looks_like_number); use namespace::clean; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION my %CIPHERS; @@ -158,7 +158,7 @@ File::KDBX::Cipher - A block cipher mode or cipher stream =head1 VERSION -version 0.904 +version 0.905 =head1 SYNOPSIS diff --git a/lib/File/KDBX/Cipher/CBC.pm b/lib/File/KDBX/Cipher/CBC.pm index 1524160..9b0e226 100644 --- a/lib/File/KDBX/Cipher/CBC.pm +++ b/lib/File/KDBX/Cipher/CBC.pm @@ -11,7 +11,7 @@ use namespace::clean; extends 'File::KDBX::Cipher'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION has key_size => 32; sub iv_size { 16 } @@ -63,7 +63,7 @@ File::KDBX::Cipher::CBC - A CBC block cipher mode encrypter/decrypter =head1 VERSION -version 0.904 +version 0.905 =head1 SYNOPSIS diff --git a/lib/File/KDBX/Cipher/Stream.pm b/lib/File/KDBX/Cipher/Stream.pm index ee02998..3dfa07a 100644 --- a/lib/File/KDBX/Cipher/Stream.pm +++ b/lib/File/KDBX/Cipher/Stream.pm @@ -14,7 +14,7 @@ use namespace::clean; extends 'File::KDBX::Cipher'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION has 'counter', is => 'ro', default => 0; @@ -86,6 +86,7 @@ sub _stream { $counter = int($offset / 64); $pos = $offset % 64; } + load $pkg; my $s = $pkg->new($self->key, $self->iv, $counter); # seek to correct position within block $s->keystream($pos) if $pos; @@ -123,7 +124,7 @@ File::KDBX::Cipher::Stream - A cipher stream encrypter/decrypter =head1 VERSION -version 0.904 +version 0.905 =head1 SYNOPSIS diff --git a/lib/File/KDBX/Constants.pm b/lib/File/KDBX/Constants.pm index 13e5163..d41b351 100644 --- a/lib/File/KDBX/Constants.pm +++ b/lib/File/KDBX/Constants.pm @@ -15,7 +15,7 @@ use File::KDBX::Util qw(int64); use Scalar::Util qw(dualvar); use namespace::clean -except => 'import'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION BEGIN { my %CONSTANTS = ( @@ -348,7 +348,7 @@ File::KDBX::Constants - All the KDBX-related constants you could ever want =head1 VERSION -version 0.904 +version 0.905 =head1 SYNOPSIS diff --git a/lib/File/KDBX/Dumper.pm b/lib/File/KDBX/Dumper.pm index 0eca707..421776d 100644 --- a/lib/File/KDBX/Dumper.pm +++ b/lib/File/KDBX/Dumper.pm @@ -15,7 +15,7 @@ use Ref::Util qw(is_ref is_scalarref); use Scalar::Util qw(looks_like_number openhandle); use namespace::clean; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION sub new { @@ -287,7 +287,7 @@ File::KDBX::Dumper - Write KDBX files =head1 VERSION -version 0.904 +version 0.905 =head1 ATTRIBUTES diff --git a/lib/File/KDBX/Dumper/KDB.pm b/lib/File/KDBX/Dumper/KDB.pm index 1fab6f4..d83bb0c 100644 --- a/lib/File/KDBX/Dumper/KDB.pm +++ b/lib/File/KDBX/Dumper/KDB.pm @@ -14,7 +14,7 @@ use namespace::clean; extends 'File::KDBX::Dumper'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION sub _write_magic_numbers { '' } sub _write_headers { '' } @@ -136,7 +136,7 @@ File::KDBX::Dumper::KDB - Write KDB files =head1 VERSION -version 0.904 +version 0.905 =head1 DESCRIPTION diff --git a/lib/File/KDBX/Dumper/Raw.pm b/lib/File/KDBX/Dumper/Raw.pm index 82e4b6d..5223def 100644 --- a/lib/File/KDBX/Dumper/Raw.pm +++ b/lib/File/KDBX/Dumper/Raw.pm @@ -9,7 +9,7 @@ use namespace::clean; extends 'File::KDBX::Dumper'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION sub _dump { my $self = shift; @@ -48,7 +48,7 @@ File::KDBX::Dumper::Raw - A no-op dumper that dumps content as-is =head1 VERSION -version 0.904 +version 0.905 =head1 SYNOPSIS diff --git a/lib/File/KDBX/Dumper/V3.pm b/lib/File/KDBX/Dumper/V3.pm index d25a015..d5ff5d6 100644 --- a/lib/File/KDBX/Dumper/V3.pm +++ b/lib/File/KDBX/Dumper/V3.pm @@ -16,7 +16,7 @@ use namespace::clean; extends 'File::KDBX::Dumper'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION sub _write_headers { my $self = shift; @@ -187,7 +187,7 @@ File::KDBX::Dumper::V3 - Dump KDBX3 files =head1 VERSION -version 0.904 +version 0.905 =head1 BUGS diff --git a/lib/File/KDBX/Dumper/V4.pm b/lib/File/KDBX/Dumper/V4.pm index 28e2a8b..31f48e1 100644 --- a/lib/File/KDBX/Dumper/V4.pm +++ b/lib/File/KDBX/Dumper/V4.pm @@ -19,7 +19,7 @@ use namespace::clean; extends 'File::KDBX::Dumper'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION has _binaries_written => {}, is => 'ro'; @@ -374,7 +374,7 @@ File::KDBX::Dumper::V4 - Dump KDBX4 files =head1 VERSION -version 0.904 +version 0.905 =head1 BUGS diff --git a/lib/File/KDBX/Dumper/XML.pm b/lib/File/KDBX/Dumper/XML.pm index 69c52d0..b5cd47c 100644 --- a/lib/File/KDBX/Dumper/XML.pm +++ b/lib/File/KDBX/Dumper/XML.pm @@ -19,7 +19,7 @@ use namespace::clean; extends 'File::KDBX::Dumper'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION has allow_protection => 1; @@ -563,7 +563,7 @@ File::KDBX::Dumper::XML - Dump unencrypted XML KeePass files =head1 VERSION -version 0.904 +version 0.905 =head1 ATTRIBUTES diff --git a/lib/File/KDBX/Entry.pm b/lib/File/KDBX/Entry.pm index 7b9100d..6ca2051 100644 --- a/lib/File/KDBX/Entry.pm +++ b/lib/File/KDBX/Entry.pm @@ -21,7 +21,7 @@ use namespace::clean; extends 'File::KDBX::Object'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION my $PLACEHOLDER_MAX_DEPTH = 10; my %PLACEHOLDERS; @@ -681,7 +681,7 @@ File::KDBX::Entry - A KDBX database entry =head1 VERSION -version 0.904 +version 0.905 =head1 DESCRIPTION diff --git a/lib/File/KDBX/Error.pm b/lib/File/KDBX/Error.pm index 6c3589c..f041968 100644 --- a/lib/File/KDBX/Error.pm +++ b/lib/File/KDBX/Error.pm @@ -9,7 +9,7 @@ use Exporter qw(import); use Scalar::Util qw(blessed looks_like_number); use namespace::clean -except => 'import'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION our @EXPORT = qw(alert error throw); @@ -167,7 +167,7 @@ File::KDBX::Error - Represents something bad that happened =head1 VERSION -version 0.904 +version 0.905 =head1 ATTRIBUTES diff --git a/lib/File/KDBX/Group.pm b/lib/File/KDBX/Group.pm index 4c6356f..1e7e1c5 100644 --- a/lib/File/KDBX/Group.pm +++ b/lib/File/KDBX/Group.pm @@ -19,7 +19,7 @@ use namespace::clean; extends 'File::KDBX::Object'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION # has uuid => sub { generate_uuid(printable => 1) }; @@ -398,7 +398,7 @@ File::KDBX::Group - A KDBX database group =head1 VERSION -version 0.904 +version 0.905 =head1 DESCRIPTION diff --git a/lib/File/KDBX/IO.pm b/lib/File/KDBX/IO.pm index a849354..cffcf88 100644 --- a/lib/File/KDBX/IO.pm +++ b/lib/File/KDBX/IO.pm @@ -14,7 +14,7 @@ use namespace::clean; extends 'IO::Handle'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION sub _croak { require Carp; goto &Carp::croak } @@ -390,7 +390,7 @@ File::KDBX::IO - Base IO class for KDBX-related streams =head1 VERSION -version 0.904 +version 0.905 =head1 DESCRIPTION diff --git a/lib/File/KDBX/IO/Crypt.pm b/lib/File/KDBX/IO/Crypt.pm index 4d188bd..3b2636f 100644 --- a/lib/File/KDBX/IO/Crypt.pm +++ b/lib/File/KDBX/IO/Crypt.pm @@ -11,7 +11,7 @@ use namespace::clean; extends 'File::KDBX::IO'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION our $BUFFER_SIZE = 16384; our $ERROR; @@ -139,7 +139,7 @@ File::KDBX::IO::Crypt - Encrypter/decrypter IO handle =head1 VERSION -version 0.904 +version 0.905 =head1 SYNOPSIS diff --git a/lib/File/KDBX/IO/HashBlock.pm b/lib/File/KDBX/IO/HashBlock.pm index f7e200d..ae8aac1 100644 --- a/lib/File/KDBX/IO/HashBlock.pm +++ b/lib/File/KDBX/IO/HashBlock.pm @@ -13,7 +13,7 @@ use namespace::clean; extends 'File::KDBX::IO'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION our $ALGORITHM = 'SHA256'; our $BLOCK_SIZE = 1048576; # 1MiB our $ERROR; @@ -208,7 +208,7 @@ File::KDBX::IO::HashBlock - Hash block stream IO handle =head1 VERSION -version 0.904 +version 0.905 =head1 DESCRIPTION diff --git a/lib/File/KDBX/IO/HmacBlock.pm b/lib/File/KDBX/IO/HmacBlock.pm index e47f004..69afacd 100644 --- a/lib/File/KDBX/IO/HmacBlock.pm +++ b/lib/File/KDBX/IO/HmacBlock.pm @@ -13,7 +13,7 @@ use namespace::clean; extends 'File::KDBX::IO'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION our $BLOCK_SIZE = 1048576; # 1MiB our $ERROR; @@ -212,7 +212,7 @@ File::KDBX::IO::HmacBlock - HMAC block stream IO handle =head1 VERSION -version 0.904 +version 0.905 =head1 DESCRIPTION diff --git a/lib/File/KDBX/Iterator.pm b/lib/File/KDBX/Iterator.pm index 1e4547f..6b9a153 100644 --- a/lib/File/KDBX/Iterator.pm +++ b/lib/File/KDBX/Iterator.pm @@ -14,7 +14,7 @@ use namespace::clean; BEGIN { mark_as_loaded('Iterator::Simple::Iterator') } extends 'Iterator::Simple::Iterator'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION sub new { @@ -221,7 +221,7 @@ File::KDBX::Iterator - KDBX database iterator =head1 VERSION -version 0.904 +version 0.905 =head1 SYNOPSIS diff --git a/lib/File/KDBX/KDF.pm b/lib/File/KDBX/KDF.pm index a3dc259..91d9bac 100644 --- a/lib/File/KDBX/KDF.pm +++ b/lib/File/KDBX/KDF.pm @@ -12,7 +12,7 @@ use Module::Load; use Scalar::Util qw(blessed); use namespace::clean; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION my %KDFS; @@ -120,7 +120,7 @@ File::KDBX::KDF - A key derivation function =head1 VERSION -version 0.904 +version 0.905 =head1 DESCRIPTION diff --git a/lib/File/KDBX/KDF/AES.pm b/lib/File/KDBX/KDF/AES.pm index 9b30c0a..05d707f 100644 --- a/lib/File/KDBX/KDF/AES.pm +++ b/lib/File/KDBX/KDF/AES.pm @@ -13,7 +13,7 @@ use namespace::clean; extends 'File::KDBX::KDF'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION # Rounds higher than this are eligible for forking: my $FORK_OPTIMIZATION_THRESHOLD = 100_000; @@ -111,7 +111,7 @@ File::KDBX::KDF::AES - Using the AES cipher as a key derivation function =head1 VERSION -version 0.904 +version 0.905 =head1 DESCRIPTION diff --git a/lib/File/KDBX/KDF/Argon2.pm b/lib/File/KDBX/KDF/Argon2.pm index 6d0ce8c..e1c8b44 100644 --- a/lib/File/KDBX/KDF/Argon2.pm +++ b/lib/File/KDBX/KDF/Argon2.pm @@ -12,7 +12,7 @@ use namespace::clean; extends 'File::KDBX::KDF'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION sub salt { $_[0]->{+KDF_PARAM_ARGON2_SALT} or throw 'Salt is not set' } @@ -69,7 +69,7 @@ File::KDBX::KDF::Argon2 - The Argon2 family of key derivation functions =head1 VERSION -version 0.904 +version 0.905 =head1 DESCRIPTION diff --git a/lib/File/KDBX/Key.pm b/lib/File/KDBX/Key.pm index e57c3ca..7e9a17e 100644 --- a/lib/File/KDBX/Key.pm +++ b/lib/File/KDBX/Key.pm @@ -14,7 +14,7 @@ use Ref::Util qw(is_arrayref is_coderef is_hashref is_ref is_scalarref); use Scalar::Util qw(blessed openhandle); use namespace::clean; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION fieldhashes \my %SAFE; @@ -140,7 +140,7 @@ File::KDBX::Key - A credential that can protect a KDBX file =head1 VERSION -version 0.904 +version 0.905 =head1 DESCRIPTION diff --git a/lib/File/KDBX/Key/ChallengeResponse.pm b/lib/File/KDBX/Key/ChallengeResponse.pm index 071c9ec..e9c47fa 100644 --- a/lib/File/KDBX/Key/ChallengeResponse.pm +++ b/lib/File/KDBX/Key/ChallengeResponse.pm @@ -10,7 +10,7 @@ use namespace::clean; extends 'File::KDBX::Key'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION sub init { my $self = shift; @@ -56,7 +56,7 @@ File::KDBX::Key::ChallengeResponse - A challenge-response key =head1 VERSION -version 0.904 +version 0.905 =head1 SYNOPSIS diff --git a/lib/File/KDBX/Key/Composite.pm b/lib/File/KDBX/Key/Composite.pm index 659b85a..8d87370 100644 --- a/lib/File/KDBX/Key/Composite.pm +++ b/lib/File/KDBX/Key/Composite.pm @@ -13,7 +13,7 @@ use namespace::clean; extends 'File::KDBX::Key'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION sub init { my $self = shift; @@ -92,7 +92,7 @@ File::KDBX::Key::Composite - A composite key made up of component keys =head1 VERSION -version 0.904 +version 0.905 =head1 SYNOPSIS diff --git a/lib/File/KDBX/Key/File.pm b/lib/File/KDBX/Key/File.pm index a5ff6c8..55dbb26 100644 --- a/lib/File/KDBX/Key/File.pm +++ b/lib/File/KDBX/Key/File.pm @@ -17,7 +17,7 @@ use namespace::clean; extends 'File::KDBX::Key'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION has 'type', is => 'ro'; @@ -262,7 +262,7 @@ File::KDBX::Key::File - A file key =head1 VERSION -version 0.904 +version 0.905 =head1 SYNOPSIS diff --git a/lib/File/KDBX/Key/Password.pm b/lib/File/KDBX/Key/Password.pm index 99c752c..1a899fc 100644 --- a/lib/File/KDBX/Key/Password.pm +++ b/lib/File/KDBX/Key/Password.pm @@ -12,7 +12,7 @@ use namespace::clean; extends 'File::KDBX::Key'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION sub init { my $self = shift; @@ -37,7 +37,7 @@ File::KDBX::Key::Password - A password key =head1 VERSION -version 0.904 +version 0.905 =head1 SYNOPSIS diff --git a/lib/File/KDBX/Key/YubiKey.pm b/lib/File/KDBX/Key/YubiKey.pm index 838b296..515b23c 100644 --- a/lib/File/KDBX/Key/YubiKey.pm +++ b/lib/File/KDBX/Key/YubiKey.pm @@ -14,7 +14,7 @@ use namespace::clean; extends 'File::KDBX::Key::ChallengeResponse'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION # It can take some time for the USB device to be ready again, so we can retry a few times. our $RETRY_COUNT = 5; @@ -296,7 +296,7 @@ File::KDBX::Key::YubiKey - A Yubico challenge-response key =head1 VERSION -version 0.904 +version 0.905 =head1 SYNOPSIS @@ -336,7 +336,7 @@ See L for more information. $device = $key->device($device); Get or set the device number, which is the index number starting and incrementing from zero assigned -to the YubiKey device. If there is only one detected YubiKey device, it's number is C<0>. +to the YubiKey device. If there is only one detected YubiKey device, its number is C<0>. Defaults to C<0>. @@ -412,7 +412,7 @@ Get or set the L program name or filepath. Defaults to C<$ENV{YKINFO} @keys = File::KDBX::Key::YubiKey->scan(%options); Find connected, configured YubiKeys that are capable of responding to a challenge. This can take several -second. +seconds. Options: @@ -485,7 +485,7 @@ override the default programs, these environment variables can be used. This doesn't work yet on Windows, probably. The hangup is pretty silly: IPC. Theoretically it would work if C from L worked in Windows, but it probably doesn't. I spent a couple hours applying various quirks to L and L implementations but never quite got it to worked reliably -without deadlocks. Maybe I'll revisit this later. Hit me up so I know if there's demand. +without deadlocks. Maybe I'll revisit this later. Hit me up so I know if there's interest. It would also be possible to implement this as an XS module that incorporated ykcore, using libusb-1 which would probably make it more portable with Windows. Perhaps if I get around to it. diff --git a/lib/File/KDBX/Loader.pm b/lib/File/KDBX/Loader.pm index 049db25..1be16a5 100644 --- a/lib/File/KDBX/Loader.pm +++ b/lib/File/KDBX/Loader.pm @@ -14,7 +14,7 @@ use Ref::Util qw(is_ref is_scalarref); use Scalar::Util qw(looks_like_number openhandle); use namespace::clean; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION sub new { @@ -249,7 +249,7 @@ File::KDBX::Loader - Load KDBX files =head1 VERSION -version 0.904 +version 0.905 =head1 DESCRIPTION diff --git a/lib/File/KDBX/Loader/KDB.pm b/lib/File/KDBX/Loader/KDB.pm index 812030d..b4f6620 100644 --- a/lib/File/KDBX/Loader/KDB.pm +++ b/lib/File/KDBX/Loader/KDB.pm @@ -17,7 +17,7 @@ use namespace::clean; extends 'File::KDBX::Loader'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION my $DEFAULT_EXPIRATION = Time::Piece->strptime('2999-12-31 23:59:59', '%Y-%m-%d %H:%M:%S'); @@ -397,7 +397,7 @@ File::KDBX::Loader::KDB - Read KDB files =head1 VERSION -version 0.904 +version 0.905 =head1 DESCRIPTION diff --git a/lib/File/KDBX/Loader/Raw.pm b/lib/File/KDBX/Loader/Raw.pm index 6ac8f3b..c7921d1 100644 --- a/lib/File/KDBX/Loader/Raw.pm +++ b/lib/File/KDBX/Loader/Raw.pm @@ -9,7 +9,7 @@ use namespace::clean; extends 'File::KDBX::Loader'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION sub _read { my $self = shift; @@ -47,7 +47,7 @@ File::KDBX::Loader::Raw - A no-op loader that doesn't do any parsing =head1 VERSION -version 0.904 +version 0.905 =head1 SYNOPSIS diff --git a/lib/File/KDBX/Loader/V3.pm b/lib/File/KDBX/Loader/V3.pm index 1b34a28..0de336f 100644 --- a/lib/File/KDBX/Loader/V3.pm +++ b/lib/File/KDBX/Loader/V3.pm @@ -27,7 +27,7 @@ use namespace::clean; extends 'File::KDBX::Loader'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION sub _read_header { my $self = shift; @@ -174,7 +174,7 @@ File::KDBX::Loader::V3 - Load KDBX3 files =head1 VERSION -version 0.904 +version 0.905 =head1 BUGS diff --git a/lib/File/KDBX/Loader/V4.pm b/lib/File/KDBX/Loader/V4.pm index ba07eea..1ef3c82 100644 --- a/lib/File/KDBX/Loader/V4.pm +++ b/lib/File/KDBX/Loader/V4.pm @@ -30,7 +30,7 @@ use namespace::clean; extends 'File::KDBX::Loader'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION sub _read_header { my $self = shift; @@ -273,7 +273,7 @@ File::KDBX::Loader::V4 - Load KDBX4 files =head1 VERSION -version 0.904 +version 0.905 =head1 BUGS diff --git a/lib/File/KDBX/Loader/XML.pm b/lib/File/KDBX/Loader/XML.pm index 3d4e671..3736ba1 100644 --- a/lib/File/KDBX/Loader/XML.pm +++ b/lib/File/KDBX/Loader/XML.pm @@ -18,7 +18,7 @@ use namespace::clean; extends 'File::KDBX::Loader'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION has '_reader', is => 'ro'; has '_safe', is => 'ro', default => sub { File::KDBX::Safe->new(cipher => $_[0]->kdbx->random_stream) }; @@ -589,7 +589,7 @@ File::KDBX::Loader::XML - Load unencrypted XML KeePass files =head1 VERSION -version 0.904 +version 0.905 =head1 BUGS diff --git a/lib/File/KDBX/Object.pm b/lib/File/KDBX/Object.pm index 67a0cab..39c3eb1 100644 --- a/lib/File/KDBX/Object.pm +++ b/lib/File/KDBX/Object.pm @@ -14,7 +14,7 @@ use Ref::Util qw(is_arrayref is_plain_arrayref is_plain_hashref is_ref); use Scalar::Util qw(blessed weaken); use namespace::clean; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION fieldhashes \my (%KDBX, %PARENT, %TXNS, %REFS, %SIGNALS); @@ -526,7 +526,7 @@ File::KDBX::Object - A KDBX database object =head1 VERSION -version 0.904 +version 0.905 =head1 DESCRIPTION diff --git a/lib/File/KDBX/Safe.pm b/lib/File/KDBX/Safe.pm index 463ca7f..b56ffc2 100644 --- a/lib/File/KDBX/Safe.pm +++ b/lib/File/KDBX/Safe.pm @@ -14,7 +14,7 @@ use Ref::Util qw(is_arrayref is_coderef is_hashref is_scalarref); use Scalar::Util qw(refaddr); use namespace::clean; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION sub new { @@ -217,7 +217,7 @@ File::KDBX::Safe - Keep strings encrypted while in memory =head1 VERSION -version 0.904 +version 0.905 =head1 SYNOPSIS diff --git a/lib/File/KDBX/Transaction.pm b/lib/File/KDBX/Transaction.pm index 99088ec..1c0cb4f 100644 --- a/lib/File/KDBX/Transaction.pm +++ b/lib/File/KDBX/Transaction.pm @@ -8,7 +8,7 @@ use Devel::GlobalDestruction; use File::KDBX::Util qw(:class); use namespace::clean; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION sub new { @@ -59,7 +59,7 @@ File::KDBX::Transaction - Make multiple database edits atomically =head1 VERSION -version 0.904 +version 0.905 =head1 ATTRIBUTES diff --git a/lib/File/KDBX/Util.pm b/lib/File/KDBX/Util.pm index 9e46dfd..d0e4673 100644 --- a/lib/File/KDBX/Util.pm +++ b/lib/File/KDBX/Util.pm @@ -17,7 +17,7 @@ use Time::Piece 1.33; use boolean; use namespace::clean -except => 'import'; -our $VERSION = '0.904'; # VERSION +our $VERSION = '0.905'; # VERSION our %EXPORT_TAGS = ( assert => [qw(DEBUG assert)], @@ -870,7 +870,7 @@ File::KDBX::Util - Utility functions for working with KDBX files =head1 VERSION -version 0.904 +version 0.905 =head1 FUNCTIONS diff --git a/t/00-report-prereqs.dd b/t/00-report-prereqs.dd index 9256fc0..59901ae 100644 --- a/t/00-report-prereqs.dd +++ b/t/00-report-prereqs.dd @@ -46,11 +46,14 @@ do { my $x = { 'Carp' => '0', 'Crypt::Argon2' => '0', 'Crypt::Cipher' => '0', + 'Crypt::Cipher::AES' => '0', 'Crypt::Digest' => '0', 'Crypt::Mac::HMAC' => '0', 'Crypt::Misc' => '0.049', 'Crypt::Mode::CBC' => '0', 'Crypt::PRNG' => '0', + 'Crypt::Stream::ChaCha' => '0.048', + 'Crypt::Stream::Salsa20' => '0.055', 'Data::Dumper' => '0', 'Devel::GlobalDestruction' => '0', 'Encode' => '0', @@ -71,6 +74,7 @@ do { my $x = { 'Storable' => '0', 'Symbol' => '0', 'Text::ParseWords' => '0', + 'Time::Local' => '1.19', 'Time::Piece' => '1.33', 'XML::LibXML' => '0', 'XML::LibXML::Reader' => '0', @@ -80,6 +84,10 @@ do { my $x = { 'perl' => '5.010', 'strict' => '0', 'warnings' => '0' + }, + 'suggests' => { + 'Crypt::Stream::Serpent' => '0.055', + 'Crypt::Stream::Twofish' => '0' } }, 'test' => { diff --git a/t/crypt.t b/t/crypt.t index 69a52ef..abb6dc6 100644 --- a/t/crypt.t +++ b/t/crypt.t @@ -40,7 +40,7 @@ subtest 'Error handling' => sub { pipe(my $read, my $write) or die "pipe failed: $!"; $read = File::KDBX::IO::Crypt->new($read, cipher => $block_cipher); - print $write "blah blah blah!\1"; + print $write "blah blah blah!"; # should produce: FATAL: cipher text length has to be multiple of 16 (15) close($write) or die "close failed: $!"; is $read->error, '', 'Read handle starts out fine'; -- 2.45.2