alias -l hmac_md5 {
bunset &opad
bunset &ipad
bset &key 64 0
bset -t &key 1 $2
bcopy &ipad 1 &key 1 64
bcopy &opad 1 &key 1 64
var %i = 1
while (%i <= 64) {
bset &ipad %i $xor($bvar(&ipad, %i),$base(36,16,10))
bset &opad %i $xor($bvar(&opad, %i),$base(5c,16,10))
inc %i
}
bset -t &ipad $calc($bvar(&ipad,0) + 1) $1
bset &opad $calc($bvar(&opad,0) + 1) $digest($md5(&ipad, 1))
return $md5(&opad,1)
}
alias -l digest {
var %ret = ""
var %i = 1
while (%i < $len($1)) {
%ret = $+(%ret,$chr(32),$base($mid($1,%i,2),16,10))
inc %i 2
}
return %ret
}