50 lines
1.9 KiB
C++
50 lines
1.9 KiB
C++
|
|
// SPDX-License-Identifier: GPL-3.0-only
|
||
|
|
// SPDX-FileCopyrightText: Copyright (C) 2026 Catcrafts®
|
||
|
|
|
||
|
|
// lint-disable-file fixed-width-types
|
||
|
|
/*
|
||
|
|
fingerprintd — the daemon shell.
|
||
|
|
|
||
|
|
Nothing here talks to hardware yet. The core (Fingerprintd:Sfs and the modules
|
||
|
|
that follow it) is being ported from the fp6 harness one wire format at a time,
|
||
|
|
each landing with tests that run without a phone; this entry point exists so
|
||
|
|
the executable target builds alongside them and so the version constant that
|
||
|
|
gates a package publish has a home.
|
||
|
|
|
||
|
|
What this will own, and why it has to be one long-lived process:
|
||
|
|
|
||
|
|
* the sensor rail (gpio29), reset (gpio74) and IRQ (gpio75) — one sensor
|
||
|
|
reset buys exactly one trustlet init, so whatever powers the sensor must
|
||
|
|
also hold the session;
|
||
|
|
* the QTEE session on /dev/tee0: client env, the QSEECOM-compat loader, and
|
||
|
|
the focal64 trustlet, loaded once;
|
||
|
|
* the storage listeners QTEE calls back into — gpfile 0x7000 and RPMB
|
||
|
|
0x2000 — served from a supplicant thread that must outlive every request,
|
||
|
|
because QTEE's listener table is global and an id is taken for as long as
|
||
|
|
the registration is held;
|
||
|
|
* net.reactivated.Fprint, so pam_fprintd and the desktop need no changes.
|
||
|
|
*/
|
||
|
|
import std;
|
||
|
|
import Fingerprintd;
|
||
|
|
|
||
|
|
namespace {
|
||
|
|
// Bumping this is what publishes a package: the registry answers 409 for a
|
||
|
|
// version it already has, which a build treats as a no-op.
|
||
|
|
constexpr const char* Version = "0.0.1";
|
||
|
|
}
|
||
|
|
|
||
|
|
int main(int argc, char** argv) {
|
||
|
|
std::span<char*> args(argv, static_cast<std::size_t>(argc));
|
||
|
|
for (std::string_view a : args.subspan(1)) {
|
||
|
|
if (a == "--version") {
|
||
|
|
std::println("fingerprintd {}", Version);
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
std::println(std::cerr,
|
||
|
|
"fingerprintd {}: no runtime yet -- the core is still being "
|
||
|
|
"ported. Run `crafter-build test` for what does work.",
|
||
|
|
Version);
|
||
|
|
return 1;
|
||
|
|
}
|