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