jwt-eddsa 0.9.0 → 1.1.0

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
2
  SHA256:
3
- metadata.gz: d176aca754fd2612a100a6dbccc5cb7452258d61113899aef72bbfeffd8a35a0
4
- data.tar.gz: d9b57d2a032a47bc8bcf313782652c7f7e5404639dff0a230a20d0b9d27d42c5
3
+ metadata.gz: 3fd1fa6708f4279dfe06ff4791c7deb54acfa4bd780908d11a38a163d3a805a1
4
+ data.tar.gz: 48ecc05c4127c72ac7ef0ea65aa142ad4ea69aab18763a7a73183118b87514c3
5
5
  SHA512:
6
- metadata.gz: 3ac0969bd6a41c3ee85cedaf88b1183743fafcf42a5eddef4dc3736be013578a3d9d79b6fe1e69dab327632b84a5d185c33e925d538636d055fcb1196f03e05f
7
- data.tar.gz: e5aeb285f6c04b604713bd63ab58dc41ac3d24c6c7617382e09774f81c094f5f4966385a7ac3a3692bfba87ceaab4bd8fecb1f56446d6289e11d0e037a352500
6
+ metadata.gz: feb697c45c25e28a42c874a065afdfc92a72f45f5ac16905c7e12f08f4ccbfcf5844bfd12c440eec03819956b87dbccd0f6cefbe2dd82374b91a476db31b0c99
7
+ data.tar.gz: 3e3ab7aaf6daeeecb37780f31b7648370cab56f46ae4eea2390719c83040682c4af349fa5935c945f06fca672d0183a911e5dd9c54aa0913f86fba52f614b0bb
@@ -1,3 +1,3 @@
1
1
  {
2
- ".": "0.9.0"
2
+ ".": "1.1.0"
3
3
  }
