Nostr WoT

Ключи доступа и восстановление

@nostr-wot/identity/vault предоставляет переносимые хранилища, зашифрованные данные восстановления и работу с провайдерами и реле для веб- и нативных приложений.

терминал
$npm install @nostr-wot/identity@1.0.0 nostr-tools

Приложение создаёт аккаунт и выполняет нативную церемонию. Передайте проверенный идентификатор, RP и значения PRF функциям SDK; он не открывает окно браузера и не разрешает доступ к доменам. Никогда не сохраняйте и не журналируйте результат 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 };
}

Пример шифрует существующий аккаунт и открывает файл восстановления. Проверьте аккаунты и ожидаемый публичный ключ, соблюдайте правила замены хранилища и сохраняйте атомарно. Новый ключ кеша нужно повторно зашифровать и сохранить до использования. Класс Vault для паролей не открывает записи passkey v2.

Адаптеры провайдера и реле

saveRecovery и restoreRecovery получают RecoveryProvider, RecoveryTransport и проверку подписей. Для сохранения нужна функция подписи автора. Используйте существующие соединения, проверяйте сессию при записи и запрашивайте согласие на публикацию. Настройте одинаковые начальные реле для регистрации и восстановления; скрытого списка в SDK нет.

API пакета и примеры