signature 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,20 +1,31 @@
1
1
  signature
2
- ---------
2
+ =========
3
3
 
4
4
  Examples
5
- ========
5
+ --------
6
6
 
7
7
  Client example
8
8
 
9
9
  params = {:some => 'parameters'}
10
- token = Signature::Token.new(key, secret)
11
- request = Signature::Request.new('POST', '/api/thing, params)
10
+ token = Signature::Token.new('my_key', 'my_secret')
11
+ request = Signature::Request.new('POST', '/api/thing', params)
12
12
  auth_hash = request.sign(token)
13
+ query_params = params.merge(auth_hash)
13
14
 
14
15
  HTTParty.post('http://myservice/api/thing', {
15
- :query => params.merge(auth_hash)
16
+ :query => query_params
16
17
  })
17
18
 
19
+ `query_params` looks like:
20
+
21
+ {
22
+ :some => "parameters",
23
+ :auth_timestamp => 1273231888,
24
+ :auth_signature => "28b6bb0f242f71064916fad6ae463fe91f5adc302222dfc02c348ae1941eaf80",
25
+ :auth_version => "1.0",
26
+ :auth_key => "my_key"
27
+ }
28
+
18
29
  Server example (sinatra)
19
30
 
20
31
  error Signature::AuthenticationError do |controller|
@@ -24,6 +35,7 @@ Server example (sinatra)
24
35
 
25
36
  post '/api/thing' do
26
37
  request = Authentication::Request.new('POST', env["REQUEST_PATH"], params)
38
+ # This will raise a Signature::AuthenticationError if request does not authenticate
27
39
  token = request.authenticate do |key|
28
40
  Signature::Token.new(key, lookup_secret(key))
29
41
  end
@@ -32,6 +44,6 @@ Server example (sinatra)
32
44
  end
33
45
 
34
46
  Copyright
35
- =========
47
+ ---------
36
48
 
37
49
  Copyright (c) 2010 Martyn Loughran. See LICENSE for details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
data/lib/signature.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require 'hmac-sha2'
2
- require 'base64'
3
2
 
4
3
  module Signature
5
4
  class AuthenticationError < RuntimeError; end
@@ -134,7 +133,8 @@ module Signature
134
133
  def validate_signature!(token)
135
134
  unless @auth_hash["auth_signature"] == signature(token)
136
135
  raise AuthenticationError, "Invalid signature: you should have "\
137
- "sent HmacSHA256Hex(#{string_to_sign.inspect}, your_secret_key)"
136
+ "sent HmacSHA256Hex(#{string_to_sign.inspect}, your_secret_key)"\
137
+ ", but you sent #{@auth_hash["auth_signature"].inspect}"
138
138
  end
139
139
  return true
140
140
  end
data/signature.gemspec ADDED
@@ -0,0 +1,58 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{signature}
8
+ s.version = "0.1.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Martyn Loughran"]
12
+ s.date = %q{2010-07-20}
13
+ s.description = %q{Simple key/secret based authentication for apis}
14
+ s.email = %q{me@mloughran.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.md"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".gitignore",
22
+ "LICENSE",
23
+ "README.md",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "lib/signature.rb",
27
+ "signature.gemspec",
28
+ "spec/signature_spec.rb",
29
+ "spec/spec.opts",
30
+ "spec/spec_helper.rb"
31
+ ]
32
+ s.homepage = %q{http://github.com/mloughran/signature}
33
+ s.rdoc_options = ["--charset=UTF-8"]
34
+ s.require_paths = ["lib"]
35
+ s.rubygems_version = %q{1.3.6}
36
+ s.summary = %q{Simple key/secret based authentication for apis}
37
+ s.test_files = [
38
+ "spec/signature_spec.rb",
39
+ "spec/spec_helper.rb"
40
+ ]
41
+
42
+ if s.respond_to? :specification_version then
43
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
44
+ s.specification_version = 3
45
+
46
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
47
+ s.add_runtime_dependency(%q<ruby-hmac>, [">= 0"])
48
+ s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
49
+ else
50
+ s.add_dependency(%q<ruby-hmac>, [">= 0"])
51
+ s.add_dependency(%q<rspec>, [">= 1.2.9"])
52
+ end
53
+ else
54
+ s.add_dependency(%q<ruby-hmac>, [">= 0"])
55
+ s.add_dependency(%q<rspec>, [">= 1.2.9"])
56
+ end
57
+ end
58
+
@@ -88,7 +88,7 @@ describe Signature do
88
88
  request = Signature::Request.new('POST', '/some/path', @params)
89
89
  lambda {
90
90
  request.authenticate_by_token!(@token)
91
- }.should raise_error('Invalid signature: you should have sent HmacSHA256Hex("POST\n/some/path\nauth_key=key&auth_timestamp=1234&auth_version=1.0&go=here&query=params", your_secret_key)')
91
+ }.should raise_error('Invalid signature: you should have sent HmacSHA256Hex("POST\n/some/path\nauth_key=key&auth_timestamp=1234&auth_version=1.0&go=here&query=params", your_secret_key), but you sent "asdf"')
92
92
  end
93
93
 
94
94
  it "should raise error if timestamp not available" do
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 0
9
- version: 0.1.0
8
+ - 1
9
+ version: 0.1.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Martyn Loughran
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-05-07 00:00:00 +01:00
17
+ date: 2010-07-20 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -60,6 +60,7 @@ files:
60
60
  - Rakefile
61
61
  - VERSION
62
62
  - lib/signature.rb
63
+ - signature.gemspec
63
64
  - spec/signature_spec.rb
64
65
  - spec/spec.opts
65
66
  - spec/spec_helper.rb