#ifndef DEVICE_FIDO_CABLE_V2_TEST_UTIL_H_
#define DEVICE_FIDO_CABLE_V2_TEST_UTIL_H_
#include <memory>
#include "base/containers/span.h"
#include "base/functional/callback_forward.h"
#include "device/fido/cable/v2_authenticator.h"
#include "device/fido/cable/v2_constants.h"
#include "device/fido/cable/v2_discovery.h"
#include "services/network/public/mojom/network_context.mojom-forward.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
namespace device {
class VirtualCtap2Device;
namespace cablev2 {
using ContactCallback = base::RepeatingCallback<void(
base::span<const uint8_t, kTunnelIdSize> tunnel_id,
base::span<const uint8_t, kPairingIDSize> pairing_id,
base::span<const uint8_t, kClientNonceSize> client_nonce,
const std::string& request_type_hint)>;
std::unique_ptr<network::mojom::NetworkContext> NewMockTunnelServer(
absl::optional<ContactCallback> contact_callback);
namespace authenticator {
class Observer {
public:
virtual void OnStatus(Platform::Status) = 0;
virtual void OnCompleted(absl::optional<Platform::Error>) = 0;
};
std::unique_ptr<Platform> NewMockPlatform(
Discovery::AdvertEventStream::Callback ble_advert_callback,
device::VirtualCtap2Device* ctap2_device,
Observer* observer);
std::unique_ptr<Transaction> NewLateLinkingDevice(
CtapDeviceResponseCode ctap_error,
std::unique_ptr<Platform> platform,
network::mojom::NetworkContext* network_context,
base::span<const uint8_t> qr_secret,
base::span<const uint8_t, kP256X962Length> peer_identity);
}
}
}
#endif