class WebAuthn::AuthenticatorResponse

def verify(expected_challenge, expected_origin = nil, user_presence: nil, user_verification: nil, rp_id: nil)

def verify(expected_challenge, expected_origin = nil, user_presence: nil, user_verification: nil, rp_id: nil)
  expected_origin ||= relying_party.origin || raise("Unspecified expected origin")
  rp_id ||= relying_party.id
  verify_item(:type)
  verify_item(:token_binding)
  verify_item(:challenge, expected_challenge)
  verify_item(:origin, expected_origin)
  verify_item(:authenticator_data)
  verify_item(:rp_id, rp_id || rp_id_from_origin(expected_origin))
  # Fallback to RP configuration unless user_presence is passed in explicitely
  if user_presence.nil? && !relying_party.silent_authentication || user_presence
    verify_item(:user_presence)
  end
  if user_verification
    verify_item(:user_verified)
  end
  true
end