json-jwt 1.10.0 → 1.10.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of json-jwt might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/json-jwt.gemspec +3 -2
- data/lib/json/jose.rb +1 -1
- data/lib/json/jwe.rb +7 -7
- data/lib/json/jwk.rb +4 -4
- data/lib/json/jws.rb +6 -6
- metadata +3 -45
- data/spec/fixtures/ecdsa/256/private_key.pem +0 -5
- data/spec/fixtures/ecdsa/256/public_key.pem +0 -4
- data/spec/fixtures/ecdsa/384/private_key.pem +0 -6
- data/spec/fixtures/ecdsa/384/public_key.pem +0 -5
- data/spec/fixtures/ecdsa/512/private_key.pem +0 -7
- data/spec/fixtures/ecdsa/512/public_key.pem +0 -6
- data/spec/fixtures/rsa/private_key.der +0 -0
- data/spec/fixtures/rsa/private_key.pem +0 -30
- data/spec/fixtures/rsa/public_key.pem +0 -8
- data/spec/helpers/nimbus_spec_helper.rb +0 -22
- data/spec/helpers/sign_key_fixture_helper.rb +0 -52
- data/spec/interop/with_jsrsasign_spec.rb +0 -49
- data/spec/interop/with_nimbus_jose_spec.rb +0 -99
- data/spec/interop/with_rfc_example_spec.rb +0 -19
- data/spec/json/jwe_spec.rb +0 -351
- data/spec/json/jwk/jwkizable_spec.rb +0 -49
- data/spec/json/jwk/set_spec.rb +0 -75
- data/spec/json/jwk_spec.rb +0 -194
- data/spec/json/jws_spec.rb +0 -440
- data/spec/json/jwt_spec.rb +0 -523
- data/spec/spec_helper.rb +0 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 51a327761ea931101039a020adc776471ea89e73d4abe27267c0433916f6e327
|
4
|
+
data.tar.gz: 717bab99944dce15400c188ccd63e3556d60f2c498234884994966070c7b3068
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fbcd1b698ce7c0f488bc7d6f873ec5c5bf8c5099f501b140bdc371e0a00f45ada1323df227a29d2ad16e4a971bd714904138b95d221bf76c4cf2b2fd2f444b2f
|
7
|
+
data.tar.gz: e53705c42a6f37833a1727bf14b86733502c06312bfab503217c2985de427aa4b0d68698e449f0d42a4e62415793e710f5d5ca412d7cade734bfb7b20455834a
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.10.
|
1
|
+
1.10.1
|
data/json-jwt.gemspec
CHANGED
@@ -7,8 +7,9 @@ Gem::Specification.new do |gem|
|
|
7
7
|
gem.summary = %q{JSON Web Token and its family (JSON Web Signature, JSON Web Encryption and JSON Web Key) in Ruby}
|
8
8
|
gem.description = %q{JSON Web Token and its family (JSON Web Signature, JSON Web Encryption and JSON Web Key) in Ruby}
|
9
9
|
gem.license = 'MIT'
|
10
|
-
gem.files = `git ls-files`.split("\n")
|
11
|
-
|
10
|
+
gem.files = `git ls-files`.split("\n").reject do |f|
|
11
|
+
f.match(%r{^(test|spec|features)/})
|
12
|
+
end
|
12
13
|
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
13
14
|
gem.require_paths = ['lib']
|
14
15
|
gem.required_ruby_version = '>= 2.3'
|
data/lib/json/jose.rb
CHANGED
data/lib/json/jwe.rb
CHANGED
@@ -98,15 +98,15 @@ module JSON
|
|
98
98
|
# common
|
99
99
|
|
100
100
|
def gcm?
|
101
|
-
[:A128GCM, :A256GCM].include? encryption_method
|
101
|
+
[:A128GCM, :A256GCM].include? encryption_method&.to_sym
|
102
102
|
end
|
103
103
|
|
104
104
|
def cbc?
|
105
|
-
[:'A128CBC-HS256', :'A256CBC-HS512'].include? encryption_method
|
105
|
+
[:'A128CBC-HS256', :'A256CBC-HS512'].include? encryption_method&.to_sym
|
106
106
|
end
|
107
107
|
|
108
108
|
def dir?
|
109
|
-
:dir == algorithm
|
109
|
+
:dir == algorithm&.to_sym
|
110
110
|
end
|
111
111
|
|
112
112
|
def cipher
|
@@ -115,7 +115,7 @@ module JSON
|
|
115
115
|
end
|
116
116
|
|
117
117
|
def cipher_name
|
118
|
-
case encryption_method
|
118
|
+
case encryption_method&.to_sym
|
119
119
|
when :A128GCM
|
120
120
|
'aes-128-gcm'
|
121
121
|
when :A256GCM
|
@@ -130,7 +130,7 @@ module JSON
|
|
130
130
|
end
|
131
131
|
|
132
132
|
def sha_size
|
133
|
-
case encryption_method
|
133
|
+
case encryption_method&.to_sym
|
134
134
|
when :'A128CBC-HS256'
|
135
135
|
256
|
136
136
|
when :'A256CBC-HS512'
|
@@ -158,7 +158,7 @@ module JSON
|
|
158
158
|
# encryption
|
159
159
|
|
160
160
|
def jwe_encrypted_key
|
161
|
-
@jwe_encrypted_key ||= case algorithm
|
161
|
+
@jwe_encrypted_key ||= case algorithm&.to_sym
|
162
162
|
when :RSA1_5
|
163
163
|
public_key_or_secret.public_encrypt content_encryption_key
|
164
164
|
when :'RSA-OAEP'
|
@@ -210,7 +210,7 @@ module JSON
|
|
210
210
|
|
211
211
|
def decrypt_content_encryption_key
|
212
212
|
fake_content_encryption_key = generate_content_encryption_key # NOTE: do this always not to make timing difference
|
213
|
-
case algorithm
|
213
|
+
case algorithm&.to_sym
|
214
214
|
when :RSA1_5
|
215
215
|
private_key_or_secret.private_decrypt jwe_encrypted_key
|
216
216
|
when :'RSA-OAEP'
|
data/lib/json/jwk.rb
CHANGED
@@ -53,15 +53,15 @@ module JSON
|
|
53
53
|
private
|
54
54
|
|
55
55
|
def rsa?
|
56
|
-
self[:kty]
|
56
|
+
self[:kty]&.to_sym == :RSA
|
57
57
|
end
|
58
58
|
|
59
59
|
def ec?
|
60
|
-
self[:kty]
|
60
|
+
self[:kty]&.to_sym == :EC
|
61
61
|
end
|
62
62
|
|
63
63
|
def oct?
|
64
|
-
self[:kty]
|
64
|
+
self[:kty]&.to_sym == :oct
|
65
65
|
end
|
66
66
|
|
67
67
|
def calculate_default_kid
|
@@ -120,7 +120,7 @@ module JSON
|
|
120
120
|
end
|
121
121
|
|
122
122
|
def to_ec_key
|
123
|
-
curve_name = case self[:crv]
|
123
|
+
curve_name = case self[:crv]&.to_sym
|
124
124
|
when :'P-256'
|
125
125
|
'prime256v1'
|
126
126
|
when :'P-384'
|
data/lib/json/jws.rb
CHANGED
@@ -19,10 +19,10 @@ module JSON
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def verify!(public_key_or_secret, algorithms = nil)
|
22
|
-
if alg
|
22
|
+
if alg&.to_sym == :none
|
23
23
|
raise UnexpectedAlgorithm if public_key_or_secret
|
24
24
|
signature == '' or raise VerificationFailed
|
25
|
-
elsif algorithms.blank? || Array(algorithms).include?(alg
|
25
|
+
elsif algorithms.blank? || Array(algorithms).include?(alg&.to_sym)
|
26
26
|
public_key_or_secret && valid?(public_key_or_secret) or
|
27
27
|
raise VerificationFailed
|
28
28
|
else
|
@@ -47,15 +47,15 @@ module JSON
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def hmac?
|
50
|
-
[:HS256, :HS384, :HS512].include? algorithm
|
50
|
+
[:HS256, :HS384, :HS512].include? algorithm&.to_sym
|
51
51
|
end
|
52
52
|
|
53
53
|
def rsa?
|
54
|
-
[:RS256, :RS384, :RS512].include? algorithm
|
54
|
+
[:RS256, :RS384, :RS512].include? algorithm&.to_sym
|
55
55
|
end
|
56
56
|
|
57
57
|
def rsa_pss?
|
58
|
-
if [:PS256, :PS384, :PS512].include? algorithm
|
58
|
+
if [:PS256, :PS384, :PS512].include? algorithm&.to_sym
|
59
59
|
if OpenSSL::VERSION < '2.1.0'
|
60
60
|
raise "#{alg} isn't supported. OpenSSL gem v2.1.0+ is required to use #{alg}."
|
61
61
|
else
|
@@ -67,7 +67,7 @@ module JSON
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def ecdsa?
|
70
|
-
[:ES256, :ES384, :ES512].include? algorithm
|
70
|
+
[:ES256, :ES384, :ES512].include? algorithm&.to_sym
|
71
71
|
end
|
72
72
|
|
73
73
|
def autodetected_algorithm_from(private_key_or_secret)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json-jwt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.10.
|
4
|
+
version: 1.10.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nov matake
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -133,27 +133,6 @@ files:
|
|
133
133
|
- lib/json/jwk/set.rb
|
134
134
|
- lib/json/jws.rb
|
135
135
|
- lib/json/jwt.rb
|
136
|
-
- spec/fixtures/ecdsa/256/private_key.pem
|
137
|
-
- spec/fixtures/ecdsa/256/public_key.pem
|
138
|
-
- spec/fixtures/ecdsa/384/private_key.pem
|
139
|
-
- spec/fixtures/ecdsa/384/public_key.pem
|
140
|
-
- spec/fixtures/ecdsa/512/private_key.pem
|
141
|
-
- spec/fixtures/ecdsa/512/public_key.pem
|
142
|
-
- spec/fixtures/rsa/private_key.der
|
143
|
-
- spec/fixtures/rsa/private_key.pem
|
144
|
-
- spec/fixtures/rsa/public_key.pem
|
145
|
-
- spec/helpers/nimbus_spec_helper.rb
|
146
|
-
- spec/helpers/sign_key_fixture_helper.rb
|
147
|
-
- spec/interop/with_jsrsasign_spec.rb
|
148
|
-
- spec/interop/with_nimbus_jose_spec.rb
|
149
|
-
- spec/interop/with_rfc_example_spec.rb
|
150
|
-
- spec/json/jwe_spec.rb
|
151
|
-
- spec/json/jwk/jwkizable_spec.rb
|
152
|
-
- spec/json/jwk/set_spec.rb
|
153
|
-
- spec/json/jwk_spec.rb
|
154
|
-
- spec/json/jws_spec.rb
|
155
|
-
- spec/json/jwt_spec.rb
|
156
|
-
- spec/spec_helper.rb
|
157
136
|
homepage: https://github.com/nov/json-jwt
|
158
137
|
licenses:
|
159
138
|
- MIT
|
@@ -179,25 +158,4 @@ signing_key:
|
|
179
158
|
specification_version: 4
|
180
159
|
summary: JSON Web Token and its family (JSON Web Signature, JSON Web Encryption and
|
181
160
|
JSON Web Key) in Ruby
|
182
|
-
test_files:
|
183
|
-
- spec/fixtures/ecdsa/256/private_key.pem
|
184
|
-
- spec/fixtures/ecdsa/256/public_key.pem
|
185
|
-
- spec/fixtures/ecdsa/384/private_key.pem
|
186
|
-
- spec/fixtures/ecdsa/384/public_key.pem
|
187
|
-
- spec/fixtures/ecdsa/512/private_key.pem
|
188
|
-
- spec/fixtures/ecdsa/512/public_key.pem
|
189
|
-
- spec/fixtures/rsa/private_key.der
|
190
|
-
- spec/fixtures/rsa/private_key.pem
|
191
|
-
- spec/fixtures/rsa/public_key.pem
|
192
|
-
- spec/helpers/nimbus_spec_helper.rb
|
193
|
-
- spec/helpers/sign_key_fixture_helper.rb
|
194
|
-
- spec/interop/with_jsrsasign_spec.rb
|
195
|
-
- spec/interop/with_nimbus_jose_spec.rb
|
196
|
-
- spec/interop/with_rfc_example_spec.rb
|
197
|
-
- spec/json/jwe_spec.rb
|
198
|
-
- spec/json/jwk/jwkizable_spec.rb
|
199
|
-
- spec/json/jwk/set_spec.rb
|
200
|
-
- spec/json/jwk_spec.rb
|
201
|
-
- spec/json/jws_spec.rb
|
202
|
-
- spec/json/jwt_spec.rb
|
203
|
-
- spec/spec_helper.rb
|
161
|
+
test_files: []
|
@@ -1,6 +0,0 @@
|
|
1
|
-
-----BEGIN EC PRIVATE KEY-----
|
2
|
-
MIGkAgEBBDB1NRLzYeQa7oRUwWrnQFZOBVqzlyJ9n654/PFjCLJh/A/uGWeECoM2
|
3
|
-
1hXEvp80pqGgBwYFK4EEACKhZANiAASmXMCnIWcrurOGDlechlsWPaFmgfZV2Xj5
|
4
|
-
EWbsOew0wb23Kqul+rZHKN8oAFtwVG2LEHN9+GTd9xuZ6KkYuS9AE0LN42bpAveE
|
5
|
-
5RMfogUHM4vRjsewZOik1NOykuOWK9s=
|
6
|
-
-----END EC PRIVATE KEY-----
|
@@ -1,7 +0,0 @@
|
|
1
|
-
-----BEGIN EC PRIVATE KEY-----
|
2
|
-
MIHcAgEBBEIBBpwKqvGEZGpE3wX1fDzJjrrM4uXr16WKsijjqjRP8tHdnvr5p2fO
|
3
|
-
zrPVyDVbiQDulOhSh9aouunuwmbudKjWvZagBwYFK4EEACOhgYkDgYYABAHDAg/m
|
4
|
-
tGuq5xPU7wtJjqhfwxl0YOWN4k2+HhzcE5tpA+oro8fTP3/HfxRh69DoaasxJ+K2
|
5
|
-
D2GaLhrGyDxIC9Kv/wFC2BHfJfm1fwSNvPWns4Ui2dUQxdpbYAzxMvWO2LamGuHC
|
6
|
-
XKYss1QzKV1sAaenI4Ok1yDZKFa1V2YTeNOIobuCNg==
|
7
|
-
-----END EC PRIVATE KEY-----
|
@@ -1,6 +0,0 @@
|
|
1
|
-
-----BEGIN PUBLIC KEY-----
|
2
|
-
MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQBwwIP5rRrqucT1O8LSY6oX8MZdGDl
|
3
|
-
jeJNvh4c3BObaQPqK6PH0z9/x38UYevQ6GmrMSfitg9hmi4axsg8SAvSr/8BQtgR
|
4
|
-
3yX5tX8Ejbz1p7OFItnVEMXaW2AM8TL1jti2phrhwlymLLNUMyldbAGnpyODpNcg
|
5
|
-
2ShWtVdmE3jTiKG7gjY=
|
6
|
-
-----END PUBLIC KEY-----
|
Binary file
|
@@ -1,30 +0,0 @@
|
|
1
|
-
-----BEGIN RSA PRIVATE KEY-----
|
2
|
-
Proc-Type: 4,ENCRYPTED
|
3
|
-
DEK-Info: AES-256-CBC,A6B5D10FFA23D7BC66CE4FB46B754E8C
|
4
|
-
|
5
|
-
gvYFJmzetWSwpf1Ut6USm4IReFLA6bpp5nVUfU2Xa9dJmrCu0cTupTkdzNmGp14/
|
6
|
-
mzeT/a5WplK1hWV41Y7bLm57hOpaoxbEx2h3IW9cxuqgAp422AbafRu6hEvjUONO
|
7
|
-
qUEm63I4d7/FKo0he4IVVx0UHaX5eEq8pdY1AZR9+fqlxWvjpgZlB0anT3AMpfVL
|
8
|
-
CY4sGc/Es14M9A4zUpOkp+09PbV3WNG8A4G4IJA3wx6tYBxrd2866Te2ccP6/BL8
|
9
|
-
HA2uoqeD+70ziybvd//CtGAD1xoTDvOCwzXXT5A4fCuec3apFp8O6WyJ63ao99R4
|
10
|
-
E0r6AvD4iOkLMC8K2YUSc1zFLJAkhlfhBb8qFbXOwOomazWf2Z8rDtkP1VCfB9gC
|
11
|
-
W6oYRBOyVUkbaBSBOOPBJtxjuTL/cJBvFhn6r0zdC67g0CD4cabMPd1VY92lUVbl
|
12
|
-
JvE9CouDB5O39jwfpgfxo3kGev2UzwRze9U2uw6EdYIUB/ixyC8/5BoN8lKZXdTn
|
13
|
-
7vQBmcBsC3boMqQiq2c/dVGW7yrt/Y4q8wq9aGFwdBAY1pYhRlOZ0MwFmlAJKOzo
|
14
|
-
Y3i2OILtPM0sdfqIeAvrwicQULGAzLGEhecDOQ1r0GwZRy5/Sl3ILxKMW8ngdaK4
|
15
|
-
iNDM56u6F9dwqqArrZDZgkfwnKakXU2ZbltSOWTCleCfYrc1D75Yw3FHKcWozB/l
|
16
|
-
uyMTIqzBXzO6OiNDUv7zAE1xzVaV+VeBH/5KGx18dAuRP3TnpYltGSUVDyGk9FX7
|
17
|
-
m7nhvkqOcFJMHOGdTjt2Ff9Ibn3rgCEFI0CjCwcJPo2ym1Zox8GfP0/nXk3p/oWV
|
18
|
-
ebBTvS+yc9HaSm2Al77GDXEwY7NDcTef+3kEtQHpesS+xmC8mFtMEKV8vifXEhpt
|
19
|
-
iNp6gtsfDMtFmrFXCADTaUD1WBmhJQtYUsGsoQ75c5zzUHU93BOswBe2KODCA3Ie
|
20
|
-
X3XKvHTjGw3wjWJvLcnL3EgcHDL1x7ehIA5UgvHFixmkx5D91uIdq4YDMt6xERle
|
21
|
-
JgeLKF9g1qCl9wmxqT4T1J9h9LGMQQEUhth0uTFr6bEpzgg6hFTrPDaI8dOMlcgu
|
22
|
-
ctOH2wFZgRMfrykGIs53rwF4pL+8iy+pakaRRAVTaZIX2CL2dThy0283jTVu9dNn
|
23
|
-
f/Zfu5mNlvsRcXlZMgTy0UMBpXeLMjaWyd+JeAnAeZxO3/ID/Ppg6vcc0Wn8XyB5
|
24
|
-
YUOIQe+Rc0jJnB1zqjww2cB6H5Ke3GjktQqrulHFfEYbn7lj8WLVgDLmellFNOxX
|
25
|
-
k9H2sta5SN/t3fN3oBO0A6JyotQOiBE54yHVpgoc+PBlcrpoOxSZx67lprD+WnlV
|
26
|
-
Ynnf6qIrR9NxgYN00Elzj9KP9OT1ufFrMQ0BnW4EWdFLCScGLsZVlmBKPrtHwK3N
|
27
|
-
FSy3JFMJcpymgNas5+bqIyZGqAZREHH3AWhc2TVl1Kt11g6PZWm3dSafT6SlqgyP
|
28
|
-
Z7OcBEnWr+ZhDeJfnAXrn5siah9eXuT0KtQWlqpSn76dExlfz16Da/3xBtO4ceyz
|
29
|
-
Lk4gzZ1QjP1ZvjarWOIEtkT7eiWaCQHYNVbvFRu5wo98o/KwO3xaPTDN9LCZKGhR
|
30
|
-
-----END RSA PRIVATE KEY-----
|
@@ -1,8 +0,0 @@
|
|
1
|
-
-----BEGIN RSA PUBLIC KEY-----
|
2
|
-
MIIBCgKCAQEAx9vNhcvSrxjsegZAAo4OEuoZOV/oxINEeWneJYczS80/bQ1J6lSS
|
3
|
-
J81qecxXAzCLPlvsFoP4eeUNXSt/G7hP7SAM479N+kY/MzbihJ5LRY9sRzLbQTMe
|
4
|
-
qsmDAmmQe4y3Ke3bvd70r8VOmo5pqM3IPLGwBkTRTQmyRsDQArilg6WtxDUgy5ol
|
5
|
-
2STHFA8E1iCReh9bck8ZaLxzVhYRXZ0nuOKWGRMppocPlp55HVohOItUZh7uSCch
|
6
|
-
LcVAZuhTTNaDLtLIJ6G0yNJvfEieJUhA8wGBoPhD3LMQwQMxTMerpjZhP/qjm6Gg
|
7
|
-
eWpKf+iVil86/PSy/z0Vw06/rD0sfXPtlQIDAQAB
|
8
|
-
-----END RSA PUBLIC KEY-----
|
@@ -1,22 +0,0 @@
|
|
1
|
-
module NimbusSpecHelper
|
2
|
-
module_function
|
3
|
-
|
4
|
-
def setup
|
5
|
-
nimbus_path = File.expand_path(
|
6
|
-
File.join(
|
7
|
-
File.dirname(__FILE__),
|
8
|
-
'json-jwt-nimbus',
|
9
|
-
'nimbus_jwe.rb'
|
10
|
-
)
|
11
|
-
)
|
12
|
-
if File.exist? nimbus_path
|
13
|
-
require nimbus_path
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def nimbus_available?
|
18
|
-
defined? NimbusJWE
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
NimbusSpecHelper.setup
|
@@ -1,52 +0,0 @@
|
|
1
|
-
module SignKeyFixtureHelper
|
2
|
-
def shared_secret
|
3
|
-
'shared-secret'
|
4
|
-
end
|
5
|
-
|
6
|
-
def pem_file(file_name)
|
7
|
-
File.new pem_file_path(file_name)
|
8
|
-
end
|
9
|
-
|
10
|
-
def pem_file_path(file_name)
|
11
|
-
File.join(
|
12
|
-
File.dirname(__FILE__),
|
13
|
-
"../fixtures/#{file_name}.pem"
|
14
|
-
)
|
15
|
-
end
|
16
|
-
|
17
|
-
def der_file_path(file_name)
|
18
|
-
File.join(
|
19
|
-
File.dirname(__FILE__),
|
20
|
-
"../fixtures/#{file_name}.der"
|
21
|
-
)
|
22
|
-
end
|
23
|
-
|
24
|
-
def private_key(algorithm = :rsa, options = {})
|
25
|
-
case algorithm
|
26
|
-
when :rsa
|
27
|
-
OpenSSL::PKey::RSA.new(
|
28
|
-
pem_file("#{algorithm}/private_key"),
|
29
|
-
'pass-phrase'
|
30
|
-
)
|
31
|
-
when :ecdsa
|
32
|
-
OpenSSL::PKey::EC.new(
|
33
|
-
pem_file("#{algorithm}/#{options[:digest_length] || 256}/private_key")
|
34
|
-
)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def public_key(algorithm = :rsa, options = {})
|
39
|
-
case algorithm
|
40
|
-
when :rsa
|
41
|
-
OpenSSL::PKey::RSA.new(
|
42
|
-
pem_file("#{algorithm}/public_key")
|
43
|
-
)
|
44
|
-
when :ecdsa
|
45
|
-
OpenSSL::PKey::EC.new(
|
46
|
-
pem_file("#{algorithm}/#{options[:digest_length] || 256}/public_key")
|
47
|
-
)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
include SignKeyFixtureHelper
|
@@ -1,49 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'interop' do
|
4
|
-
describe 'with jsrsasign' do
|
5
|
-
context 'JWS' do
|
6
|
-
let(:public_key) do
|
7
|
-
pem = <<-PEM.strip_heredoc
|
8
|
-
-----BEGIN PUBLIC KEY-----
|
9
|
-
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEoBUyo8CQAFPeYPvv78ylh5MwFZjT
|
10
|
-
CLQeb042TjiMJxG+9DLFmRSMlBQ9T/RsLLc+PmpB1+7yPAR+oR5gZn3kJQ==
|
11
|
-
-----END PUBLIC KEY-----
|
12
|
-
PEM
|
13
|
-
OpenSSL::PKey::EC.new pem
|
14
|
-
end
|
15
|
-
let(:private_key) do
|
16
|
-
pem = <<-PEM.strip_heredoc
|
17
|
-
-----BEGIN PRIVATE KEY-----
|
18
|
-
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgEbVzfPnZPxfAyxqE
|
19
|
-
ZV05laAoJAl+/6Xt2O4mOB611sOhRANCAASgFTKjwJAAU95g++/vzKWHkzAVmNMI
|
20
|
-
tB5vTjZOOIwnEb70MsWZFIyUFD1P9Gwstz4+akHX7vI8BH6hHmBmfeQl
|
21
|
-
-----END PRIVATE KEY-----
|
22
|
-
PEM
|
23
|
-
OpenSSL::PKey::EC.new pem
|
24
|
-
end
|
25
|
-
let(:jws_string) do
|
26
|
-
'eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2p3dC1pZHAuZXhhbXBsZS5jb20iLCJzdWIiOiJtYWlsdG86bWlrZUBleGFtcGxlLmNvbSIsIm5iZiI6MTQzNTA2MjUyMywiZXhwIjoxNDM1MDY2MTIzLCJpYXQiOjE0MzUwNjI1MjMsImp0aSI6ImlkMTIzNDU2IiwidHlwIjoiaHR0cHM6Ly9leGFtcGxlLmNvbS9yZWdpc3RlciJ9.HFmKrExGIFm5SwzTq_ayG80ELUIKnrR9psedV_6ZsuHl5ZLZ-1nV35o0yjKkN7qPQipQMK90xMvDYpi7e2XU9Q'
|
27
|
-
end
|
28
|
-
let(:payload) do
|
29
|
-
{
|
30
|
-
iss: 'https://jwt-idp.example.com',
|
31
|
-
sub: 'mailto:mike@example.com',
|
32
|
-
nbf: 1435062523,
|
33
|
-
exp: 1435066123,
|
34
|
-
iat: 1435062523,
|
35
|
-
jti: 'id123456',
|
36
|
-
typ: 'https://example.com/register'
|
37
|
-
}
|
38
|
-
end
|
39
|
-
|
40
|
-
describe 'verify' do
|
41
|
-
it 'should succeed' do
|
42
|
-
expect do
|
43
|
-
JSON::JWT.decode(jws_string, public_key, :ES256)
|
44
|
-
end.not_to raise_error
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|