lib/jwt/jwk/hmac.rb in jwt-2.4.1 vs lib/jwt/jwk/hmac.rb in jwt-2.5.0
- old
+ new
@@ -1,18 +1,20 @@
# frozen_string_literal: true
module JWT
module JWK
class HMAC < KeyBase
- KTY = 'oct'
+ KTY = 'oct'
KTYS = [KTY, String].freeze
- def initialize(keypair, kid = nil)
- raise ArgumentError, 'keypair must be of type String' unless keypair.is_a?(String)
+ attr_reader :signing_key
- super
- @kid = kid || generate_kid
+ def initialize(signing_key, options = {})
+ raise ArgumentError, 'signing_key must be of type String' unless signing_key.is_a?(String)
+
+ @signing_key = signing_key
+ super(options)
end
def private?
true
end
@@ -29,18 +31,25 @@
}
return exported_hash unless private? && options[:include_private] == true
exported_hash.merge(
- k: keypair
+ k: signing_key
)
end
- private
+ def members
+ {
+ kty: KTY,
+ k: signing_key
+ }
+ end
- def generate_kid
- sequence = OpenSSL::ASN1::Sequence([OpenSSL::ASN1::UTF8String.new(keypair),
+ alias keypair signing_key # for backwards compatibility
+
+ def key_digest
+ sequence = OpenSSL::ASN1::Sequence([OpenSSL::ASN1::UTF8String.new(signing_key),
OpenSSL::ASN1::UTF8String.new(KTY)])
OpenSSL::Digest::SHA256.hexdigest(sequence.to_der)
end
class << self
@@ -48,10 +57,10 @@
jwk_k = jwk_data[:k] || jwk_data['k']
jwk_kid = jwk_data[:kid] || jwk_data['kid']
raise JWT::JWKError, 'Key format is invalid for HMAC' unless jwk_k
- new(jwk_k, jwk_kid)
+ new(jwk_k, kid: jwk_kid)
end
end
end
end
end