Ключи доступа и восстановление
@nostr-wot/identity/vault предоставляет переносимые хранилища, зашифрованные данные восстановления и работу с провайдерами и реле для веб- и нативных приложений.
Приложение создаёт аккаунт и выполняет нативную церемонию. Передайте проверенный идентификатор, RP и значения PRF функциям SDK; он не открывает окно браузера и не разрешает доступ к доменам. Никогда не сохраняйте и не журналируйте результат 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 };
}Пример шифрует существующий аккаунт и открывает файл восстановления. Проверьте аккаунты и ожидаемый публичный ключ, соблюдайте правила замены хранилища и сохраняйте атомарно. Новый ключ кеша нужно повторно зашифровать и сохранить до использования. Класс Vault для паролей не открывает записи passkey v2.
Адаптеры провайдера и реле
saveRecovery и restoreRecovery получают RecoveryProvider, RecoveryTransport и проверку подписей. Для сохранения нужна функция подписи автора. Используйте существующие соединения, проверяйте сессию при записи и запрашивайте согласие на публикацию. Настройте одинаковые начальные реле для регистрации и восстановления; скрытого списка в SDK нет.