chromium/crypto/scoped_fake_user_verifying_key_provider.h

// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CRYPTO_SCOPED_FAKE_USER_VERIFYING_KEY_PROVIDER_H_
#define CRYPTO_SCOPED_FAKE_USER_VERIFYING_KEY_PROVIDER_H_

namespace crypto {

// ScopedFakeUserVerifyingKeyProvider causes `GetUserVerifyingKeyProvider` to
// return a mock implementation of `UserVerifyingKeyProvider`, that does not use
// system APIs, while it is in scope.
class ScopedFakeUserVerifyingKeyProvider {};

// `ScopedNullUserVerifyingKeyProvider` causes `GetUserVerifyingKeyProvider` to
// return a nullptr, emulating the key provider not being supported, while it
// is in scope.
class ScopedNullUserVerifyingKeyProvider {};

// ScopedFailingUserVerifyingKeyProvider causes `GetUserVerifyingKeyProvider` to
// return a mock implementation of `UserVerifyingKeyProvider` that fails all
// signing requests.
class ScopedFailingUserVerifyingKeyProvider {};

}  // namespace crypto

#endif  // CRYPTO_SCOPED_FAKE_USER_VERIFYING_KEY_PROVIDER_H_