blob: f736de2f136291ac81041c7fc1e6b31ec85a6433 [file] [log] [blame]
Vincent Palatinc6c7e4e2017-06-15 15:45:05 +02001// Copyright 2017 The Chromium OS 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
Vincent Palatinc6c7e4e2017-06-15 15:45:05 +02005#include <base/logging.h>
Vincent Palatinc6c7e4e2017-06-15 15:45:05 +02006#include <brillo/flag_helper.h>
7#include <brillo/syslog_logging.h>
Vincent Palatinc6c7e4e2017-06-15 15:45:05 +02008#include <sysexits.h>
9
Louis Collardd0524c12019-09-27 09:09:18 +080010#include "u2fd/u2f_daemon.h"
Vincent Palatinc6c7e4e2017-06-15 15:45:05 +020011
12#ifndef VCSID
13#define VCSID "<unknown>"
14#endif
15
Louis Collardee1a40f2019-09-27 11:15:09 +080016namespace {
17
18constexpr uint32_t kDefaultVendorId = 0x18d1;
19constexpr uint32_t kDefaultProductId = 0x502c;
20
21} // namespace
22
Vincent Palatinc6c7e4e2017-06-15 15:45:05 +020023int main(int argc, char* argv[]) {
Vincent Palatinc6c7e4e2017-06-15 15:45:05 +020024 DEFINE_bool(force_u2f, false, "force U2F mode even if disabled by policy");
Tom Hughes0f7203b2020-08-24 18:29:15 -070025 DEFINE_bool(force_g2f, false,
26 "force U2F mode plus extensions regardless of policy");
Louis Collardd4ee40d2019-10-01 14:19:01 +080027 DEFINE_bool(g2f_allowlist_data, false,
28 "append allowlisting data to G2F register responses");
29 DEFINE_int32(product_id, kDefaultProductId, "Product ID for the HID device");
30 DEFINE_int32(vendor_id, kDefaultVendorId, "Vendor ID for the HID device");
Vincent Palatinc6c7e4e2017-06-15 15:45:05 +020031 DEFINE_bool(verbose, false, "verbose logging");
Louis Collard10ac9e92019-02-23 18:34:45 +080032 DEFINE_bool(user_keys, false, "Whether to use user-specific keys");
Louis Collard243acd62019-04-25 15:42:57 +080033 DEFINE_bool(legacy_kh_fallback, false,
34 "Whether to allow auth with legacy keys when user-specific keys "
35 "are enabled");
Vincent Palatinc6c7e4e2017-06-15 15:45:05 +020036
37 brillo::FlagHelper::Init(argc, argv, "u2fd, U2FHID emulation daemon.");
38
Mike Frysingerfac0a1f2017-09-25 21:02:28 -040039 brillo::InitLog(brillo::kLogToSyslog | brillo::kLogHeader |
40 brillo::kLogToStderrIfTty);
Vincent Palatinc6c7e4e2017-06-15 15:45:05 +020041 if (FLAGS_verbose)
42 logging::SetMinLogLevel(-1);
43
44 LOG(INFO) << "Daemon version " << VCSID;
45
Louis Collard9977d552019-09-27 11:25:03 +080046 bool legacy_kh_fallback = FLAGS_legacy_kh_fallback || !FLAGS_user_keys;
47
Louis Collardd4ee40d2019-10-01 14:19:01 +080048 u2f::U2fDaemon daemon(FLAGS_force_u2f, FLAGS_force_g2f,
49 FLAGS_g2f_allowlist_data, legacy_kh_fallback,
Louis Collard9977d552019-09-27 11:25:03 +080050 FLAGS_vendor_id, FLAGS_product_id);
Vincent Palatinc6c7e4e2017-06-15 15:45:05 +020051 int rc = daemon.Run();
52
53 return rc == EX_UNAVAILABLE ? EX_OK : rc;
54}