Я создаю приложение Node.js, использующее версию Hyperledger Fabric SDK 2.2, которая взаимодействует с сетью блокчейнов.
Чего я хочу добиться, так это получить закрытый ключ пользователя, делающего запрос из приложения Node.js, после получения идентификатора кошелька.
// Create a new file system based wallet for managing identities.
const walletPath = path.join(process.cwd(), 'wallet');
const wallet = await Wallets.newFileSystemWallet(walletPath);
logger.info(`API/` + requestType + `: Wallet path: ${walletPath}`);
// Check to see if we've already enrolled the user.
const userExists = await wallet.get(in_username);
if (!userExists) {
logger.info('API/` + requestType + `: An identity for the user: '+in_username+' does not exist in the wallet');
//return 'An identity for the user: "'+in_username+'" does not exist in the wallet';
throw new Error('An identity for the user: "'+in_username+'" does not exist in the wallet');
}
if (userExists && userExists.type === 'X.509') {
console.info("userPrivateKey 1 : " + userExists.type);
const privateKey = (userExists as X509Identity).credentials.privateKey;
console.info("userPrivateKey 1 : " + privateKey);
}
Итак, я видел из документации приведенный выше пример получения закрытого ключа. Я успешно извлекаю личность и получаю тип сертификата, который действительно является X509.
Но после этого я не могу преобразовать или преобразовать удостоверение в X509 Identity, чтобы получить закрытый ключ.
Сначала я не могу продолжить, так как эта ошибка появляется в строке:
const privateKey = (userExists as X509Identity).credentials.privateKey;
Ошибка:
Type assertion expressions can only be used in TypeScript files.
Я не эксперт в Node.js, и меня проинформировали, что это может быть невозможно «привести». Но я в замешательстве, так как я видел это в документации SDK Hyperledger Fabric Node.
Кто-нибудь знает какое-либо решение по этому поводу или даже намек на то, как продолжить?
Спасибо
Я собирался слишком сложно!
Поскольку интерфейс X509 расширен из интерфейса Identity, работает следующий код:
const privateKey = userExists.credentials.privateKey;
Легче, чем кажется, а также сложно. Спасибо за ваше время!
Код с приведением типов в вашем вопросе был TypeScript, который расширяет JavaScript с помощью типов и некоторого синтаксического сахара. Используя простой JavaScript, просто игнорируйте типы.