Ey::Hmac

Lightweight libraries and middlewares to perform HMAC signing and verification

Installation

Add this line to your application's Gemfile:

gem 'ey-hmac'

And then execute:

$ bundle

Or install it yourself as:

$ gem install ey-hmac

Documentation

rdoc.info

Usage

Client Middleware

Rack

Using Rack::Client

client = Rack::Client.new do
  use Ey::Hmac::Rack, key_id, key_secret
  run app
end

Faraday

require 'ey-hmac/faraday'

connection = Faraday.new do |c|
  c.use :hmac, key_id, key_secret
  c.adapter(:rack, app)
end

Server

Rack

app = lambda do |env|
  authenticated = Ey::Hmac.authenticated?(env, adapter: Ey::Hmac::Adapter::Rack) do |auth_id|
    (auth_id == key_id) && key_secret
  end
  [(authenticated ? 200 : 401), {"Content-Type" => "text/plain"}, []]
end

Rails

Ey::Hmac.authenticated?(request.env) do |auth_id|
  if consumer_credential = ConsumerCredential.where(deleted_at: nil, auth_id: auth_id).first
    consumer = consumer_credential.try(:consumer)
    consumer && consumer.enabled && consumer_credential.auth_key
  end
end && consumer

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request