X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=lib%2FFile%2FKDBX%2FDumper%2FXML.pm;h=c7ff83007b683a6cf8baf32729bd49352b1ba2e0;hb=700fa117555b87eda7227f9083c0fc0df052c64f;hp=86eb5c9065073d09c992c26f5322bea47ed26ecd;hpb=1d0a10e989a4d0487aa13cf4f56e533d3795469d;p=chaz%2Fp5-File-KDBX diff --git a/lib/File/KDBX/Dumper/XML.pm b/lib/File/KDBX/Dumper/XML.pm index 86eb5c9..c7ff830 100644 --- a/lib/File/KDBX/Dumper/XML.pm +++ b/lib/File/KDBX/Dumper/XML.pm @@ -9,10 +9,10 @@ use Crypt::Misc 0.029 qw(encode_b64); use Encode qw(encode); use File::KDBX::Constants qw(:version :time); use File::KDBX::Error; -use File::KDBX::Util qw(:class assert_64bit erase_scoped gzip snakify); +use File::KDBX::Util qw(:class :int erase_scoped gzip snakify); use IO::Handle; use Scalar::Util qw(blessed isdual looks_like_number); -use Time::Piece; +use Time::Piece 1.33; use XML::LibXML; use boolean; use namespace::clean; @@ -62,8 +62,8 @@ the authenticity of header data. This is unnecessary and should not be used with format uses HMAC-SHA256 to detect tampering. L automatically calculates the header hash an provides it to this module, and plain -XML files which don't have a KDBX wrapper don't have headers and so should have a header hash. Therefore there -is probably never any reason to set this manually. +XML files which don't have a KDBX wrapper don't have headers and so should not have a header hash. Therefore +there is probably never any reason to set this manually. =cut @@ -178,8 +178,8 @@ sub _write_xml_binaries { my $new_ref = keys %{$self->_binaries_written}; my $written = $self->_binaries_written; - my $entries = $kdbx->all_entries(history => true); - for my $entry (@$entries) { + my $entries = $kdbx->entries(history => 1); + while (my $entry = $entries->next) { for my $key (keys %{$entry->binaries}) { my $binary = $entry->binaries->{$key}; if (defined $binary->{ref} && defined $kdbx->binaries->{$binary->{ref}}) { @@ -571,9 +571,8 @@ sub _encode_datetime { sub _encode_datetime_binary { local $_ = shift; - assert_64bit; my $seconds_since_ad1 = $_ + TIME_SECONDS_AD1_TO_UNIX_EPOCH; - my $buf = pack('Q<', $seconds_since_ad1->epoch); + my $buf = pack_Ql($seconds_since_ad1->epoch); return eval { encode_b64($buf) }; }