// Copyright 2018 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef DEVICE_FIDO_VIRTUAL_U2F_DEVICE_H_ #define DEVICE_FIDO_VIRTUAL_U2F_DEVICE_H_ #include #include #include "base/component_export.h" #include "base/containers/span.h" #include "base/macros.h" #include "base/memory/scoped_refptr.h" #include "device/fido/virtual_fido_device.h" namespace device { class COMPONENT_EXPORT(DEVICE_FIDO) VirtualU2fDevice : public VirtualFidoDevice { public: // Returns true if the |transport| is supported by virtual U2F devices, false // otherwise. static bool IsTransportSupported(FidoTransportProtocol transport); VirtualU2fDevice(); explicit VirtualU2fDevice(scoped_refptr state); ~VirtualU2fDevice() override; // FidoDevice: void Cancel(CancelToken) override; CancelToken DeviceTransact(std::vector command, DeviceCallback cb) override; base::WeakPtr GetWeakPtr() override; private: base::Optional> DoRegister( uint8_t ins, uint8_t p1, uint8_t p2, base::span data); base::Optional> DoSign(uint8_t ins, uint8_t p1, uint8_t p2, base::span data); base::WeakPtrFactory weak_factory_{this}; DISALLOW_COPY_AND_ASSIGN(VirtualU2fDevice); }; } // namespace device #endif // DEVICE_FIDO_VIRTUAL_U2F_DEVICE_H_