hmac.ru (18 lines of code) (raw):
require 'openssl'
def signature(message, key)
signature = 'sha1=' + OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha1'), key, message)
end
def verify_signature(message, key, expected)
signature = signature(message, key)
return "Signatures didn't match!" unless signature == expected
'Signature does match'
end
data = [
['', ''],
['x', 'x'],
['a', 'b'],
['c', 'd'],
]
data.each { |key, message|
puts "Signature for key '#{key}', message '#{message}' is #{signature(message, key)}"
}