class WebAuthn::Context

Attributes

client_data_json[RW]

Public Class Methods

for(encoded_client_data_json, origin:, challenge:) click to toggle source
# File lib/web_authn/context.rb, line 34
def for(encoded_client_data_json, origin:, challenge:)
  client_data_json = ClientDataJSON.decode encoded_client_data_json

  context = case client_data_json.type
  when 'webauthn.create'
    Registration.new(client_data_json)
  when 'webauthn.get'
    Authentication.new(client_data_json)
  else
    raise InvalidContext, 'Unknown Client Data JSON Type'
  end

  context.verify_session!(origin: origin, challenge: challenge)
end
new(client_data_json) click to toggle source
# File lib/web_authn/context.rb, line 5
def initialize(client_data_json)
  self.client_data_json = client_data_json
end

Public Instance Methods

authentication?() click to toggle source
# File lib/web_authn/context.rb, line 23
def authentication?
  false
end
registration?() click to toggle source
# File lib/web_authn/context.rb, line 19
def registration?
  false
end
verify_flags!() click to toggle source
# File lib/web_authn/context.rb, line 27
def verify_flags!
  unless flags.uv? || flags.up?
    raise InvalidAssertion, 'Missing Flag: uv" nor "up"'
  end
end
verify_session!(origin:, challenge:) click to toggle source
# File lib/web_authn/context.rb, line 9
def verify_session!(origin:, challenge:)
  if client_data_json.origin != origin
    raise InvalidContext, 'Invalid Origin'
  end
  if client_data_json.challenge != challenge
    raise InvalidContext, 'Invalid Challenge'
  end
  self
end