jwt 1.5.2 → 1.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +13 -5
- data/.codeclimate.yml +20 -0
- data/.gitignore +6 -0
- data/.rspec +2 -0
- data/.rubocop.yml +2 -0
- data/.travis.yml +13 -0
- data/Gemfile +4 -0
- data/README.md +29 -11
- data/Rakefile +1 -18
- data/lib/jwt.rb +19 -75
- data/lib/jwt/decode.rb +56 -0
- data/lib/jwt/error.rb +12 -0
- data/lib/jwt/json.rb +9 -25
- data/lib/jwt/verify.rb +98 -0
- data/lib/jwt/version.rb +23 -0
- data/ruby-jwt.gemspec +29 -0
- data/spec/fixtures/certs/ec256-private.pem +8 -0
- data/spec/fixtures/certs/ec256-public.pem +4 -0
- data/spec/fixtures/certs/ec256-wrong-private.pem +8 -0
- data/spec/fixtures/certs/ec256-wrong-public.pem +4 -0
- data/spec/fixtures/certs/ec384-private.pem +9 -0
- data/spec/fixtures/certs/ec384-public.pem +5 -0
- data/spec/fixtures/certs/ec384-wrong-private.pem +9 -0
- data/spec/fixtures/certs/ec384-wrong-public.pem +5 -0
- data/spec/fixtures/certs/ec512-private.pem +10 -0
- data/spec/fixtures/certs/ec512-public.pem +6 -0
- data/spec/fixtures/certs/ec512-wrong-private.pem +10 -0
- data/spec/fixtures/certs/ec512-wrong-public.pem +6 -0
- data/spec/fixtures/certs/rsa-1024-private.pem +15 -0
- data/spec/fixtures/certs/rsa-1024-public.pem +6 -0
- data/spec/fixtures/certs/rsa-2048-private.pem +27 -0
- data/spec/fixtures/certs/rsa-2048-public.pem +9 -0
- data/spec/fixtures/certs/rsa-2048-wrong-private.pem +27 -0
- data/spec/fixtures/certs/rsa-2048-wrong-public.pem +9 -0
- data/spec/fixtures/certs/rsa-4096-private.pem +51 -0
- data/spec/fixtures/certs/rsa-4096-public.pem +14 -0
- data/spec/jwt/verify_spec.rb +175 -0
- data/spec/jwt_spec.rb +1 -181
- data/spec/spec_helper.rb +2 -3
- metadata +145 -28
- data/jwt.gemspec +0 -34
data/spec/jwt_spec.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'jwt'
|
3
|
+
require 'jwt/decode'
|
3
4
|
|
4
5
|
describe JWT do
|
5
6
|
let(:payload) { { 'user_id' => 'some@user.tld' } }
|
@@ -188,52 +189,6 @@ describe JWT do
|
|
188
189
|
end
|
189
190
|
end
|
190
191
|
|
191
|
-
context 'expiration claim' do
|
192
|
-
let(:exp) { Time.now.to_i - 5 }
|
193
|
-
let(:leeway) { 10 }
|
194
|
-
|
195
|
-
let :token do
|
196
|
-
payload.merge!(exp: exp)
|
197
|
-
|
198
|
-
JWT.encode payload, data[:secret]
|
199
|
-
end
|
200
|
-
|
201
|
-
it 'old token should raise JWT::ExpiredSignature' do
|
202
|
-
expect do
|
203
|
-
JWT.decode token, data[:secret]
|
204
|
-
end.to raise_error JWT::ExpiredSignature
|
205
|
-
end
|
206
|
-
|
207
|
-
it 'should handle leeway' do
|
208
|
-
expect do
|
209
|
-
JWT.decode token, data[:secret], true, leeway: leeway
|
210
|
-
end.not_to raise_error
|
211
|
-
end
|
212
|
-
end
|
213
|
-
|
214
|
-
context 'not before claim' do
|
215
|
-
let(:nbf) { Time.now.to_i + 5 }
|
216
|
-
let(:leeway) { 10 }
|
217
|
-
|
218
|
-
let :token do
|
219
|
-
payload.merge!(nbf: nbf)
|
220
|
-
|
221
|
-
JWT.encode payload, data[:secret]
|
222
|
-
end
|
223
|
-
|
224
|
-
it 'future token should raise JWT::ImmatureSignature' do
|
225
|
-
expect do
|
226
|
-
JWT.decode token, data[:secret]
|
227
|
-
end.to raise_error JWT::ImmatureSignature
|
228
|
-
end
|
229
|
-
|
230
|
-
it 'should handle leeway' do
|
231
|
-
expect do
|
232
|
-
JWT.decode token, data[:secret], true, leeway: leeway
|
233
|
-
end.not_to raise_error
|
234
|
-
end
|
235
|
-
end
|
236
|
-
|
237
192
|
context 'issuer claim' do
|
238
193
|
let(:iss) { 'ruby-jwt-gem' }
|
239
194
|
let(:invalid_token) { JWT.encode payload, data[:secret] }
|
@@ -248,140 +203,6 @@ describe JWT do
|
|
248
203
|
JWT.decode token, data[:secret], true, iss: iss
|
249
204
|
end.not_to raise_error
|
250
205
|
end
|
251
|
-
|
252
|
-
it 'invalid iss should raise JWT::InvalidIssuerError' do
|
253
|
-
expect do
|
254
|
-
JWT.decode token, data[:secret], true, iss: 'wrong-issuer', verify_iss: true
|
255
|
-
end.to raise_error JWT::InvalidIssuerError
|
256
|
-
end
|
257
|
-
|
258
|
-
it 'with missing iss claim should raise JWT::InvalidIssuerError' do
|
259
|
-
missing_iss_claim_token = JWT.encode payload, data[:secret]
|
260
|
-
|
261
|
-
expect do
|
262
|
-
JWT.decode missing_iss_claim_token, data[:secret], true, verify_iss: true, iss: iss
|
263
|
-
end.to raise_error(JWT::InvalidIssuerError, /received <none>/)
|
264
|
-
end
|
265
|
-
|
266
|
-
it 'valid iss should not raise JWT::InvalidIssuerError' do
|
267
|
-
expect do
|
268
|
-
JWT.decode token, data[:secret], true, iss: iss, verify_iss: true
|
269
|
-
end.not_to raise_error
|
270
|
-
end
|
271
|
-
end
|
272
|
-
|
273
|
-
context 'issued at claim' do
|
274
|
-
let(:iat) { Time.now.to_i }
|
275
|
-
let(:new_payload) { payload.merge(iat: iat) }
|
276
|
-
let(:token) { JWT.encode new_payload, data[:secret] }
|
277
|
-
let(:invalid_token) { JWT.encode new_payload.merge('iat' => iat + 60), data[:secret] }
|
278
|
-
let(:leeway) { 30 }
|
279
|
-
|
280
|
-
it 'invalid iat should raise JWT::InvalidIatError' do
|
281
|
-
expect do
|
282
|
-
JWT.decode invalid_token, data[:secret], true, verify_iat: true
|
283
|
-
end.to raise_error JWT::InvalidIatError
|
284
|
-
end
|
285
|
-
|
286
|
-
it 'should accept leeway' do
|
287
|
-
expect do
|
288
|
-
JWT.decode invalid_token, data[:secret], true, verify_iat: true, leeway: 70
|
289
|
-
end.to_not raise_error
|
290
|
-
end
|
291
|
-
|
292
|
-
it 'valid iat should not raise JWT::InvalidIatError' do
|
293
|
-
expect do
|
294
|
-
JWT.decode token, data[:secret], true, verify_iat: true
|
295
|
-
end.to_not raise_error
|
296
|
-
end
|
297
|
-
end
|
298
|
-
|
299
|
-
context 'audience claim' do
|
300
|
-
let(:simple_aud) { 'ruby-jwt-audience' }
|
301
|
-
let(:array_aud) { %w(ruby-jwt-aud test-aud ruby-ruby-ruby) }
|
302
|
-
|
303
|
-
let :simple_token do
|
304
|
-
new_payload = payload.merge('aud' => simple_aud)
|
305
|
-
JWT.encode new_payload, data[:secret]
|
306
|
-
end
|
307
|
-
|
308
|
-
let :array_token do
|
309
|
-
new_payload = payload.merge('aud' => array_aud)
|
310
|
-
JWT.encode new_payload, data[:secret]
|
311
|
-
end
|
312
|
-
|
313
|
-
it 'invalid aud should raise JWT::InvalidAudError' do
|
314
|
-
expect do
|
315
|
-
JWT.decode simple_token, data[:secret], true, aud: 'wrong audience', verify_aud: true
|
316
|
-
end.to raise_error JWT::InvalidAudError
|
317
|
-
|
318
|
-
expect do
|
319
|
-
JWT.decode array_token, data[:secret], true, aud: %w(wrong audience), verify_aud: true
|
320
|
-
end.to raise_error JWT::InvalidAudError
|
321
|
-
end
|
322
|
-
|
323
|
-
it 'valid aud should not raise JWT::InvalidAudError' do
|
324
|
-
expect do
|
325
|
-
JWT.decode simple_token, data[:secret], true, 'aud' => simple_aud, :verify_aud => true
|
326
|
-
end.to_not raise_error
|
327
|
-
|
328
|
-
expect do
|
329
|
-
JWT.decode array_token, data[:secret], true, 'aud' => array_aud.first, :verify_aud => true
|
330
|
-
end.to_not raise_error
|
331
|
-
end
|
332
|
-
end
|
333
|
-
|
334
|
-
context 'subject claim' do
|
335
|
-
let(:sub) { 'ruby jwt subject' }
|
336
|
-
|
337
|
-
let :token do
|
338
|
-
new_payload = payload.merge('sub' => sub)
|
339
|
-
JWT.encode new_payload, data[:secret]
|
340
|
-
end
|
341
|
-
|
342
|
-
let :invalid_token do
|
343
|
-
new_payload = payload.merge('sub' => 'we are not the druids you are looking for')
|
344
|
-
JWT.encode new_payload, data[:secret]
|
345
|
-
end
|
346
|
-
|
347
|
-
it 'invalid sub should raise JWT::InvalidSubError' do
|
348
|
-
expect do
|
349
|
-
JWT.decode invalid_token, data[:secret], true, sub: sub, verify_sub: true
|
350
|
-
end.to raise_error JWT::InvalidSubError
|
351
|
-
end
|
352
|
-
|
353
|
-
it 'valid sub should not raise JWT::InvalidSubError' do
|
354
|
-
expect do
|
355
|
-
JWT.decode token, data[:secret], true, 'sub' => sub, :verify_sub => true
|
356
|
-
end.to_not raise_error
|
357
|
-
end
|
358
|
-
end
|
359
|
-
|
360
|
-
context 'jwt id claim' do
|
361
|
-
let :jti do
|
362
|
-
new_payload = payload.merge('iat' => Time.now.to_i)
|
363
|
-
key = data[:secret]
|
364
|
-
new_payload.merge('jti' => Digest::MD5.hexdigest("#{key}:#{new_payload['iat']}"))
|
365
|
-
end
|
366
|
-
|
367
|
-
let(:token) { JWT.encode jti, data[:secret] }
|
368
|
-
|
369
|
-
let :invalid_token do
|
370
|
-
jti.delete('iat')
|
371
|
-
JWT.encode jti, data[:secret]
|
372
|
-
end
|
373
|
-
|
374
|
-
it 'invalid jti should raise JWT::InvalidJtiError' do
|
375
|
-
expect do
|
376
|
-
JWT.decode invalid_token, data[:secret], true, :verify_jti => true, 'jti' => jti['jti']
|
377
|
-
end.to raise_error JWT::InvalidJtiError
|
378
|
-
end
|
379
|
-
|
380
|
-
it 'valid jti should not raise JWT::InvalidJtiError' do
|
381
|
-
expect do
|
382
|
-
JWT.decode token, data[:secret], true, verify_jti: true, jti: jti['jti']
|
383
|
-
end.to_not raise_error
|
384
|
-
end
|
385
206
|
end
|
386
207
|
end
|
387
208
|
|
@@ -408,5 +229,4 @@ describe JWT do
|
|
408
229
|
expect(JWT.secure_compare('Foo', 'Bar')).to eq false
|
409
230
|
end
|
410
231
|
end
|
411
|
-
|
412
232
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
require 'rspec'
|
3
2
|
require 'simplecov'
|
4
3
|
require 'simplecov-json'
|
@@ -7,10 +6,10 @@ require 'codeclimate-test-reporter'
|
|
7
6
|
SimpleCov.configure do
|
8
7
|
root File.join(File.dirname(__FILE__), '..')
|
9
8
|
project_name 'Ruby JWT - Ruby JSON Web Token implementation'
|
10
|
-
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
9
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
|
11
10
|
SimpleCov::Formatter::HTMLFormatter,
|
12
11
|
SimpleCov::Formatter::JSONFormatter
|
13
|
-
]
|
12
|
+
])
|
14
13
|
|
15
14
|
add_filter 'spec'
|
16
15
|
end
|
metadata
CHANGED
@@ -1,75 +1,192 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jwt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Lindsay
|
8
|
+
- Tim Rudat
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2016-03-24 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
15
|
+
name: bundler
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
17
|
-
- -
|
18
|
+
- - ! '>='
|
18
19
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
+
version: '0'
|
20
21
|
type: :development
|
21
22
|
prerelease: false
|
22
23
|
version_requirements: !ruby/object:Gem::Requirement
|
23
24
|
requirements:
|
24
|
-
- -
|
25
|
+
- - ! '>='
|
25
26
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
27
|
-
|
28
|
-
|
27
|
+
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: rake
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ! '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ! '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rspec
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ! '>='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: simplecov
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: simplecov-json
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ! '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: codeclimate-test-reporter
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ! '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
type: :development
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ! '>='
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
description: A pure ruby implementation of the RFC 7519 OAuth JSON Web Token (JWT)
|
99
|
+
standard.
|
100
|
+
email: timrudat@gmail.com
|
29
101
|
executables: []
|
30
102
|
extensions: []
|
31
|
-
extra_rdoc_files:
|
32
|
-
- README.md
|
33
|
-
- LICENSE
|
34
|
-
- lib/jwt.rb
|
35
|
-
- lib/jwt/json.rb
|
103
|
+
extra_rdoc_files: []
|
36
104
|
files:
|
105
|
+
- .codeclimate.yml
|
106
|
+
- .gitignore
|
107
|
+
- .rspec
|
108
|
+
- .rubocop.yml
|
109
|
+
- .travis.yml
|
110
|
+
- Gemfile
|
37
111
|
- LICENSE
|
38
112
|
- Manifest
|
39
113
|
- README.md
|
40
114
|
- Rakefile
|
41
|
-
- jwt.gemspec
|
42
115
|
- lib/jwt.rb
|
116
|
+
- lib/jwt/decode.rb
|
117
|
+
- lib/jwt/error.rb
|
43
118
|
- lib/jwt/json.rb
|
119
|
+
- lib/jwt/verify.rb
|
120
|
+
- lib/jwt/version.rb
|
121
|
+
- ruby-jwt.gemspec
|
122
|
+
- spec/fixtures/certs/ec256-private.pem
|
123
|
+
- spec/fixtures/certs/ec256-public.pem
|
124
|
+
- spec/fixtures/certs/ec256-wrong-private.pem
|
125
|
+
- spec/fixtures/certs/ec256-wrong-public.pem
|
126
|
+
- spec/fixtures/certs/ec384-private.pem
|
127
|
+
- spec/fixtures/certs/ec384-public.pem
|
128
|
+
- spec/fixtures/certs/ec384-wrong-private.pem
|
129
|
+
- spec/fixtures/certs/ec384-wrong-public.pem
|
130
|
+
- spec/fixtures/certs/ec512-private.pem
|
131
|
+
- spec/fixtures/certs/ec512-public.pem
|
132
|
+
- spec/fixtures/certs/ec512-wrong-private.pem
|
133
|
+
- spec/fixtures/certs/ec512-wrong-public.pem
|
134
|
+
- spec/fixtures/certs/rsa-1024-private.pem
|
135
|
+
- spec/fixtures/certs/rsa-1024-public.pem
|
136
|
+
- spec/fixtures/certs/rsa-2048-private.pem
|
137
|
+
- spec/fixtures/certs/rsa-2048-public.pem
|
138
|
+
- spec/fixtures/certs/rsa-2048-wrong-private.pem
|
139
|
+
- spec/fixtures/certs/rsa-2048-wrong-public.pem
|
140
|
+
- spec/fixtures/certs/rsa-4096-private.pem
|
141
|
+
- spec/fixtures/certs/rsa-4096-public.pem
|
142
|
+
- spec/jwt/verify_spec.rb
|
44
143
|
- spec/jwt_spec.rb
|
45
144
|
- spec/spec_helper.rb
|
46
|
-
homepage: http://github.com/
|
145
|
+
homepage: http://github.com/jwt/ruby-jwt
|
47
146
|
licenses:
|
48
147
|
- MIT
|
49
148
|
metadata: {}
|
50
149
|
post_install_message:
|
51
|
-
rdoc_options:
|
52
|
-
- "--line-numbers"
|
53
|
-
- "--title"
|
54
|
-
- Jwt
|
55
|
-
- "--main"
|
56
|
-
- README.md
|
150
|
+
rdoc_options: []
|
57
151
|
require_paths:
|
58
152
|
- lib
|
59
153
|
required_ruby_version: !ruby/object:Gem::Requirement
|
60
154
|
requirements:
|
61
|
-
- -
|
155
|
+
- - ! '>='
|
62
156
|
- !ruby/object:Gem::Version
|
63
157
|
version: '0'
|
64
158
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
159
|
requirements:
|
66
|
-
- -
|
160
|
+
- - ! '>='
|
67
161
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
162
|
+
version: '0'
|
69
163
|
requirements: []
|
70
|
-
rubyforge_project:
|
71
|
-
rubygems_version: 2.
|
164
|
+
rubyforge_project:
|
165
|
+
rubygems_version: 2.5.2
|
72
166
|
signing_key:
|
73
167
|
specification_version: 4
|
74
168
|
summary: JSON Web Token implementation in Ruby
|
75
|
-
test_files:
|
169
|
+
test_files:
|
170
|
+
- spec/fixtures/certs/ec256-private.pem
|
171
|
+
- spec/fixtures/certs/ec256-public.pem
|
172
|
+
- spec/fixtures/certs/ec256-wrong-private.pem
|
173
|
+
- spec/fixtures/certs/ec256-wrong-public.pem
|
174
|
+
- spec/fixtures/certs/ec384-private.pem
|
175
|
+
- spec/fixtures/certs/ec384-public.pem
|
176
|
+
- spec/fixtures/certs/ec384-wrong-private.pem
|
177
|
+
- spec/fixtures/certs/ec384-wrong-public.pem
|
178
|
+
- spec/fixtures/certs/ec512-private.pem
|
179
|
+
- spec/fixtures/certs/ec512-public.pem
|
180
|
+
- spec/fixtures/certs/ec512-wrong-private.pem
|
181
|
+
- spec/fixtures/certs/ec512-wrong-public.pem
|
182
|
+
- spec/fixtures/certs/rsa-1024-private.pem
|
183
|
+
- spec/fixtures/certs/rsa-1024-public.pem
|
184
|
+
- spec/fixtures/certs/rsa-2048-private.pem
|
185
|
+
- spec/fixtures/certs/rsa-2048-public.pem
|
186
|
+
- spec/fixtures/certs/rsa-2048-wrong-private.pem
|
187
|
+
- spec/fixtures/certs/rsa-2048-wrong-public.pem
|
188
|
+
- spec/fixtures/certs/rsa-4096-private.pem
|
189
|
+
- spec/fixtures/certs/rsa-4096-public.pem
|
190
|
+
- spec/jwt/verify_spec.rb
|
191
|
+
- spec/jwt_spec.rb
|
192
|
+
- spec/spec_helper.rb
|
data/jwt.gemspec
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: jwt 1.5.2 ruby lib
|
3
|
-
|
4
|
-
Gem::Specification.new do |s|
|
5
|
-
s.name = "jwt"
|
6
|
-
s.version = "1.5.2"
|
7
|
-
|
8
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
9
|
-
s.require_paths = ["lib"]
|
10
|
-
s.authors = ["Jeff Lindsay"]
|
11
|
-
s.date = "2015-10-27"
|
12
|
-
s.description = "JSON Web Token implementation in Ruby"
|
13
|
-
s.email = "progrium@gmail.com"
|
14
|
-
s.extra_rdoc_files = ["README.md", "LICENSE", "lib/jwt.rb", "lib/jwt/json.rb"]
|
15
|
-
s.files = ["LICENSE", "Manifest", "README.md", "Rakefile", "jwt.gemspec", "lib/jwt.rb", "lib/jwt/json.rb", "spec/jwt_spec.rb", "spec/spec_helper.rb"]
|
16
|
-
s.homepage = "http://github.com/progrium/ruby-jwt"
|
17
|
-
s.licenses = ["MIT"]
|
18
|
-
s.rdoc_options = ["--line-numbers", "--title", "Jwt", "--main", "README.md"]
|
19
|
-
s.rubyforge_project = "jwt"
|
20
|
-
s.rubygems_version = "2.4.8"
|
21
|
-
s.summary = "JSON Web Token implementation in Ruby"
|
22
|
-
|
23
|
-
if s.respond_to? :specification_version then
|
24
|
-
s.specification_version = 4
|
25
|
-
|
26
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
27
|
-
s.add_development_dependency(%q<echoe>, [">= 4.6.3"])
|
28
|
-
else
|
29
|
-
s.add_dependency(%q<echoe>, [">= 4.6.3"])
|
30
|
-
end
|
31
|
-
else
|
32
|
-
s.add_dependency(%q<echoe>, [">= 4.6.3"])
|
33
|
-
end
|
34
|
-
end
|