data/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.1.0](https://github.com/jwt/ruby-jwt-eddsa/compare/v1.0.0...v1.1.0) (2026-11-04)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * allow exporting OKP JWKs with unsupported curves ([#32](https://github.com/jwt/ruby-jwt-eddsa/issues/32)) ([9f26d0d](https://github.com/jwt/ruby-jwt-eddsa/commit/9f26d0db5eb69a91377a82a7f8cc21a7ae991c2c))
9
+ * reject unsupported OKP curves ([#29](https://github.com/jwt/ruby-jwt-eddsa/issues/29)) ([032cfa9](https://github.com/jwt/ruby-jwt-eddsa/commit/032cfa925ad6e123712edf2c83723a873bc6f4e7))
10
+
11
+ ## [1.0.0](https://github.com/jwt/ruby-jwt-eddsa/compare/v0.9.0...v1.0.0) (2026-08-14)
12
+
13
+
14
+ ### ⚠ BREAKING CHANGES
15
+
16
+ * Auto-generated `kid` values for OKP JWKs are now computed from the RFC 8037 required members (crv, kty, x) instead of the incorrect (kty, n, x). Previously generated kid values will no longer match; keys with an explicitly provided kid are unaffected.
17
+
18
+ ### Bug Fixes
19
+
20
+ * Change OKP JWK thumbprint to use crv/kty/x, not RSA's kty/n/x ([#26](https://github.com/jwt/ruby-jwt-eddsa/issues/26)) ([7760623](https://github.com/jwt/ruby-jwt-eddsa/commit/77606230f99ec6f7ec5ebaab939451fea0652bff))
21
+ * OKP JWK kid values now follow RFC 8037 thumbprints ([#26](https://github.com/jwt/ruby-jwt-eddsa/issues/26)) ([6eaf654](https://github.com/jwt/ruby-jwt-eddsa/commit/6eaf654750666d9c3122b46629eeaf9115971694))
22
+
3
23
  ## [0.9.0](https://github.com/jwt/ruby-jwt-eddsa/compare/v0.8.1...v0.9.0) (2025-06-28)
4
24
 
5
25
 
data/README.md CHANGED
@@ -27,6 +27,11 @@ token = JWT.encode({pay: "load"}, private_key, "EdDSA")
27
27
  payload, header = JWT.decode(token, private_key.verify_key, true, algorithm: "EdDSA")
28
28
  ```
29
29
 
30
+ OKP JWKs must specify `crv: "Ed25519"` to provide a signing or verification key.
31
+ Requesting a key with a missing or unsupported curve (including `X25519` and
32
+ `Ed448`) raises `JWT::JWKError`. Such JWKs can still be imported, so an unrelated
33
+ key in a mixed JWKS does not prevent verification with a selected Ed25519 key.
34
+
30
35
  ## Development
31
36
 
32
37
  ```
@@ -7,7 +7,7 @@ module JWT
7
7
  class OKP < ::JWT::JWK::KeyBase
8
8
  KTY = "OKP"
9
9
  KTYS = [KTY, JWT::EdDSA::JWK::OKP, Ed25519::SigningKey, Ed25519::VerifyKey].freeze
10
- OKP_PUBLIC_KEY_ELEMENTS = %i[kty n x].freeze
10
+ OKP_PUBLIC_KEY_ELEMENTS = %i[crv kty x].freeze
11
11
  OKP_PRIVATE_KEY_ELEMENTS = %i[d].freeze
12
12
 
13
13
  def initialize(key, params = nil, options = {})
@@ -23,12 +23,14 @@ module JWT
23
23
  end
24
24
 
25
25
  def verify_key
26
+ check_curve!
26
27
  return @verify_key if defined?(@verify_key)
27
28
 
28
29
  @verify_key = verify_key_from_parameters
29
30
  end
30
31
 
31
32
  def signing_key
33
+ check_curve!
32
34
  return @signing_key if defined?(@signing_key)
33
35
 
34
36
  @signing_key = signing_key_from_parameters
@@ -39,7 +41,7 @@ module JWT
39
41
  end
40
42
 
41
43
  def private?
42
- !signing_key.nil?
44
+ !self[:d].nil?
43
45
  end
44
46
 
45
47
  def members
@@ -93,6 +95,13 @@ module JWT
93
95
  "Incorrect 'kty' value: #{key_params[:kty]}, expected #{KTY}"
94
96
  end
95
97
 
98
+ def check_curve!
99
+ return if self[:crv] == "Ed25519"
100
+
101
+ raise JWT::JWKError,
102
+ "Incorrect 'crv' value: #{self[:crv]}, expected Ed25519"
103
+ end
104
+
96
105
  def parse_okp_key_params(verify_key, signing_key = nil)
97
106
  params = {
98
107
  kty: KTY,
@@ -2,6 +2,6 @@
2
2
 
3
3
  module JWT
4
4
  module EdDSA
5
- VERSION = "0.9.0"
5
+ VERSION = "1.1.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jwt-eddsa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joakim Antman
@@ -78,7 +78,7 @@ licenses:
78
78
  metadata:
79
79
  homepage_uri: https://github.com/jwt/ruby-jwt-eddsa
80
80
  source_code_uri: https://github.com/jwt/ruby-jwt-eddsa
81
- changelog_uri: https://github.com/jwt/ruby-jwt-eddsa/blob/v0.9.0/CHANGELOG.md
81
+ changelog_uri: https://github.com/jwt/ruby-jwt-eddsa/blob/v1.1.0/CHANGELOG.md
82
82
  rubygems_mfa_required: 'true'
83
83
  rdoc_options: []
84
84
  require_paths:
@@ -94,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
94
  - !ruby/object:Gem::Version
95
95
  version: '0'
96
96
  requirements: []
97
- rubygems_version: 3.6.7
97
+ rubygems_version: 4.0.16
98
98
  specification_version: 4
99
99
  summary: EdDSA algorithm extension for ruby-jwt
100
100
  test_files: []