Passkey e recupero
@nostr-wot/identity/vault offre vault portabili, dati di recupero cifrati e coordinamento tra gestori e relay per app web e native.
L’app crea l’account ed esegue la cerimonia nativa. Fornisci identificatore verificato, RP e valori PRF alle funzioni; l’SDK non apre finestre del browser né autorizza domini. Non salvare o registrare la risposta PRF.
import {
createPasskeyRecord, openPasskeyRecord, parsePasskeyBackup,
serializePasskeyBackup, sealPasskeyPayload, withPasskeyVaultKey,
type VaultPayload, type PasskeyInput, type PasskeyProof,
} from "@nostr-wot/identity/vault";
export function protectAccount(payload: VaultPayload, enrollment: PasskeyInput) {
const record = createPasskeyRecord(payload, enrollment);
return { record, recoveryFile: serializePasskeyBackup(record) };
}
export async function readRecoveryFile(file: string, proof: PasskeyProof) {
let record = parsePasskeyBackup(file);
const opened = await openPasskeyRecord(record, proof);
if (opened.cacheKeyMinted) {
record = await withPasskeyVaultKey(record, proof, key =>
sealPasskeyPayload(opened.payload, key, record),
);
}
return { record, payload: opened.payload };
}L’esempio cifra un account esistente e apre un file di recupero. Valida account e chiave pubblica attesa, applica la politica di sostituzione e salva atomicamente. Una nuova chiave cache deve essere ricifrata e salvata prima dell’uso. La classe Vault basata su password non apre record passkey v2.
Adattatori per gestori e relay
saveRecovery e restoreRecovery ricevono RecoveryProvider, RecoveryTransport e un verificatore di firme. Il salvataggio richiede anche la firma dell’autore. Riutilizza le connessioni, verifica la sessione durante le scritture e richiedi consenso per la pubblicazione. Configura gli stessi relay iniziali per registrazione e ripristino; l’SDK non fornisce liste nascoste.