class Acme::Client::JWK::Base

Constants

THUMBPRINT_DIGEST

Public Class Methods

new() click to toggle source

Initialize a new JWK.

Returns nothing.

# File lib/acme/client/jwk/base.rb, line 7
def initialize
  raise NotImplementedError
end

Public Instance Methods

jwa_alg() click to toggle source

The name of the algorithm as needed for the ‘alg` member of a JWS object.

Returns a String.

# File lib/acme/client/jwk/base.rb, line 71
def jwa_alg
  raise NotImplementedError
end
jws(header: {}, payload:) click to toggle source

Generate a JWS JSON web signature.

header - A Hash of extra header fields to include. payload - A Hash of payload data.

Returns a JSON String.

# File lib/acme/client/jwk/base.rb, line 17
def jws(header: {}, payload:)
  header = jws_header(header)
  encoded_header = Acme::Client::Util.urlsafe_base64(header.to_json)
  encoded_payload = Acme::Client::Util.urlsafe_base64(payload.nil? ? '' : payload.to_json)

  signature_data = "#{encoded_header}.#{encoded_payload}"
  signature = sign(signature_data)
  encoded_signature = Acme::Client::Util.urlsafe_base64(signature)

  {
    protected: encoded_header,
    payload: encoded_payload,
    signature: encoded_signature
  }.to_json
end
jws_header(header) click to toggle source

Header fields for a JSON web signature.

typ: - Value for the ‘typ` field. Default ’JWT’.

Returns a Hash.

# File lib/acme/client/jwk/base.rb, line 59
def jws_header(header)
  jws = {
    typ: 'JWT',
    alg: jwa_alg
  }.merge(header)
  jws[:jwk] = to_h if header[:kid].nil?
  jws
end
sign(message) click to toggle source

Sign a message with the private key.

message - A String message to sign.

Returns a String signature. rubocop:disable Lint/UnusedMethodArgument

# File lib/acme/client/jwk/base.rb, line 81
def sign(message)
  raise NotImplementedError
end
thumbprint() click to toggle source

JWK thumbprint as used for key authorization.

Returns a String.

# File lib/acme/client/jwk/base.rb, line 50
def thumbprint
  Acme::Client::Util.urlsafe_base64(THUMBPRINT_DIGEST.digest(to_json))
end
to_h() click to toggle source

Get this JWK as a Hash for JSON serialization.

Returns a Hash.

# File lib/acme/client/jwk/base.rb, line 43
def to_h
  raise NotImplementedError
end
to_json() click to toggle source

Serialize this JWK as JSON.

Returns a JSON string.

# File lib/acme/client/jwk/base.rb, line 36
def to_json
  to_h.to_json
end