jwt 3.1.1 → 3.1.2

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: 3380efe421e4f603914588590fc533c17279e19e85c463b23966a3a8c8e7c663
4
- data.tar.gz: 56c81c1ab9cbdd91b6b390ba01a27b4ec45d26956b8fba29e2af313de049f785
3
+ metadata.gz: 4fbf6e518cee3ac505360ea356f34fab6a68c5dfc2112671105085fbb03c08df
4
+ data.tar.gz: 0f206bdf51b4a979b6f734d6582f7e18762f2d3a1ee7feb38499fc4a92d77115
5
5
  SHA512:
6
- metadata.gz: 044edf6b74d2f0c3efd3dd3280aa6aeeb8a8c6532b96b4def9745b0a1c3dca53940af68e3e5bf169aeef0be92583c279efd8f60af1156e5a7625d63d4bfade8e
7
- data.tar.gz: 58beba33f077fd033cbcfb674bebae905360dd96dcd11520b5633b4be0579a4e7e8b9584c99f8dcc605481f7e67e003ca356e1b7d75368db3ae1abb0056611ac
6
+ metadata.gz: 4fa9df3dae62f1abbe065fd144641a8869faddd45be94cb58871dc690fead80f38f741b5de5319b5a31d8d28fe16ae32627f27d396cbe2f91f80acc9a6d3e477
7
+ data.tar.gz: 41e30090c5ee55b3706b4d2bddd73dc596e4db46669c292af56bca9ebe9f36a8eafe7ce33578f3012d87f910a6880ee26e6c26c46bfda59470a23f24e47a739d
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## [v3.1.2](https://github.com/jwt/ruby-jwt/tree/v3.1.2) (2025-06-28)
4
+
5
+ [Full Changelog](https://github.com/jwt/ruby-jwt/compare/v3.1.1...v3.1.2)
6
+
7
+ **Fixes and enhancements:**
8
+
9
+ - Avoid using the same digest across calls in JWT::JWA::Ecdsa and JWT::JWA::Rsa [#697](https://github.com/jwt/ruby-jwt/pull/697)
10
+ - Fix signing with a EC JWK [#699](https://github.com/jwt/ruby-jwt/pull/699) ([@anakinj](https://github.com/anakinj))
11
+
3
12
  ## [v3.1.1](https://github.com/jwt/ruby-jwt/tree/v3.1.1) (2025-06-24)
4
13
 
5
14
  [Full Changelog](https://github.com/jwt/ruby-jwt/compare/v3.1.0...v3.1.1)
data/README.md CHANGED
@@ -265,7 +265,7 @@ jwk = JWT::JWK.import(JSON.parse(jwk_json))
265
265
 
266
266
  token = JWT::Token.new(payload: payload, header: header)
267
267
 
268
- token.sign!(key: jwk)
268
+ token.sign!(key: jwk, algorithm: 'HS256')
269
269
 
270
270
  encoded_token = JWT::EncodedToken.new(token.jwt)
271
271
  encoded_token.verify!(signature: { algorithm: ["HS256", "HS512"], key: jwk})
data/lib/jwt/jwa/ecdsa.rb CHANGED
@@ -8,7 +8,7 @@ module JWT
8
8
 
9
9
  def initialize(alg, digest)
10
10
  @alg = alg
11
- @digest = OpenSSL::Digest.new(digest)
11
+ @digest = digest
12
12
  end
13
13
 
14
14
  def sign(data:, signing_key:)
@@ -20,7 +20,7 @@ module JWT
20
20
 
21
21
  raise IncorrectAlgorithm, "payload algorithm is #{alg} but #{key_algorithm} signing key was provided" if alg != key_algorithm
22
22
 
23
- asn1_to_raw(signing_key.dsa_sign_asn1(digest.digest(data)), signing_key)
23
+ asn1_to_raw(signing_key.dsa_sign_asn1(OpenSSL::Digest.new(digest).digest(data)), signing_key)
24
24
  end
25
25
 
26
26
  def verify(data:, signature:, verification_key:)
@@ -32,7 +32,7 @@ module JWT
32
32
  key_algorithm = curve_definition[:algorithm]
33
33
  raise IncorrectAlgorithm, "payload algorithm is #{alg} but #{key_algorithm} verification key was provided" if alg != key_algorithm
34
34
 
35
- verification_key.dsa_verify_asn1(digest.digest(data), raw_to_asn1(signature, verification_key))
35
+ verification_key.dsa_verify_asn1(OpenSSL::Digest.new(digest).digest(data), raw_to_asn1(signature, verification_key))
36
36
  rescue OpenSSL::PKey::PKeyError
37
37
  raise JWT::VerificationError, 'Signature verification raised'
38
38
  end
data/lib/jwt/jwa/rsa.rb CHANGED
@@ -8,18 +8,18 @@ module JWT
8
8
 
9
9
  def initialize(alg)
10
10
  @alg = alg
11
- @digest = OpenSSL::Digest.new(alg.sub('RS', 'SHA'))
11
+ @digest = alg.sub('RS', 'SHA')
12
12
  end
13
13
 
14
14
  def sign(data:, signing_key:)
15
15
  raise_sign_error!("The given key is a #{signing_key.class}. It has to be an OpenSSL::PKey::RSA instance") unless signing_key.is_a?(OpenSSL::PKey::RSA)
16
16
  raise_sign_error!('The key length must be greater than or equal to 2048 bits') if signing_key.n.num_bits < 2048
17
17
 
18
- signing_key.sign(digest, data)
18
+ signing_key.sign(OpenSSL::Digest.new(digest), data)
19
19
  end
20
20
 
21
21
  def verify(data:, signature:, verification_key:)
22
- verification_key.verify(digest, signature, data)
22
+ verification_key.verify(OpenSSL::Digest.new(digest), signature, data)
23
23
  rescue OpenSSL::PKey::PKeyError
24
24
  raise JWT::VerificationError, 'Signature verification raised'
25
25
  end
data/lib/jwt/jwk/ec.rb CHANGED
@@ -71,8 +71,6 @@ module JWT
71
71
  super
72
72
  end
73
73
 
74
- private
75
-
76
74
  def jwa
77
75
  return super if self[:alg]
78
76
 
@@ -80,6 +78,8 @@ module JWT
80
78
  JWA.resolve(JWA::Ecdsa.curve_by_name(curve_name)[:algorithm])
81
79
  end
82
80
 
81
+ private
82
+
83
83
  def ec_key
84
84
  @ec_key ||= create_ec_key(self[:crv], self[:x], self[:y], self[:d])
85
85
  end
data/lib/jwt/version.rb CHANGED
@@ -16,7 +16,7 @@ module JWT
16
16
  module VERSION
17
17
  MAJOR = 3
18
18
  MINOR = 1
19
- TINY = 1
19
+ TINY = 2
20
20
  PRE = nil
21
21
 
22
22
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jwt
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.1
4
+ version: 3.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Rudat
@@ -199,7 +199,7 @@ licenses:
199
199
  - MIT
200
200
  metadata:
201
201
  bug_tracker_uri: https://github.com/jwt/ruby-jwt/issues
202
- changelog_uri: https://github.com/jwt/ruby-jwt/blob/v3.1.1/CHANGELOG.md
202
+ changelog_uri: https://github.com/jwt/ruby-jwt/blob/v3.1.2/CHANGELOG.md
203
203
  rubygems_mfa_required: 'true'
204
204
  rdoc_options: []
205
205
  require_paths: