| // 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_FIDO_AUTHENTICATOR_H_ |
| #define DEVICE_FIDO_FIDO_AUTHENTICATOR_H_ |
| |
| #include <string> |
| |
| #include "base/callback_forward.h" |
| #include "base/component_export.h" |
| #include "base/macros.h" |
| #include "base/memory/weak_ptr.h" |
| #include "base/optional.h" |
| #include "base/strings/string16.h" |
| #include "device/fido/authenticator_get_assertion_response.h" |
| #include "device/fido/authenticator_make_credential_response.h" |
| #include "device/fido/fido_transport_protocol.h" |
| |
| namespace device { |
| |
| class AuthenticatorSupportedOptions; |
| class CtapGetAssertionRequest; |
| class CtapMakeCredentialRequest; |
| |
| // FidoAuthenticator is an authenticator from the WebAuthn Authenticator model |
| // (https://www.w3.org/TR/webauthn/#sctn-authenticator-model). It may be a |
| // physical device, or a built-in (platform) authenticator. |
| class COMPONENT_EXPORT(DEVICE_FIDO) FidoAuthenticator { |
| public: |
| using MakeCredentialCallback = base::OnceCallback<void( |
| CtapDeviceResponseCode, |
| base::Optional<AuthenticatorMakeCredentialResponse>)>; |
| using GetAssertionCallback = base::OnceCallback<void( |
| CtapDeviceResponseCode, |
| base::Optional<AuthenticatorGetAssertionResponse>)>; |
| |
| FidoAuthenticator() = default; |
| virtual ~FidoAuthenticator() = default; |
| |
| // Sends GetInfo request to connected authenticator. Once response to GetInfo |
| // call is received, |callback| is invoked. Below MakeCredential() and |
| // GetAssertion() must only called after |callback| is invoked. |
| virtual void InitializeAuthenticator(base::OnceClosure callback) = 0; |
| virtual void MakeCredential( |
| CtapMakeCredentialRequest request, |
| MakeCredentialCallback callback) = 0; |
| virtual void GetAssertion(CtapGetAssertionRequest request, |
| GetAssertionCallback callback) = 0; |
| virtual void Cancel() = 0; |
| virtual std::string GetId() const = 0; |
| virtual base::string16 GetDisplayName() const = 0; |
| virtual const AuthenticatorSupportedOptions& Options() const = 0; |
| virtual FidoTransportProtocol AuthenticatorTransport() const = 0; |
| virtual bool IsInPairingMode() const = 0; |
| virtual base::WeakPtr<FidoAuthenticator> GetWeakPtr() = 0; |
| |
| private: |
| DISALLOW_COPY_AND_ASSIGN(FidoAuthenticator); |
| }; |
| |
| } // namespace device |
| |
| #endif // DEVICE_FIDO_FIDO_AUTHENTICATOR_H_ |