mirror of
https://github.com/binaricat/Netcatty.git
synced 2026-11-11 00:30:57 +00:00
* feat(ssh): restore FIDO2 security key support (#2308) Consolidate the restored feature and its review fixes before rebasing onto current main. Original PR head: 5d0a0c6c9a550364d3ec5c2331395cedfc9ea7ae. * fix(ssh): verify and repair FIDO authentication with simulated hardware Preserve complete OpenSSH SK signature payloads, classify combined PIN/presence prompts correctly, expand IdentityFile tokens, retain certificate selectors, and route shared-agent signing prompts to their originating window. Dismiss prompts when notification helpers exit. Add a software SK provider and opt-in real OpenSSH integration coverage for both algorithms, certificates, SFTP, forwarding, and concurrent windows. * refactor(ui): refine security key forms and authentication motion Use shared Select and Switch controls, concise localized copy and compact token-based dialogs. Add scoped enter/exit, field transition and presence animations with reduced-motion support. Preserve raw prompt details and visible PIN errors. * fix(ssh): align security key prompts with hardware presence and verify Docker logins * fix(ui): keep security key dialog above its remounted overlay * fix: address Codex review on PR #2823 * feat(ssh): guide security key recovery and explicit authentication fallback * test(ssh): exercise security key authentication on native Windows * test(ssh): verify Windows fixture signatures and explicit fallback * test(ssh): configure Windows OpenSSH toolchain and document coverage --------- Co-authored-by: netcatty-bot <308658023+netcatty-bot@users.noreply.github.com>
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { readFileSync } from "node:fs";
|
|
import { join } from "node:path";
|
|
|
|
test("FidoPromptModal ships PIN and touch UI wiring", () => {
|
|
const source = readFileSync(join(import.meta.dirname, "FidoPromptModal.tsx"), "utf8");
|
|
assert.match(source, /kind === "touch"/);
|
|
assert.match(source, /fido-pin-input/);
|
|
assert.match(source, /fido\.prompt\.pinTitle/);
|
|
assert.match(source, /fido\.prompt\.touchTitle/);
|
|
assert.match(source, /onSubmit\(request\.requestId/);
|
|
assert.match(source, /onCancel\(request\.requestId/);
|
|
});
|
|
|
|
test("AppView mounts FidoPromptModal", () => {
|
|
const source = readFileSync(
|
|
join(import.meta.dirname, "../application/app/AppView.tsx"),
|
|
"utf8",
|
|
);
|
|
assert.match(source, /FidoPromptModal/);
|
|
assert.match(source, /fidoPromptQueue/);
|
|
assert.match(source, /handleFidoPromptSubmit/);
|
|
});
|
|
|
|
test("GenerateStandardPanel exposes FIDO options", () => {
|
|
const source = readFileSync(
|
|
join(import.meta.dirname, "keychain/GenerateStandardPanel.tsx"),
|
|
"utf8",
|
|
);
|
|
assert.match(source, /ED25519-SK/);
|
|
assert.match(source, /ECDSA-SK/);
|
|
assert.match(source, /resident/);
|
|
assert.match(source, /verifyRequired/);
|
|
assert.match(source, /fidoHint/);
|
|
});
|