| // Copyright 2022 The ChromiumOS Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef LIBHWSEC_BACKEND_MOCK_U2F_H_ |
| #define LIBHWSEC_BACKEND_MOCK_U2F_H_ |
| |
| #include <cstdint> |
| #include <optional> |
| |
| #include <brillo/secure_blob.h> |
| #include <gmock/gmock.h> |
| #include <gtest/gtest.h> |
| |
| #include "libhwsec/backend/u2f.h" |
| #include "libhwsec/status.h" |
| |
| namespace hwsec { |
| |
| class MockU2f : public U2f { |
| public: |
| MockU2f() = default; |
| explicit MockU2f(U2f* on_call) : default_(on_call) { |
| using testing::Invoke; |
| if (!default_) |
| return; |
| ON_CALL(*this, IsEnabled).WillByDefault(Invoke(default_, &U2f::IsEnabled)); |
| ON_CALL(*this, GenerateUserPresenceOnly) |
| .WillByDefault(Invoke(default_, &U2f::GenerateUserPresenceOnly)); |
| ON_CALL(*this, Generate).WillByDefault(Invoke(default_, &U2f::Generate)); |
| ON_CALL(*this, SignUserPresenceOnly) |
| .WillByDefault(Invoke(default_, &U2f::SignUserPresenceOnly)); |
| ON_CALL(*this, Sign).WillByDefault(Invoke(default_, &U2f::Sign)); |
| ON_CALL(*this, CheckUserPresenceOnly) |
| .WillByDefault(Invoke(default_, &U2f::CheckUserPresenceOnly)); |
| ON_CALL(*this, Check).WillByDefault(Invoke(default_, &U2f::Check)); |
| ON_CALL(*this, G2fAttest).WillByDefault(Invoke(default_, &U2f::G2fAttest)); |
| ON_CALL(*this, CorpAttest) |
| .WillByDefault(Invoke(default_, &U2f::CorpAttest)); |
| ON_CALL(*this, GetG2fAttestData) |
| .WillByDefault(Invoke(default_, &U2f::GetG2fAttestData)); |
| ON_CALL(*this, GetConfig).WillByDefault(Invoke(default_, &U2f::GetConfig)); |
| } |
| |
| MOCK_METHOD(StatusOr<bool>, IsEnabled, (), (override)); |
| MOCK_METHOD(StatusOr<u2f::GenerateResult>, |
| GenerateUserPresenceOnly, |
| (const brillo::Blob&, |
| const brillo::SecureBlob&, |
| u2f::ConsumeMode, |
| u2f::UserPresenceMode), |
| (override)); |
| MOCK_METHOD(StatusOr<u2f::GenerateResult>, |
| Generate, |
| (const brillo::Blob&, |
| const brillo::SecureBlob&, |
| u2f::ConsumeMode, |
| u2f::UserPresenceMode, |
| const brillo::Blob&), |
| (override)); |
| MOCK_METHOD(StatusOr<u2f::Signature>, |
| SignUserPresenceOnly, |
| (const brillo::Blob&, |
| const brillo::SecureBlob&, |
| const brillo::Blob&, |
| u2f::ConsumeMode, |
| u2f::UserPresenceMode, |
| const brillo::Blob&), |
| (override)); |
| MOCK_METHOD(StatusOr<u2f::Signature>, |
| Sign, |
| (const brillo::Blob&, |
| const brillo::SecureBlob&, |
| const std::optional<brillo::SecureBlob>&, |
| const brillo::Blob&, |
| u2f::ConsumeMode, |
| u2f::UserPresenceMode, |
| const brillo::Blob&), |
| (override)); |
| MOCK_METHOD(Status, |
| CheckUserPresenceOnly, |
| (const brillo::Blob&, |
| const brillo::SecureBlob&, |
| const brillo::Blob&), |
| (override)); |
| MOCK_METHOD(Status, |
| Check, |
| (const brillo::Blob&, |
| const brillo::SecureBlob&, |
| const brillo::Blob&), |
| (override)); |
| MOCK_METHOD(StatusOr<u2f::Signature>, |
| G2fAttest, |
| (const brillo::Blob&, |
| const brillo::SecureBlob&, |
| const brillo::Blob&, |
| const brillo::Blob&, |
| const brillo::Blob&), |
| (override)); |
| MOCK_METHOD(StatusOr<u2f::Signature>, |
| CorpAttest, |
| (const brillo::Blob&, |
| const brillo::SecureBlob&, |
| const brillo::Blob&, |
| const brillo::Blob&, |
| const brillo::Blob&, |
| const brillo::Blob&), |
| (override)); |
| MOCK_METHOD(StatusOr<brillo::Blob>, |
| GetG2fAttestData, |
| (const brillo::Blob&, |
| const brillo::Blob&, |
| const brillo::Blob&, |
| const brillo::Blob&), |
| (override)); |
| MOCK_METHOD(StatusOr<u2f::Config>, GetConfig, (), (override)); |
| MOCK_METHOD(StatusOr<u2f::FipsInfo>, GetFipsInfo, (), (override)); |
| MOCK_METHOD(Status, ActivateFips, (), (override)); |
| |
| private: |
| U2f* default_; |
| }; |
| |
| } // namespace hwsec |
| |
| #endif // LIBHWSEC_BACKEND_MOCK_U2F_H_ |