blob: 5a541fa638a0bb51d24388506f9ba6a10558e1dd [file] [log] [blame]
Jun Choi4fc8b7812018-04-05 07:39:071// 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
5#ifndef DEVICE_FIDO_GET_ASSERTION_REQUEST_HANDLER_H_
6#define DEVICE_FIDO_GET_ASSERTION_REQUEST_HANDLER_H_
7
8#include <memory>
9
10#include "base/callback.h"
11#include "base/macros.h"
12#include "base/memory/weak_ptr.h"
13#include "base/optional.h"
14#include "device/fido/ctap_get_assertion_request.h"
15#include "device/fido/fido_constants.h"
16#include "device/fido/fido_request_handler.h"
17
18namespace service_manager {
19class Connector;
20}; // namespace service_manager
21
22namespace device {
23
24class FidoDevice;
25class FidoTask;
26class AuthenticatorGetAssertionResponse;
27
28using SignResponseCallback = base::OnceCallback<void(
29 FidoReturnCode status_code,
30 base::Optional<AuthenticatorGetAssertionResponse> response_data)>;
31
32class COMPONENT_EXPORT(DEVICE_FIDO) GetAssertionRequestHandler
33 : public FidoRequestHandler<AuthenticatorGetAssertionResponse> {
34 public:
35 GetAssertionRequestHandler(
36 service_manager::Connector* connector,
37 const base::flat_set<U2fTransportProtocol>& protocols,
38 CtapGetAssertionRequest request_parameter,
39 SignResponseCallback completion_callback);
40 ~GetAssertionRequestHandler() override;
41
42 private:
43 // FidoRequestHandlerBase:
44 std::unique_ptr<FidoTask> CreateTaskForNewDevice(FidoDevice* device) override;
45
46 CtapGetAssertionRequest request_;
47 base::WeakPtrFactory<GetAssertionRequestHandler> weak_factory_;
48
49 DISALLOW_COPY_AND_ASSIGN(GetAssertionRequestHandler);
50};
51
52} // namespace device
53
54#endif // DEVICE_FIDO_GET_ASSERTION_REQUEST_HANDLER_H_