Nostr WoT

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.

terminal
$npm install @nostr-wot/identity@1.0.0 nostr-tools

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.

typescript
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.

API do pacote e exemplos