Skip to content

lanej/hmac

Folders and files

NameName
Last commit message
Last commit date

Latest commit

d82e2be · Feb 21, 2023

History

77 Commits
Feb 17, 2023
Feb 16, 2022
Feb 8, 2022
Feb 5, 2013
Feb 16, 2022
Feb 8, 2022
Jan 9, 2017
Feb 8, 2022
Apr 29, 2014
Mar 30, 2015
Feb 8, 2022
Feb 21, 2023

Repository files navigation

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