my $num = shift;
require Config;
if ($Config::Config{ivsize} < 8) {
- if (blessed $num && $num->can('to_hex')) {
+ if (blessed $num && $num->can('as_hex')) {
return "\xff\xff\xff\xff\xff\xff\xff\xff" if Math::BigInt->new('18446744073709551615') <= $num;
return "\x00\x00\x00\x00\x00\x00\x00\x80" if $num <= Math::BigInt->new('-9223372036854775808');
my $neg;
$neg = 1;
$num = -$num;
}
- my $bytes = reverse pack('H16', substr(('0' x 15) . $num->to_hex, -16));
+ my $hex = $num->as_hex;
+ $hex =~ s/^0x/000000000000000/;
+ my $bytes = reverse pack('H16', substr($hex, -16));
$bytes .= "\0" x (8 - length $bytes) if length $bytes < 8;
if ($neg) {
# two's compliment
require Config;
if ($Config::Config{ivsize} < 8) {
require Math::BigInt;
- return (Math::BigInt->new('0x' . unpack('H*', scalar reverse $bytes)));
+ return Math::BigInt->new('0x' . unpack('H*', scalar reverse $bytes));
}
return unpack('Q<', $bytes);
}
if ($Config::Config{ivsize} < 8) {
require Math::BigInt;
if (ord(substr($bytes, -1, 1)) & 128) {
- return (Math::BigInt->new('-9223372036854775808')) if $bytes eq "\x00\x00\x00\x00\x00\x00\x00\x80";
+ return Math::BigInt->new('-9223372036854775808') if $bytes eq "\x00\x00\x00\x00\x00\x00\x00\x80";
# two's compliment
substr($bytes, 0, 1, chr(ord(substr($bytes, 0, 1)) - 1));
$bytes = join('', map { chr(~ord($_) & 0xff) } split(//, $bytes));
- return (-Math::BigInt->new('0x' . unpack('H*', scalar reverse $bytes)));
+ return -Math::BigInt->new('0x' . unpack('H*', scalar reverse $bytes));
}
else {
- return (Math::BigInt->new('0x' . unpack('H*', scalar reverse $bytes)));
+ return Math::BigInt->new('0x' . unpack('H*', scalar reverse $bytes));
}
}
return unpack('q<', $bytes);
my $entry = File::KDBX::Entry->new;
$entry->creation_time('2022-02-02 12:34:56');
- cmp_ok $entry->creation_time, '==', 1643805296, 'Creation time coerced into a Time::Piece (epoch)';
+ cmp_ok $entry->creation_time->epoch, '==', 1643805296, 'Creation time coerced into a Time::Piece (epoch)';
is $entry->creation_time->datetime, '2022-02-02T12:34:56', 'Creation time coerced into a Time::Piece';
};