Vincent Palatin | c6c7e4e | 2017-06-15 15:45:05 +0200 | [diff] [blame] | 1 | // 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 Palatin | c6c7e4e | 2017-06-15 15:45:05 +0200 | [diff] [blame] | 5 | #include <base/logging.h> |
Vincent Palatin | c6c7e4e | 2017-06-15 15:45:05 +0200 | [diff] [blame] | 6 | #include <brillo/flag_helper.h> |
| 7 | #include <brillo/syslog_logging.h> |
Vincent Palatin | c6c7e4e | 2017-06-15 15:45:05 +0200 | [diff] [blame] | 8 | #include <sysexits.h> |
| 9 | |
Louis Collard | d0524c1 | 2019-09-27 09:09:18 +0800 | [diff] [blame] | 10 | #include "u2fd/u2f_daemon.h" |
Vincent Palatin | c6c7e4e | 2017-06-15 15:45:05 +0200 | [diff] [blame] | 11 | |
| 12 | #ifndef VCSID |
| 13 | #define VCSID "<unknown>" |
| 14 | #endif |
| 15 | |
Louis Collard | ee1a40f | 2019-09-27 11:15:09 +0800 | [diff] [blame] | 16 | namespace { |
| 17 | |
| 18 | constexpr uint32_t kDefaultVendorId = 0x18d1; |
| 19 | constexpr uint32_t kDefaultProductId = 0x502c; |
| 20 | |
| 21 | } // namespace |
| 22 | |
Vincent Palatin | c6c7e4e | 2017-06-15 15:45:05 +0200 | [diff] [blame] | 23 | int main(int argc, char* argv[]) { |
Vincent Palatin | c6c7e4e | 2017-06-15 15:45:05 +0200 | [diff] [blame] | 24 | DEFINE_bool(force_u2f, false, "force U2F mode even if disabled by policy"); |
Tom Hughes | 0f7203b | 2020-08-24 18:29:15 -0700 | [diff] [blame] | 25 | DEFINE_bool(force_g2f, false, |
| 26 | "force U2F mode plus extensions regardless of policy"); |
Louis Collard | d4ee40d | 2019-10-01 14:19:01 +0800 | [diff] [blame] | 27 | 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 Palatin | c6c7e4e | 2017-06-15 15:45:05 +0200 | [diff] [blame] | 31 | DEFINE_bool(verbose, false, "verbose logging"); |
Louis Collard | 10ac9e9 | 2019-02-23 18:34:45 +0800 | [diff] [blame] | 32 | DEFINE_bool(user_keys, false, "Whether to use user-specific keys"); |
Louis Collard | 243acd6 | 2019-04-25 15:42:57 +0800 | [diff] [blame] | 33 | DEFINE_bool(legacy_kh_fallback, false, |
| 34 | "Whether to allow auth with legacy keys when user-specific keys " |
| 35 | "are enabled"); |
Vincent Palatin | c6c7e4e | 2017-06-15 15:45:05 +0200 | [diff] [blame] | 36 | |
| 37 | brillo::FlagHelper::Init(argc, argv, "u2fd, U2FHID emulation daemon."); |
| 38 | |
Mike Frysinger | fac0a1f | 2017-09-25 21:02:28 -0400 | [diff] [blame] | 39 | brillo::InitLog(brillo::kLogToSyslog | brillo::kLogHeader | |
| 40 | brillo::kLogToStderrIfTty); |
Vincent Palatin | c6c7e4e | 2017-06-15 15:45:05 +0200 | [diff] [blame] | 41 | if (FLAGS_verbose) |
| 42 | logging::SetMinLogLevel(-1); |
| 43 | |
| 44 | LOG(INFO) << "Daemon version " << VCSID; |
| 45 | |
Louis Collard | 9977d55 | 2019-09-27 11:25:03 +0800 | [diff] [blame] | 46 | bool legacy_kh_fallback = FLAGS_legacy_kh_fallback || !FLAGS_user_keys; |
| 47 | |
Louis Collard | d4ee40d | 2019-10-01 14:19:01 +0800 | [diff] [blame] | 48 | u2f::U2fDaemon daemon(FLAGS_force_u2f, FLAGS_force_g2f, |
| 49 | FLAGS_g2f_allowlist_data, legacy_kh_fallback, |
Louis Collard | 9977d55 | 2019-09-27 11:25:03 +0800 | [diff] [blame] | 50 | FLAGS_vendor_id, FLAGS_product_id); |
Vincent Palatin | c6c7e4e | 2017-06-15 15:45:05 +0200 | [diff] [blame] | 51 | int rc = daemon.Run(); |
| 52 | |
| 53 | return rc == EX_UNAVAILABLE ? EX_OK : rc; |
| 54 | } |