class WebAuthn::ClientData

def challenge

def challenge
  WebAuthn.standard_encoder.decode(data["challenge"])
end

def data

def data
  @data ||=
    begin
      if client_data_json
        JSON.parse(client_data_json)
      else
        raise ClientDataMissingError, "Client Data JSON is missing"
      end
    end
end

def hash

def hash
  OpenSSL::Digest::SHA256.digest(client_data_json)
end

def initialize(client_data_json)

def initialize(client_data_json)
  @client_data_json = client_data_json
end

def origin

def origin
  data["origin"]
end

def token_binding

def token_binding
  data["tokenBinding"]
end

def type

def type
  data["type"]
end

def valid_token_binding_format?

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