SHA256
Обновление архитектуры ключей и кошельков
This commit is contained in:
@@ -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 }),
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user