Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(470)

Side by Side Diff: device/u2f/u2f_register.cc

Issue 2821263005: Add U2F request state machines (Closed)
Patch Set: Add U2fRequest, U2fSign, and U2fRegister classes Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 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 #include "u2f_register.h"
6
7 #include "base/memory/ptr_util.h"
8
9 namespace device {
10
11 U2fRegister::U2fRegister(std::vector<uint8_t> challenge_hash,
12 std::vector<uint8_t> app_param,
13 const ResponseCallback& cb)
14 : U2fRequest(cb),
15 challenge_hash_(challenge_hash),
16 app_param_(app_param),
17 weak_factory_(this) {}
18
19 U2fRegister::~U2fRegister() {}
20
21 // static
22 std::unique_ptr<U2fRequest> U2fRegister::TryRegistration(
23 std::vector<uint8_t> challenge_hash,
24 std::vector<uint8_t> app_param,
25 const ResponseCallback& cb) {
26 std::unique_ptr<U2fRequest> request =
27 base::MakeUnique<U2fRegister>(challenge_hash, app_param, cb);
28 if (request)
29 request->Start();
30 return request;
31 }
32
33 void U2fRegister::TryDevice() {
34 if (!current_device_)
35 return;
36
37 current_device_->Register(
38 app_param_, challenge_hash_,
39 base::Bind(&U2fRegister::OnTryDevice, weak_factory_.GetWeakPtr()));
40 }
41
42 void U2fRegister::OnTryDevice(U2fDevice::ReturnCode return_code,
43 std::vector<uint8_t> response_data) {
44 switch (return_code) {
45 case U2fDevice::ReturnCode::SUCCESS:
46 state_ = State::COMPLETE;
47 cb_.Run(static_cast<uint8_t>(return_code), response_data);
48 break;
49 case U2fDevice::ReturnCode::CONDITIONS_NOT_SATISFIED:
50 // Waiting for user touch, move on and try this device later
51 state_ = State::IDLE;
52 Transition();
53 break;
54 default:
55 state_ = State::IDLE;
56 // An error has occured, quit trying this device
57 current_device_ = nullptr;
58 Transition();
59 break;
60 }
61 }
62
63 } // namespace device
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698