Digest-CMAC
view release on metacpan or search on metacpan
lib/Digest/OMAC/Base.pm view on Meta::CPAN
} else {
die "Blocksize $blocksize is not supported by OMAC";
}
}
sub _lu2 {
die "lu2 needs to be defined by subclass";
}
# support methods
sub hexdigest {
return unpack 'H*', $_[0]->digest;
}
sub b64digest {
my $result = MIME::Base64::encode($_[0]->digest);
$result =~ s/=+$//;
return $result;
}
sub addfile {
my $self = shift;
my $handle = shift;
my $n;
my $buff = '';
while (($n = read $handle, $buff, 4*1024)) {
$self->add($buff);
}
unless (defined $n) {
croak "read failed: $!";
}
return $self;
}
sub add_bits {
my $self = shift;
my $bits;
my $nbits;
if (scalar @_ == 1) {
my $arg = shift;
$bits = pack 'B*', $arg;
$nbits = length $arg;
}
else {
$bits = shift;
$nbits = shift;
}
if (($nbits % 8) != 0) {
croak 'Number of bits must be multiple of 8 for this algorithm';
}
return $self->add(substr $bits, 0, $nbits/8);
}
1;
__END__
=head1 NAME
Digest::OMAC::Base - The One-key CBC MAC message authentication code (base
class for OMAC hashes)
=head1 SYNOPSIS
use base qw(Digest::OMAC::Base);
=head1 DESCRIPTION
This module is used internally by L<Digest::CMAC>/L<Digest::OMAC1> and
L<Digest::OMAC2> (which does different shifting than OMAC1 but is otherwise the
same).
( run in 0.789 second using v1.01-cache-2.11-cpan-e1769b4cff6 )