blob: f736de2f136291ac81041c7fc1e6b31ec85a6433 [file] [log] [blame]
// 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;
}