// 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_UNEXPORTABLE_KEYS_FEATURES_H_
#define COMPONENTS_UNEXPORTABLE_KEYS_FEATURES_H_

#include "base/component_export.h"
#include "base/feature_list.h"

namespace unexportable_keys {

// If enabled, DBSC-related code will switch `UnexportableKeyProvider` to a mock
// software-backed implementation.
// This feature flag is expected to never be shipped to end users.
COMPONENT_EXPORT(UNEXPORTABLE_KEYS)
BASE_DECLARE_FEATURE(
    kEnableBoundSessionCredentialsSoftwareKeysForManualTesting);

// It enables the garbage collection and deletion of obsolete unexportable keys
// managed by the `UnexportableKeyService`. This feature is primarily
// implemented for macOS to remove orphaned keys from the Keychain,
// particularly those created for Device Bound Session Credentials (DBSC).
// On other platforms, the deletion logic may be a no-op.
COMPONENT_EXPORT(UNEXPORTABLE_KEYS)
BASE_DECLARE_FEATURE(kUnexportableKeyDeletion);

// Enables in-memory spare key pooling for unexportable keys to reduce
// latency.
COMPONENT_EXPORT(UNEXPORTABLE_KEYS)
BASE_DECLARE_FEATURE(kEnableUnexportableKeysSpareKeyPool);

}  // namespace unexportable_keys
#endif  // COMPONENTS_UNEXPORTABLE_KEYS_FEATURES_H_
