class JWT::JWK::HMAC

Constants

KTY
KTYS

Attributes

keypair[R]
signing_key[R]

Public Class Methods

import(jwk_data) click to toggle source
# File lib/jwt/jwk/hmac.rb, line 56
def import(jwk_data)
  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, kid: jwk_kid)
end
new(signing_key, options = {}) click to toggle source
Calls superclass method
# File lib/jwt/jwk/hmac.rb, line 11
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

Public Instance Methods

export(options = {}) click to toggle source

See tools.ietf.org/html/rfc7517#appendix-A.3

# File lib/jwt/jwk/hmac.rb, line 27
def export(options = {})
  exported_hash = {
    kty: KTY,
    kid: kid
  }

  return exported_hash unless private? && options[:include_private] == true

  exported_hash.merge(
    k: signing_key
  )
end
key_digest() click to toggle source
# File lib/jwt/jwk/hmac.rb, line 49
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
members() click to toggle source
# File lib/jwt/jwk/hmac.rb, line 40
def members
  {
    kty: KTY,
    k: signing_key
  }
end
private?() click to toggle source
# File lib/jwt/jwk/hmac.rb, line 18
def private?
  true
end
public_key() click to toggle source
# File lib/jwt/jwk/hmac.rb, line 22
def public_key
  nil
end