Обновление архитектуры ключей и кошельков

This commit is contained in:
AidarKC
2026-10-01 17:11:38 +03:00
parent f452ce1f1e
commit 8d22602761
51 changed files with 565 additions and 898 deletions
+16 -19
View File
@@ -22,30 +22,29 @@ function base64UrlToBytes(value) {
}
export function keyLabel(id) {
if (id === 'root') return 'root';
if (id === 'blockchain') return 'blockchain';
if (id === 'device') return 'device';
if (id === 'blockchain') return 'ключ блокчейна';
if (id === 'device' || id === 'client') return 'ключ доступа';
return id;
}
export function describeTransferKeys(keys = {}) {
const out = [];
if (keys.clientKey) out.push('device');
if (keys.blockchainKey) out.push('blockchain');
if (keys.rootKey) out.push('root');
if (keys.clientKey) out.push('ключ доступа');
if (keys.blockchainKey) out.push('ключ блокчейна');
return out;
}
export function makeKeyTransferText({ login, keys }) {
const clientKey = String(keys?.clientKey || '').trim();
const blockchainKey = String(keys?.blockchainKey || '').trim();
if (!clientKey || !blockchainKey) {
throw new Error('Для подключения нужны ключ доступа и ключ блокчейна');
}
const payload = {
v: 1,
type: 'shine-key-transfer',
login: String(login || '').trim(),
keys: {
clientKey: String(keys?.clientKey || ''),
blockchainKey: String(keys?.blockchainKey || ''),
rootKey: String(keys?.rootKey || ''),
},
keys: { clientKey, blockchainKey },
createdAtMs: Date.now(),
};
const json = JSON.stringify(payload);
@@ -65,17 +64,15 @@ export function parseKeyTransferText(text) {
const login = String(payload.login || '').trim();
if (!login) throw new Error('В QR-коде нет логина');
const keys = payload.keys && typeof payload.keys === 'object' ? payload.keys : {};
if (!keys.clientKey && !keys.blockchainKey && !keys.rootKey) {
throw new Error('В QR-коде нет ключей');
const clientKey = String(keys.clientKey || '').trim();
const blockchainKey = String(keys.blockchainKey || '').trim();
if (!clientKey || !blockchainKey) {
throw new Error('В QR-коде нет полного набора рабочих ключей');
}
return {
login,
keys: {
clientKey: String(keys.clientKey || ''),
blockchainKey: String(keys.blockchainKey || ''),
rootKey: String(keys.rootKey || ''),
},
keyTypes: describeTransferKeys(keys),
keys: { clientKey, blockchainKey },
keyTypes: describeTransferKeys({ clientKey, blockchainKey }),
};
}