jose 1.1.2 → 1.1.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: aa018b696c9f264acc7691bb2ae92a7e48ec95e7
4
- data.tar.gz: c07468825b96248e7e15376711e573913f0d33ce
2
+ SHA256:
3
+ metadata.gz: bfd5ea4addb2127fc84ce5fe41ba48895c8906a1a1252dae1731c05cf530fcdd
4
+ data.tar.gz: 12051ba779da5cbc36666f1d2b1b8df8b6a781e03878afebacdd17456012e6bd
5
5
  SHA512:
6
- metadata.gz: 41a28230b46f5e9ea6ef56c7c8bdc2f353f7472f18faea6923d39326eb8d87f77a3ae247d22181ef5a4babe550cab1db31361e657d066959e8629a6df87c8e6d
7
- data.tar.gz: 00c55722c8dc85d65c53a7628abdd9baa4c536d409249dd5de4487a7b3d8e34254035151526cbedf520809401153604f7c301705274d70d02fbc05fe1665a4e2
6
+ metadata.gz: 300be47e599d8fc493c955bca536d33aca2ce92d28f7088985f916e70bea4dbdf1d8d3e45e34a1d2fb2adda6103915bba7b76f8c072553e1dc209e9e790f93e2
7
+ data.tar.gz: c1e31e5479b471a86203d048b2a2efe9fb67f14941be4409a91438b74dc87cce6d075f7d2164c8a991e0d0af0477a3790211fc3a53fbb2a207cd6cd23f4f49f2
@@ -1 +1 @@
1
- 2.3.1
1
+ 2.5.1
@@ -9,10 +9,10 @@ env:
9
9
  - RUBYOPT="-W0"
10
10
 
11
11
  rvm:
12
- - 2.3.1
12
+ - 2.5.1
13
13
 
14
14
  notifications:
15
15
  email: false
16
16
 
17
17
  before_install:
