class WebAuthn::ClientData

Constants

VALID_TOKEN_BINDING_STATUSES

Attributes

client_data_json[R]

Public Class Methods

new(client_data_json) click to toggle source
# File lib/webauthn/client_data.rb, line 14
def initialize(client_data_json)
  @client_data_json = client_data_json
end

Public Instance Methods

challenge() click to toggle source
# File lib/webauthn/client_data.rb, line 22
def challenge
  WebAuthn.standard_encoder.decode(data["challenge"])
end
hash() click to toggle source
# File lib/webauthn/client_data.rb, line 42
def hash
  OpenSSL::Digest::SHA256.digest(client_data_json)
end
origin() click to toggle source
# File lib/webauthn/client_data.rb, line 26
def origin
  data["origin"]
end
token_binding() click to toggle source
# File lib/webauthn/client_data.rb, line 30
def token_binding
  data["tokenBinding"]
end
type() click to toggle source
# File lib/webauthn/client_data.rb, line 18
def type
  data["type"]
end
valid_token_binding_format?() click to toggle source
# File lib/webauthn/client_data.rb, line 34
def valid_token_binding_format?
  if token_binding
    token_binding.is_a?(Hash) && VALID_TOKEN_BINDING_STATUSES.include?(token_binding["status"])
  else
    true
  end
end

Private Instance Methods

data() click to toggle source
# File lib/webauthn/client_data.rb, line 50
def data
  @data ||=
    begin
      if client_data_json
        JSON.parse(client_data_json)
      else
        raise ClientDataMissingError, "Client Data JSON is missing"
      end
    end
end