X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fp5-File-KDBX;a=blobdiff_plain;f=lib%2FFile%2FKDBX%2FKDF%2FAES.pm;h=161c08615f2dabe205a38d715a07d03efad25797;hp=fd954f805f124181b9e329812f4315dd491e46f0;hb=b4e8407685b3f9ce0193aedf05f6651ed588a448;hpb=eb5adf956fc6b9285b43ce6965eea728573e7864 diff --git a/lib/File/KDBX/KDF/AES.pm b/lib/File/KDBX/KDF/AES.pm index fd954f8..161c086 100644 --- a/lib/File/KDBX/KDF/AES.pm +++ b/lib/File/KDBX/KDF/AES.pm @@ -6,7 +6,7 @@ use strict; use Crypt::Cipher; use Crypt::Digest qw(digest_data); -use File::KDBX::Constants qw(:kdf); +use File::KDBX::Constants qw(:bool :kdf); use File::KDBX::Error; use File::KDBX::Util qw(:load can_fork); use namespace::clean; @@ -19,11 +19,8 @@ our $VERSION = '999.999'; # VERSION my $FORK_OPTIMIZATION_THRESHOLD = 100_000; BEGIN { - load_xs; - - my $use_fork = 1; - $use_fork = 0 if $ENV{NO_FORK} || !can_fork; - *_USE_FORK = $use_fork ? sub() { 1 } : sub() { 0 }; + my $use_fork = $ENV{NO_FORK} || !can_fork ? FALSE : TRUE; + *_USE_FORK = sub() { $use_fork }; } sub init { @@ -87,10 +84,7 @@ sub _transform { return digest_data('SHA256', $l, $r); } -sub _transform_half { - my $xs = __PACKAGE__->can('_transform_half_xs'); - goto $xs if $xs; - +sub _transform_half_pp { my $seed = shift; my $key = shift; my $rounds = shift; @@ -105,6 +99,11 @@ sub _transform_half { return $result; } +BEGIN { + my $use_xs = load_xs; + *_transform_half = $use_xs ? \&File::KDBX::XS::kdf_aes_transform_half : \&_transform_half_pp; +} + 1; __END__