#!/usr/bin/perl -w use strict; use Digest::HMAC_SHA1 qw(hmac_sha1 hmac_sha1_hex); my $pmk = pack("H*","9051ba43660caec7a909fbbe6b91e4685f1457b5a2e23660d728afbd2c7abfba"); my $a; foreach(split("","Pairwise key expansion")){ $a .= sprintf("%x",ord($_)); } # 5061697277697365206b657920657870616e73696f6e OK my $i = 0x00; # 00 in hex my $smac = pack("H*","489d2477179a"); my $amac = pack("H*","001dd0f694b0"); my $snonce = pack("H*","143fbb4333341f36e17667f88aa02c5230ab82c508cc4bd5947dd7e50475ad36"); my $anonce = pack("H*","87f2718bad169e4987c94255395e054bcaf77c8d791698bf03dc85ed3c90832a"); my $b = $amac.$smac.$snonce.$anonce; # Directly from Python code in for loop (without spaces): # 5061697277697365206b657920657870616e73696f6e 00 001dd0f694b0 489d2477179a1 # 43fbb4333341f36e17667f88aa02c5230ab82c508cc4bd5947dd7e50475ad36 # 87f2718bad169e4987c94255395e054bcaf77c8d791698bf03dc85ed3c90832a 00 my $hd = $a.$i.$b.$i; my $digest = hmac_sha1($hd,$pmk); print unpack("H*",$digest)."\n"; # according to docs: $digest = hmac_sha1($data, $key); # does not come out as 9287f887faade9257f5a806309a2bac8956fcbec like hmac_sha1 from Python ?