Skip to content

Commit 4d1b11b

Browse files
Support Ruby 3.4 (#26)
* Add base64 to Gemspec as it's no longer a default gem as of Ruby 3.4 The warning that appears without this change is: warning: base64 was loaded from the standard library, but is not part of the default gems starting from Ruby 3.4.0. You can add base64 to your Gemfile or gemspec to silence this warning. * Freeze JWE::Alg::AesKw strings to prevent warnings when using Ruby 3.4 Co-authored-by: Étienne Barrié <[email protected]> --------- Co-authored-by: Étienne Barrié <[email protected]>
1 parent cb9b511 commit 4d1b11b

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

jwe.gemspec

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,6 @@ Gem::Specification.new do |s|
1717

1818
s.required_ruby_version = '>= 2.5.0'
1919
s.metadata['rubygems_mfa_required'] = 'true'
20+
21+
s.add_dependency 'base64'
2022
end

lib/jwe/alg/aes_kw.rb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
require 'jwe/enc/cipher'
24

35
module JWE
@@ -8,13 +10,13 @@ module AesKw
810
attr_accessor :iv
911

1012
def initialize(key = nil, iv = "\xA6\xA6\xA6\xA6\xA6\xA6\xA6\xA6")
11-
self.iv = iv.force_encoding('ASCII-8BIT')
12-
self.key = key.force_encoding('ASCII-8BIT')
13+
self.iv = iv.b
14+
self.key = key.b
1315
end
1416

1517
def encrypt(cek)
1618
a = iv
17-
r = cek.force_encoding('ASCII-8BIT').scan(/.{8}/m)
19+
r = cek.b.scan(/.{8}/m)
1820

1921
6.times do |j|
2022
a, r = kw_encrypt_round(j, a, r)
@@ -36,7 +38,7 @@ def kw_encrypt_round(j, a, r)
3638
end
3739

3840
def decrypt(encrypted_cek)
39-
c = encrypted_cek.force_encoding('ASCII-8BIT').scan(/.{8}/m)
41+
c = encrypted_cek.b.scan(/.{8}/m)
4042
a, *r = c
4143

4244
5.downto(0) do |j|

0 commit comments

Comments
 (0)