// Copyright 2023 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_WEBAUTHN_CORE_BROWSER_PASSKEY_MODEL_H_ #define COMPONENTS_WEBAUTHN_CORE_BROWSER_PASSKEY_MODEL_H_ #include <optional> #include <string> #include <string_view> #include <vector> #include "base/containers/flat_set.h" #include "base/containers/span.h" #include "base/memory/weak_ptr.h" #include "base/observer_list_types.h" #include "components/keyed_service/core/keyed_service.h" #include "components/webauthn/core/browser/passkey_model_change.h" namespace base { class Location; } namespace sync_pb { class WebauthnCredentialSpecifics; } namespace syncer { class DataTypeControllerDelegate; } namespace webauthn { // PasskeyModel provides access to passkeys, which are represented as // WebauthnCredentialSpecifics in Sync. // // By design, non-syncing passkeys are not supported (unlike passwords e.g., // which can be created on the local device only, without uploading them to // Sync). // // Aside from Sync passkeys, there might be other WebAuthn platform credentials // on the device. E.g., non-passkey credentials in the browser-provided // authenticators on CrOS (u2fd) and macOS (//device/fido/mac); or platform // credentials owned by Windows Hello or iCloud Keychain. None of these are // accessible though PasskeyModel. class PasskeyModel : public KeyedService { … }; } // namespace webauthn #endif // COMPONENTS_WEBAUTHN_CORE_BROWSER_PASSKEY_MODEL_H_