| // Copyright 2017 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <base/logging.h> |
| #include <brillo/flag_helper.h> |
| #include <brillo/syslog_logging.h> |
| #include <sysexits.h> |
| |
| #include "u2fd/u2f_daemon.h" |
| |
| #ifndef VCSID |
| #define VCSID "<unknown>" |
| #endif |
| |
| namespace { |
| |
| constexpr uint32_t kDefaultVendorId = 0x18d1; |
| constexpr uint32_t kDefaultProductId = 0x502c; |
| |
| } // namespace |
| |
| int main(int argc, char* argv[]) { |
| DEFINE_bool(force_u2f, false, "force U2F mode even if disabled by policy"); |
| DEFINE_bool(force_g2f, false, |
| "force U2F mode plus extensions regardless of policy"); |
| DEFINE_bool(g2f_allowlist_data, false, |
| "append allowlisting data to G2F register responses"); |
| DEFINE_int32(product_id, kDefaultProductId, "Product ID for the HID device"); |
| DEFINE_int32(vendor_id, kDefaultVendorId, "Vendor ID for the HID device"); |
| DEFINE_bool(verbose, false, "verbose logging"); |
| DEFINE_bool(user_keys, false, "Whether to use user-specific keys"); |
| DEFINE_bool(legacy_kh_fallback, false, |
| "Whether to allow auth with legacy keys when user-specific keys " |
| "are enabled"); |
| |
| brillo::FlagHelper::Init(argc, argv, "u2fd, U2FHID emulation daemon."); |
| |
| brillo::InitLog(brillo::kLogToSyslog | brillo::kLogHeader | |
| brillo::kLogToStderrIfTty); |
| if (FLAGS_verbose) |
| logging::SetMinLogLevel(-1); |
| |
| LOG(INFO) << "Daemon version " << VCSID; |
| |
| bool legacy_kh_fallback = FLAGS_legacy_kh_fallback || !FLAGS_user_keys; |
| |
| u2f::U2fDaemon daemon(FLAGS_force_u2f, FLAGS_force_g2f, |
| FLAGS_g2f_allowlist_data, legacy_kh_fallback, |
| FLAGS_vendor_id, FLAGS_product_id); |
| int rc = daemon.Run(); |
| |
| return rc == EX_UNAVAILABLE ? EX_OK : rc; |
| } |