def calculate_mac(algorithm, data)
mac=nil
key = @key.gsub(" ", "")
key = key.unpack("m*")[0]
if (algorithm.to_s.downcase == HMAC_MD5.to_s.downcase)
mac = OpenSSL::HMAC.digest(OpenSSL::Digest::MD5.new, key, data)
elsif (algorithm == HMAC_SHA1)
mac = OpenSSL::HMAC.digest(OpenSSL::Digest::SHA1.new, key, data)
elsif (algorithm == HMAC_SHA256)
mac = OpenSSL::HMAC.digest(OpenSSL::Digest::SHA256.new, key, data)
elsif (algorithm == HMAC_SHA512)
mac = OpenSSL::HMAC.digest(OpenSSL::Digest::SHA512.new, key, data)
else
raise VerifyError.new("Algorithm #{algorithm} unsupported by TSIG")
end
return mac
end