Nostr WoT

Passkeys y recuperación

@nostr-wot/identity/vault ofrece registros de bóveda portátiles, datos de recuperación cifrados y coordinación con proveedores y relays para aplicaciones web y nativas.

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

Tu app crea la cuenta y realiza la ceremonia nativa de passkey. Proporciona el identificador verificado, RP y entrada y salida PRF a las funciones; el SDK no abre el aviso del navegador ni autoriza dominios. No guardes ni registres la salida 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 };
}

El ejemplo cifra los datos de una cuenta existente y abre un archivo de recuperación. Valida las cuentas y la clave pública esperada, aplica la política de sustitución de bóveda y guarda el registro de forma atómica. Debes volver a cifrar una clave de caché recién generada antes de usarla. La clase Vault para contraseñas no abre registros passkey v2.

Adaptadores de proveedor y relays

saveRecovery y restoreRecovery reciben RecoveryProvider, RecoveryTransport y un verificador de firmas. Guardar también requiere la función de firma del autor. Reutiliza las conexiones, verifica la sesión al escribir y exige consentimiento para publicar en relays. Configura los mismos relays iniciales al registrar y restaurar; el SDK no incluye una lista oculta.

API del paquete y ejemplos