require 'openssl' require 'rack' # gem install rack test_payload_body='{"message":"test content"}' test_signature_to_compare_with='sha1=33a08e9b5e9c8d5e944d9288e9b499abb298344d' def generate_signature(secret_token, payload_body) return 'sha1=' + OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha1'), secret_token, payload_body) end def verify_signature(secret_token, payload_body, signature_to_compare_with) signature = generate_signature(secret_token, payload_body) return Rack::Utils.secure_compare(signature, signature_to_compare_with) end puts "signature match? : #{verify_signature(ENV['SECRET_TOKEN'], test_payload_body, test_signature_to_compare_with)}"