GPT: сгенерено и не проверено (смена ключей пользователя)

This commit is contained in:
AidarKC
2026-09-27 15:50:27 +03:00
parent 13693a0a53
commit 151a2c1754
94 changed files with 5327 additions and 815 deletions
+30 -31
View File
@@ -180,6 +180,26 @@ export async function getWalletFromStoredClientKey({ login, storagePwd }) {
};
}
export async function getWalletFromStoredBlockchainKey({ login, storagePwd }) {
const cleanLogin = String(login || '').trim();
const cleanPwd = String(storagePwd || '').trim();
if (!cleanLogin || !cleanPwd) {
throw new Error('Нет активной сессии для доступа к blockchain.key');
}
const secrets = await loadEncryptedUserSecrets(cleanLogin, cleanPwd);
const blockchainPrivate = String(secrets?.blockchainKey || '').trim();
if (!blockchainPrivate) {
throw new Error('На устройстве не найден blockchain.key');
}
const keypair = await keypairFromStoredSecret(blockchainPrivate);
return {
address: keypair.publicKey.toBase58(),
keypair,
blockchainPrivatePkcs8B64: blockchainPrivate,
};
}
export async function getWalletFromStoredRootKey({ login, storagePwd }) {
const cleanLogin = String(login || '').trim();
const cleanPwd = String(storagePwd || '').trim();
@@ -199,39 +219,18 @@ export async function getWalletFromStoredRootKey({ login, storagePwd }) {
};
}
export async function getStoredSolanaWalletChoices({ login, storagePwd, includeRoot = true } = {}) {
export async function getStoredSolanaWalletChoices({ login, storagePwd } = {}) {
const cleanLogin = String(login || '').trim();
const cleanPwd = String(storagePwd || '').trim();
if (!cleanLogin || !cleanPwd) {
throw new Error('Нет активной сессии для доступа к ключам');
}
const choices = [];
const clientWallet = await getWalletFromStoredClientKey({ login: cleanLogin, storagePwd: cleanPwd });
choices.push({
id: 'client-key',
keySource: 'client',
label: 'client key',
address: clientWallet.address,
keypair: clientWallet.keypair,
});
if (includeRoot) {
try {
const rootWallet = await getWalletFromStoredRootKey({ login: cleanLogin, storagePwd: cleanPwd });
choices.push({
id: 'root-key',
keySource: 'root',
label: 'root key',
address: rootWallet.address,
keypair: rootWallet.keypair,
});
} catch {
// root key на устройстве может отсутствовать, это допустимо
}
}
return choices;
if (!cleanLogin || !cleanPwd) throw new Error('Нет активной сессии для доступа к ключам');
const wallet = await getWalletFromStoredBlockchainKey({ login: cleanLogin, storagePwd: cleanPwd });
return [{
id: 'blockchain-key',
keySource: 'blockchain',
label: 'blockchain key',
address: wallet.address,
keypair: wallet.keypair,
}];
}
export async function encodeSolanaSecretKeyBase58(secretKey) {