Skip to content

Instantly share code, notes, and snippets.

@turret-io
Created September 24, 2014 15:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save turret-io/851c2a50a271bb26f151 to your computer and use it in GitHub Desktop.
Save turret-io/851c2a50a271bb26f151 to your computer and use it in GitHub Desktop.
Generate HMAC in Ruby
require 'digest'
require 'base64'
require 'cgi'
require 'time'
require 'openssl'
require 'json'
SHARED_SECRET = 'sup3rs3cr3t!!'
def signString(string_to_sign, shared_secret)
return OpenSSL::HMAC.digest('sha512', shared_secret, string_to_sign)
end
payload = {
:name => 'joe smith',
:category => 'people',
:action => 'transport',
:where => 'pluto',
:timestamp => Time.now.to_i.to_s
}
json_payload = JSON.generate(payload)
signature = signString(json_payload, SHARED_SECRET)
encoded_signature = Base64.urlsafe_encode64(signature)
encoded_payload = Base64.urlsafe_encode64(json_payload)
puts "/?data=#{encoded_payload}&signature=#{encoded_signature}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment