Passkeys e recuperação
@nostr-wot/identity/vault fornece cofres portáteis, dados criptografados de recuperação e coordenação com provedores e relays para aplicativos web e nativos.
Seu aplicativo cria a conta e realiza a cerimônia nativa. Forneça o identificador verificado, RP e entrada e saída PRF; o SDK não abre o aviso do navegador nem autoriza domínios. Nunca armazene ou registre a saída 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 };
}O exemplo criptografa dados de uma conta existente e abre um arquivo de recuperação. Valide as contas e a chave pública esperada, aplique a política de substituição e salve atomicamente. Uma chave de cache recém-criada deve ser criptografada e salva antes do uso. A classe Vault baseada em senha não abre registros passkey v2.
Adaptadores de provedor e relays
saveRecovery e restoreRecovery recebem RecoveryProvider, RecoveryTransport e um verificador de assinaturas. Salvar também exige a função de assinatura do autor. Reutilize conexões, verifique a sessão nas gravações e exija consentimento para publicar. Configure os mesmos relays iniciais no cadastro e na restauração; não há lista oculta no SDK.