@ledgerhq/coin-hedera
Version:
Ledger Hedera Coin integration
48 lines • 1.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildSignOperation = void 0;
const rxjs_1 = require("rxjs");
const sdk_1 = require("@hashgraph/sdk");
const buildOptimisticOperation_1 = require("./buildOptimisticOperation");
const network_1 = require("../api/network");
const buildSignOperation = (signerContext) => ({ account, transaction, deviceId }) => new rxjs_1.Observable(o => {
void (async function () {
try {
o.next({
type: "device-signature-requested",
});
const hederaTransaction = await (0, network_1.buildUnsignedTransaction)({
account,
transaction,
});
const accountPublicKey = sdk_1.PublicKey.fromString(account.seedIdentifier);
const res = await signerContext(deviceId, async (signer) => {
await hederaTransaction.signWith(accountPublicKey, async (bodyBytes) => {
return await signer.signTransaction(bodyBytes);
});
return hederaTransaction.toBytes();
});
o.next({
type: "device-signature-granted",
});
const operation = await (0, buildOptimisticOperation_1.buildOptimisticOperation)({
account,
transaction,
});
o.next({
type: "signed",
signedOperation: {
operation,
// NOTE: this needs to match the inverse operation in js-broadcast
signature: Buffer.from(res).toString("base64"),
},
});
o.complete();
}
catch (err) {
o.error(err);
}
})();
});
exports.buildSignOperation = buildSignOperation;
//# sourceMappingURL=signOperation.js.map