18
- - "gem install bundler -v 1.12.2"
18
+ - "gem install bundler -v 1.16.4"
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.1.3 (2018-09-20)
4
+
5
+ * Enhancements
6
+ * Add support for [crypto-rb/ed25519](https://github.com/crypto-rb/ed25519) and [crypto-rb/x25519](https://github.com/crypto-rb/x25519) for curve25519 operations.
7
+
8
+ * Fixes
9
+ * Support for Ruby 2.5.x RSA keys (thanks to [@waynerobinson](https://github.com/waynerobinson) see [#7](https://github.com/potatosalad/ruby-jose/pull/7))
10
+
3
11
  ## 1.1.2 (2016-07-07)
4
12
 
5
13
  * Enhancements
data/Gemfile CHANGED
@@ -12,7 +12,7 @@ end
12
12
  group :test do
13
13
  gem 'minitest-focus', require: false
14
14
  gem 'minitest-perf', require: false
15
- gem 'rantly', github: 'abargnesi/rantly', ref: '4d219ea3eb340a5153a43d051b2e22ccb2bce274', require: false
15
+ gem 'rantly', github: 'abargnesi/rantly', ref: '2875f63bfc695d270ecb574c56d1a7d8f6af0153', require: false
16
16
  gem 'simplecov', require: false
17
17
  if ENV['CI']
18
18
  gem 'coveralls', require: false
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
7
7
  spec.name = "jose"
8
8
  spec.version = JOSE::VERSION
9
9
  spec.authors = ["Andrew Bennett"]
10
- spec.email = ["andrew@pixid.com"]
10
+ spec.email = ["potatosaladx@gmail.com"]
11
11
 
12
12
  spec.summary = %q{JSON Object Signing and Encryption}
13
13
  spec.description = %q{JSON Object Signing and Encryption}
@@ -29,9 +29,11 @@ Gem::Specification.new do |spec|
29
29
 
30
30
  spec.add_dependency "hamster"
31
31
 
32
- spec.add_development_dependency "bundler", "~> 1.12"
33
- spec.add_development_dependency "rake", "~> 11.1"
32
+ spec.add_development_dependency "bundler", "~> 1.16"
33
+ spec.add_development_dependency "rake", "~> 12.3"
34
34
  spec.add_development_dependency "minitest"
35
35
  spec.add_development_dependency "json"
36
36
  spec.add_development_dependency "rbnacl-libsodium"
37
+ spec.add_development_dependency "ed25519"
38
+ spec.add_development_dependency "x25519"
37
39
  end
@@ -6,6 +6,7 @@ require 'json'
6
6
  require 'openssl'
7
7
  require 'securerandom'
8
8
  require 'thread'
9
+ require 'zlib'
9
10
 
10
11
  # JOSE stands for JSON Object Signing and Encryption which is a is a set of
11
12
  # standards established by the [JOSE Working Group](https://datatracker.ietf.org/wg/jose).
@@ -94,10 +94,13 @@ private
94
94
  end
95
95
 
96
96
  require 'jose/jwa/ed25519'
97
+ require 'jose/jwa/ed25519_cryptorb'
97
98
  require 'jose/jwa/ed25519_rbnacl'
98
99
  require 'jose/jwa/x25519'
100
+ require 'jose/jwa/x25519_cryptorb'
99
101
  require 'jose/jwa/x25519_rbnacl'
100
102
 
101
103
  require 'jose/jwa/curve25519_unsupported'
102
104
  require 'jose/jwa/curve25519_ruby'
105
+ require 'jose/jwa/curve25519_cryptorb'
103
106
  require 'jose/jwa/curve25519_rbnacl'
@@ -0,0 +1,67 @@
1
+ module JOSE::JWA::Curve25519_CryptoRb
2
+
3
+ extend self
4
+
5
+ def __ruby__?; false; end
6
+
7
+ def __supported__?
8
+ return @supported ||= begin
9
+ begin
10
+ require 'ed25519'
11
+ rescue LoadError
12
+ end
13
+ begin
14
+ require 'x25519'
15
+ rescue LoadError
16
+ end
17
+ !!(defined?(Ed25519::SigningKey) and defined?(X25519::Scalar))
18
+ end
19
+ end
20
+
21
+ def ed25519_keypair(secret = nil)
22
+ return JOSE::JWA::Ed25519_CryptoRb.keypair(secret)
23
+ end
24
+
25
+ def ed25519_secret_to_public(sk)
26
+ return JOSE::JWA::Ed25519_CryptoRb.sk_to_pk(sk)
27
+ end
28
+
29
+ def ed25519_sign(m, sk)
30
+ return JOSE::JWA::Ed25519_CryptoRb.sign(m, sk)
31
+ end
32
+
33
+ def ed25519_verify(sig, m, pk)
34
+ return JOSE::JWA::Ed25519_CryptoRb.verify(sig, m, pk)
35
+ end
36
+
37
+ def ed25519ph_keypair(secret = nil)
38
+ return JOSE::JWA::Ed25519_CryptoRb.keypair(secret)
39
+ end
40
+
41
+ def ed25519ph_secret_to_public(sk)
42
+ return JOSE::JWA::Ed25519_CryptoRb.sk_to_pk(sk)
43
+ end
44
+
45
+ def ed25519ph_sign(m, sk)
46
+ return JOSE::JWA::Ed25519_CryptoRb.sign_ph(m, sk)
47
+ end
48
+
49
+ def ed25519ph_verify(sig, m, pk)
50
+ return JOSE::JWA::Ed25519_CryptoRb.verify_ph(sig, m, pk)
51
+ end
52
+
53
+ def x25519_keypair(secret = nil)
54
+ return JOSE::JWA::X25519_CryptoRb.keypair(secret)
55
+ end
56
+
57
+ def x25519_secret_to_public(sk)
58
+ return JOSE::JWA::X25519_CryptoRb.sk_to_pk(sk)
59
+ end
60
+
61
+ def x25519_shared_secret(pk, sk)
62
+ return JOSE::JWA::X25519_CryptoRb.shared_secret(pk, sk)
63
+ end
64
+
65
+ end
66
+
67
+ JOSE::JWA::Curve25519.__register__(JOSE::JWA::Curve25519_CryptoRb)
@@ -114,4 +114,79 @@ module JOSE::JWA::Ed25519
114
114
  return verify(sig, Digest::SHA512.digest(m), pk)
115
115
  end
116
116
 
117
+ def coerce_publickey_bytes!(publickey)
118
+ raise ArgumentError, "publickey size must be #{C_publickeybytes} bytes" if not valid_publickey?(publickey)
119
+ publickey = publickey.to_bytes(C_bits) if publickey.is_a?(JOSE::JWA::FieldElement)
120
+ publickey = publickey.to_bn if not publickey.is_a?(OpenSSL::BN) and publickey.respond_to?(:to_bn)
121
+ publickey = publickey.to_s(2).rjust(C_bytes, JOSE::JWA::ZERO_PAD).reverse if publickey.is_a?(OpenSSL::BN)
122
+ return publickey
123
+ end
124
+
125
+ def coerce_secret_bytes!(secret)
126
+ raise ArgumentError, "secret size must be #{C_secretbytes} bytes" if not valid_secret?(secret)
127
+ secret = secret.to_bytes(C_bits) if secret.is_a?(JOSE::JWA::FieldElement)
128
+ secret = secret.to_bn if not secret.is_a?(OpenSSL::BN) and secret.respond_to?(:to_bn)
129
+ secret = secret.to_s(2).rjust(C_bytes, JOSE::JWA::ZERO_PAD).reverse if secret.is_a?(OpenSSL::BN)
130
+ return secret
131
+ end
132
+
133
+ def coerce_secretkey_bytes!(secretkey)
134
+ raise ArgumentError, "secretkey size must be #{C_secretkeybytes} bytes" if not valid_secretkey?(secretkey)
135
+ secretkey = secretkey.to_bytes(C_secretkeybytes * 8) if secretkey.is_a?(JOSE::JWA::FieldElement)
136
+ secretkey = secretkey.to_bn if not secretkey.is_a?(OpenSSL::BN) and secretkey.respond_to?(:to_bn)
137
+ secretkey = secretkey.to_s(2).rjust(C_secretkeybytes, JOSE::JWA::ZERO_PAD).reverse if secretkey.is_a?(OpenSSL::BN)
138
+ return secretkey
139
+ end
140
+
141
+ def valid_publickey?(publickey)
142
+ return true if publickey.is_a?(JOSE::JWA::FieldElement) and publickey.p == C_p
143
+ if not publickey.is_a?(OpenSSL::BN) and publickey.respond_to?(:to_bn)
144
+ publickey = publickey.to_bn
145
+ end
146
+ pkbytes = 0
147
+ if publickey.is_a?(OpenSSL::BN)
148
+ if publickey.num_bytes > C_publickeybytes
149
+ pkbytes = publickey.num_bytes
150
+ else
151
+ pkbytes = C_publickeybytes
152
+ end
153
+ end
154
+ pkbytes = publickey.bytesize if publickey.respond_to?(:bytesize)
155
+ return !!(pkbytes == C_publickeybytes)
156
+ end
157
+
158
+ def valid_secret?(secret)
159
+ return true if secret.is_a?(JOSE::JWA::FieldElement) and secret.p == C_p
160
+ if not secret.is_a?(OpenSSL::BN) and secret.respond_to?(:to_bn)
161
+ secret = secret.to_bn
162
+ end
163
+ seedbytes = 0
164
+ if secret.is_a?(OpenSSL::BN)
165
+ if secret.num_bytes > C_secretbytes
166
+ seedbytes = secret.num_bytes
167
+ else
168
+ seedbytes = C_secretbytes
169
+ end
170
+ end
171
+ seedbytes = secret.bytesize if secret.respond_to?(:bytesize)
172
+ return !!(seedbytes == C_secretbytes)
173
+ end
174
+
175
+ def valid_secretkey?(secretkey)
176
+ return true if secretkey.is_a?(JOSE::JWA::FieldElement) and secretkey.p == C_p
177
+ if not secretkey.is_a?(OpenSSL::BN) and secretkey.respond_to?(:to_bn)
178
+ secretkey = secretkey.to_bn
179
+ end
180
+ skbytes = 0
181
+ if secretkey.is_a?(OpenSSL::BN)
182
+ if secretkey.num_bytes > C_secretkeybytes
183
+ skbytes = secretkey.num_bytes
184
+ else
185
+ skbytes = C_secretkeybytes
186
+ end
187
+ end
188
+ skbytes = secretkey.bytesize if secretkey.respond_to?(:bytesize)
189
+ return !!(skbytes == C_secretkeybytes)
190
+ end
191
+
117
192
  end
@@ -0,0 +1,55 @@
1
+ module JOSE::JWA::Ed25519_CryptoRb
2
+
3
+ extend self
4
+
5
+ def keypair(secret = nil)
6
+ secret ||= Ed25519::SigningKey.generate()
7
+ sk = coerce_signing_key!(secret)
8
+ pk = sk.verify_key()
9
+ return pk.to_bytes(), sk.keypair()
10
+ end
11
+
12
+ def sk_to_pk(sk)
13
+ return sk[Ed25519::KEY_SIZE..-1]
14
+ end
15
+
16
+ def sign(m, sk)
17
+ signing_key = coerce_signing_key!(sk)
18
+ return signing_key.sign(m)
19
+ end
20
+
21
+ def sign_ph(m, sk)
22
+ return sign(Digest::SHA512.digest(m), sk)
23
+ end
24
+
25
+ def verify(sig, m, pk)
26
+ return Ed25519::VerifyKey.new(pk).verify(sig, m)
27
+ end
28
+
29
+ def verify_ph(sig, m, pk)
30
+ return verify(sig, Digest::SHA512.digest(m), pk)
31
+ end
32
+
33
+ def coerce_signing_key!(sk)
34
+ return sk if sk.is_a?(Ed25519::SigningKey)
35
+ sk =
36
+ if not sk.respond_to?(:bytesize)
37
+ begin
38
+ JOSE::JWA::Ed25519.coerce_secret_bytes!(sk)
39
+ rescue ArgumentError
40
+ JOSE::JWA::Ed25519.coerce_secretkey_bytes!(sk)
41
+ end
42
+ else
43
+ sk
44
+ end
45
+ return Ed25519::SigningKey.from_keypair(sk) if sk.bytesize === JOSE::JWA::Ed25519::C_secretkeybytes
46
+ return Ed25519::SigningKey.new(sk)
47
+ end
48
+
49
+ def coerce_verify_key!(pk)
50
+ return pk if pk.is_a?(Ed25519::VerifyKey)
51
+ pk = JOSE::JWA::Ed25519.coerce_publickey_bytes!(pk) if not pk.respond_to?(:bytesize)
52
+ return Ed25519::VerifyKey.new(pk)
53
+ end
54
+
55
+ end
@@ -0,0 +1,47 @@
1
+ module JOSE::JWA::X25519_CryptoRb
2
+
3
+ extend self
4
+
5
+ def curve25519(k, u)
6
+ k = coerce_scalar!(k)
7
+ u = coerce_montgomery_u!(u)
8
+ return k.diffie_hellman(u)
9
+ end
10
+
11
+ def x25519(sk, pk)
12
+ return curve25519(sk, pk).to_bytes()
13
+ end
14
+
15
+ def x25519_base(sk)
16
+ scalar = coerce_scalar!(sk)
17
+ return scalar.public_key.to_bytes()
18
+ end
19
+
20
+ def keypair(sk = nil)
21
+ sk ||= X25519::Scalar.generate()
22
+ scalar = coerce_scalar!(sk)
23
+ pk = sk_to_pk(scalar)
24
+ return pk, scalar.to_bytes()
25
+ end
26
+
27
+ def shared_secret(pk, sk)
28
+ return x25519(sk, pk)
29
+ end
30
+
31
+ def sk_to_pk(sk)
32
+ return x25519_base(sk)
33
+ end
34
+
35
+ def coerce_montgomery_u!(pk)
36
+ return pk if pk.is_a?(X25519::MontgomeryU)
37
+ pk = JOSE::JWA::X25519.coerce_coordinate_bytes!(u) if not pk.respond_to?(:bytesize)
38
+ return X25519::MontgomeryU.new(pk)
39
+ end
40
+
41
+ def coerce_scalar!(sk)
42
+ return sk if sk.is_a?(X25519::Scalar)
43
+ sk = JOSE::JWA::X25519.coerce_scalar_bytes!(sk) if not sk.respond_to?(:bytesize)
44
+ return X25519::Scalar.new(sk)
45
+ end
46
+
47
+ end
@@ -9,14 +9,20 @@ class JOSE::JWK::KTY_RSA < Struct.new(:key)
9
9
  elsif fields['d'].is_a?(String)
10
10
  if fields['dp'].is_a?(String) and fields['dq'].is_a?(String) and fields['p'].is_a?(String) and fields['q'].is_a?(String) and fields['qi'].is_a?(String)
11
11
  rsa = OpenSSL::PKey::RSA.new
12
- rsa.d = OpenSSL::BN.new(JOSE.urlsafe_decode64(fields['d']), 2)
13
- rsa.dmp1 = OpenSSL::BN.new(JOSE.urlsafe_decode64(fields['dp']), 2)
14
- rsa.dmq1 = OpenSSL::BN.new(JOSE.urlsafe_decode64(fields['dq']), 2)
15
- rsa.e = OpenSSL::BN.new(JOSE.urlsafe_decode64(fields['e']), 2)
16
- rsa.n = OpenSSL::BN.new(JOSE.urlsafe_decode64(fields['n']), 2)
17
- rsa.p = OpenSSL::BN.new(JOSE.urlsafe_decode64(fields['p']), 2)
18
- rsa.q = OpenSSL::BN.new(JOSE.urlsafe_decode64(fields['q']), 2)
19
- rsa.iqmp = OpenSSL::BN.new(JOSE.urlsafe_decode64(fields['qi']), 2)
12
+ rsa.set_key(
13
+ OpenSSL::BN.new(JOSE.urlsafe_decode64(fields['n']), 2),
14
+ OpenSSL::BN.new(JOSE.urlsafe_decode64(fields['e']), 2),
15
+ OpenSSL::BN.new(JOSE.urlsafe_decode64(fields['d']), 2)
16
+ )
17
+ rsa.set_factors(
18
+ OpenSSL::BN.new(JOSE.urlsafe_decode64(fields['p']), 2),
19
+ OpenSSL::BN.new(JOSE.urlsafe_decode64(fields['q']), 2)
20
+ )
21
+ rsa.set_crt_params(
22
+ OpenSSL::BN.new(JOSE.urlsafe_decode64(fields['dp']), 2),
23
+ OpenSSL::BN.new(JOSE.urlsafe_decode64(fields['dq']), 2),
24
+ OpenSSL::BN.new(JOSE.urlsafe_decode64(fields['qi']), 2)
25
+ )
20
26
  return JOSE::JWK::KTY_RSA.new(JOSE::JWK::PKeyProxy.new(rsa)), fields.except('kty', 'd', 'dp', 'dq', 'e', 'n', 'p', 'q', 'qi')
21
27
  else
22
28
  d = OpenSSL::BN.new(JOSE.urlsafe_decode64(fields['d']), 2)
@@ -27,8 +33,11 @@ class JOSE::JWK::KTY_RSA < Struct.new(:key)
27
33
  end
28
34
  else
29
35
  rsa = OpenSSL::PKey::RSA.new
30
- rsa.e = OpenSSL::BN.new(JOSE.urlsafe_decode64(fields['e']), 2)
31
- rsa.n = OpenSSL::BN.new(JOSE.urlsafe_decode64(fields['n']), 2)
36
+ rsa.set_key(
37
+ OpenSSL::BN.new(JOSE.urlsafe_decode64(fields['n']), 2),
38
+ OpenSSL::BN.new(JOSE.urlsafe_decode64(fields['e']), 2),
39
+ nil
40
+ )
32
41
  return JOSE::JWK::KTY_RSA.new(JOSE::JWK::PKeyProxy.new(rsa)), fields.except('kty', 'e', 'n')
33
42
  end
34
43
  else
@@ -220,15 +229,12 @@ private
220
229
  dp = d % (p - 1)
221
230
  dq = d % (q - 1)
222
231
  qi = q.mod_inverse(p)
223
- rsa = OpenSSL::PKey::RSA.new
224
- rsa.d = d
225
- rsa.dmp1 = dp
226
- rsa.dmq1 = dq
227
- rsa.e = e
228
- rsa.n = n
229
- rsa.p = p
230
- rsa.q = q
231
- rsa.iqmp = qi
232
+
233
+ rsa = OpenSSL::PKey::RSA.new
234
+ rsa.set_key(n, e, d)
235
+ rsa.set_factors(p, q)
236
+ rsa.set_crt_params(dp, dq, qi)
237
+
232
238
  return rsa
233
239
  end
234
240
 
@@ -1,3 +1,3 @@
1
1
  module JOSE
2
- VERSION = "1.1.2"
2
+ VERSION = "1.1.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jose
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Bennett
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-07-08 00:00:00.000000000 Z
11
+ date: 2018-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hamster
@@ -30,28 +30,28 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.12'
33
+ version: '1.16'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.12'
40
+ version: '1.16'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '11.1'
47
+ version: '12.3'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '11.1'
54
+ version: '12.3'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: minitest
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -94,9 +94,37 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: ed25519
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: x25519
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
97
125
  description: JSON Object Signing and Encryption
98
126
  email:
99
- - andrew@pixid.com
127
+ - potatosaladx@gmail.com
100
128
  executables: []
101
129
  extensions: []
102
130
  extra_rdoc_files: []
@@ -125,6 +153,7 @@ files:
125
153
  - lib/jose/jwa/aes_kw.rb
126
154
  - lib/jose/jwa/concat_kdf.rb
127
155
  - lib/jose/jwa/curve25519.rb
156
+ - lib/jose/jwa/curve25519_cryptorb.rb
128
157
  - lib/jose/jwa/curve25519_rbnacl.rb
129
158
  - lib/jose/jwa/curve25519_ruby.rb
130
159
  - lib/jose/jwa/curve25519_unsupported.rb
@@ -132,6 +161,7 @@ files:
132
161
  - lib/jose/jwa/curve448_ruby.rb
133
162
  - lib/jose/jwa/curve448_unsupported.rb
134
163
  - lib/jose/jwa/ed25519.rb
164
+ - lib/jose/jwa/ed25519_cryptorb.rb
135
165
  - lib/jose/jwa/ed25519_rbnacl.rb
136
166
  - lib/jose/jwa/ed448.rb
137
167
  - lib/jose/jwa/edwards_point.rb
@@ -140,6 +170,7 @@ files:
140
170
  - lib/jose/jwa/pkcs7.rb
141
171
  - lib/jose/jwa/sha3.rb
142
172
  - lib/jose/jwa/x25519.rb
173
+ - lib/jose/jwa/x25519_cryptorb.rb
143
174
  - lib/jose/jwa/x25519_rbnacl.rb
144
175
  - lib/jose/jwa/x448.rb
145
176
  - lib/jose/jwe.rb
@@ -200,9 +231,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
200
231
  version: '0'
201
232
  requirements: []
202
233
  rubyforge_project:
203
- rubygems_version: 2.5.1
234
+ rubygems_version: 2.7.6
204
235
  signing_key:
205
236
  specification_version: 4
206
237
  summary: JSON Object Signing and Encryption
207
238
  test_files: []
208
- has_rdoc: