From a002bbdae7018d7c23f857780074ef00e3e6f31e Mon Sep 17 00:00:00 2001 From: Tobi Oetiker Date: Tue, 18 Mar 2008 08:10:40 +0000 Subject: switch to HMAC digest to avert extension attack --- lib/Digest/HMAC_MD5.pm | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 lib/Digest/HMAC_MD5.pm (limited to 'lib/Digest/HMAC_MD5.pm') diff --git a/lib/Digest/HMAC_MD5.pm b/lib/Digest/HMAC_MD5.pm new file mode 100644 index 0000000..6efa0a1 --- /dev/null +++ b/lib/Digest/HMAC_MD5.pm @@ -0,0 +1,71 @@ +package Digest::HMAC_MD5; +$VERSION="1.01"; + +use strict; +use Digest::MD5 qw(md5); +use Digest::HMAC qw(hmac); + +# OO interface +use vars qw(@ISA); +@ISA=qw(Digest::HMAC); +sub new +{ + my $class = shift; + $class->SUPER::new($_[0], "Digest::MD5", 64); +} + +# Functional interface +require Exporter; +*import = \&Exporter::import; +use vars qw(@EXPORT_OK); +@EXPORT_OK=qw(hmac_md5 hmac_md5_hex); + +sub hmac_md5 +{ + hmac($_[0], $_[1], \&md5, 64); +} + +sub hmac_md5_hex +{ + unpack("H*", &hmac_md5) +} + +1; + +__END__ + +=head1 NAME + +Digest::HMAC_MD5 - Keyed-Hashing for Message Authentication + +=head1 SYNOPSIS + + # Functional style + use Digest::HMAC_MD5 qw(hmac_md5 hmac_md5_hex); + $digest = hmac_md5($data, $key); + print hmac_md5_hex($data, $key); + + # OO style + use Digest::HMAC_MD5; + $hmac = Digest::HMAC_MD5->new($key); + + $hmac->add($data); + $hmac->addfile(*FILE); + + $digest = $hmac->digest; + $digest = $hmac->hexdigest; + $digest = $hmac->b64digest; + +=head1 DESCRIPTION + +This module provide HMAC-MD5 hashing. + +=head1 SEE ALSO + +L, L, L + +=head1 AUTHOR + +Gisle Aas + +=cut -- cgit v1.2.3-24-g4f1b