SHA256
Обновить Telegram-бота, документацию и связанные доработки
This commit is contained in:
@@ -46,10 +46,10 @@ export function render({ navigate }) {
|
||||
advanced.className = 'card stack';
|
||||
advanced.innerHTML = `
|
||||
<summary>Расширенные</summary>
|
||||
<p class="meta-muted">Схема derivation ключей: при непустом пароле используется Argon2id (средний профиль), затем из результата строится секрет для root/bch/dev ключей.</p>
|
||||
<p class="meta-muted">Если пароль пустой — используется прежний тестовый режим совместимости (старый детерминированный вариант).</p>
|
||||
<p class="meta-muted">Для тесто оставьте пустой пароль.</p>
|
||||
<p class="meta-muted">Профиль Argon2id сейчас фиксированный: t=3, m=262144 KiB (256 MB), p=1, dkLen=32. Выбор уровня будет добавлен позже.</p>
|
||||
<p class="meta-muted">Схема derivation ключей: логин нормализуется как `trim().toLowerCase()`. При непустом пароле используется Argon2id, затем из результата строится секрет для root/bch/dev ключей.</p>
|
||||
<p class="meta-muted">Если пароль пустой — используется прежний детерминированный режим совместимости.</p>
|
||||
<p class="meta-muted">Для тестов можно оставить пустой пароль.</p>
|
||||
<p class="meta-muted">Профиль Argon2id сейчас фиксированный: t=2, m=65536 KiB (64 MiB), p=1, dkLen=32. Выбор уровня будет добавлен позже.</p>
|
||||
`;
|
||||
|
||||
const status = document.createElement('p');
|
||||
|
||||
@@ -100,15 +100,14 @@ export function render({ navigate }) {
|
||||
|
||||
card.append(warning);
|
||||
|
||||
// Секрет (root key seed)
|
||||
// Master secret
|
||||
let secretB58 = '';
|
||||
try {
|
||||
const rootSeed32 = extractSeed32FromPkcs8B64(keyBundle.rootPair.privatePkcs8B64);
|
||||
secretB58 = bytesToBase58(rootSeed32);
|
||||
secretB58 = bytesToBase58(base64ToBytes(keyBundle.masterSecretB64));
|
||||
} catch {
|
||||
secretB58 = '(не удалось извлечь)';
|
||||
}
|
||||
card.append(makeSecretField({ label: 'Секрет (root seed, base58, 32 байта)', value: secretB58 }));
|
||||
card.append(makeSecretField({ label: 'Главный секрет (master secret, base58, 32 байта)', value: secretB58 }));
|
||||
|
||||
// Root key
|
||||
const rootSep = document.createElement('p');
|
||||
|
||||
@@ -750,7 +750,12 @@ export class AuthService {
|
||||
|
||||
if (onProgress) onProgress({ percent: 98, stage: 'derive', message: 'Вычисление device key...' });
|
||||
const devicePair = await deriveEd25519FromMasterSecret(masterSecret, 'dev.key');
|
||||
const result = { rootPair, blockchainPair, devicePair };
|
||||
const result = {
|
||||
masterSecretB64: bytesToBase64(masterSecret),
|
||||
rootPair,
|
||||
blockchainPair,
|
||||
devicePair,
|
||||
};
|
||||
this.passwordKeyBundleCache.set(cacheKey, result);
|
||||
if (onProgress) onProgress({ percent: 100, stage: 'done', message: 'Ключи сгенерированы.' });
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user