virtual_fido_device_factory.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // Copyright 2018 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef DEVICE_FIDO_VIRTUAL_FIDO_DEVICE_FACTORY_H_
  5. #define DEVICE_FIDO_VIRTUAL_FIDO_DEVICE_FACTORY_H_
  6. #include <memory>
  7. #include <utility>
  8. #include <vector>
  9. #include "base/memory/scoped_refptr.h"
  10. #include "device/fido/fido_constants.h"
  11. #include "device/fido/fido_discovery_factory.h"
  12. #include "device/fido/fido_transport_protocol.h"
  13. #include "device/fido/virtual_ctap2_device.h"
  14. #include "device/fido/virtual_fido_device.h"
  15. #include "device/fido/virtual_fido_device_discovery.h"
  16. namespace device {
  17. namespace test {
  18. // A |FidoDiscoveryFactory| that always returns |VirtualFidoDevice|s.
  19. class VirtualFidoDeviceFactory : public device::FidoDiscoveryFactory {
  20. public:
  21. VirtualFidoDeviceFactory();
  22. VirtualFidoDeviceFactory(const VirtualFidoDeviceFactory&) = delete;
  23. VirtualFidoDeviceFactory& operator=(const VirtualFidoDeviceFactory&) = delete;
  24. ~VirtualFidoDeviceFactory() override;
  25. // Sets the FidoTransportProtocol of the FidoDiscovery to be instantiated by
  26. // this VirtualFidoDeviceFactory. The default is
  27. // FidoTransportProtocol::kUsbHumanInterfaceDevice.
  28. //
  29. // The FidoTransportProtocol of the device instantiated by the FidoDiscovery
  30. // must be set separately in mutable_state().
  31. void SetTransport(FidoTransportProtocol transport);
  32. void SetSupportedProtocol(ProtocolVersion supported_protocol);
  33. // SetCtap2Config sets the configuration for |VirtualCtap2Device|s and sets
  34. // the supported protocol to CTAP2.
  35. void SetCtap2Config(const VirtualCtap2Device::Config& config);
  36. VirtualFidoDevice::State* mutable_state();
  37. scoped_refptr<VirtualFidoDeviceDiscovery::Trace> trace();
  38. protected:
  39. // device::FidoDiscoveryFactory:
  40. std::vector<std::unique_ptr<FidoDiscoveryBase>> Create(
  41. FidoTransportProtocol transport) override;
  42. bool IsTestOverride() override;
  43. private:
  44. ProtocolVersion supported_protocol_ = ProtocolVersion::kU2f;
  45. FidoTransportProtocol transport_ =
  46. FidoTransportProtocol::kUsbHumanInterfaceDevice;
  47. VirtualCtap2Device::Config ctap2_config_;
  48. scoped_refptr<VirtualFidoDevice::State> state_ = new VirtualFidoDevice::State;
  49. scoped_refptr<VirtualFidoDeviceDiscovery::Trace> trace_ =
  50. new VirtualFidoDeviceDiscovery::Trace;
  51. };
  52. } // namespace test
  53. } // namespace device
  54. #endif // DEVICE_FIDO_VIRTUAL_FIDO_DEVICE_FACTORY_H_