From ca2a46a8575d66d529accb1ce3aaf97be8f37e2f Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Tue, 12 Dec 2017 21:54:14 +0100 Subject: precompute speculative signature for payment --- src/crypto/cryptoApi.ts | 4 ++-- src/crypto/cryptoWorker.ts | 11 +++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) (limited to 'src/crypto') diff --git a/src/crypto/cryptoApi.ts b/src/crypto/cryptoApi.ts index 94083d622..d0ba6ada8 100644 --- a/src/crypto/cryptoApi.ts +++ b/src/crypto/cryptoApi.ts @@ -275,8 +275,8 @@ export class CryptoApi { return this.doRpc("isValidWireFee", 2, type, wf, masterPub); } - isValidPaymentSignature(sig: string, contractHash: string, merchantPub: string) { - return this.doRpc("isValidPaymentSignature", 1, sig, contractHash, merchantPub); + isValidPaymentSignature(sig: string, contractHash: string, merchantPub: string): Promise { + return this.doRpc("isValidPaymentSignature", 1, sig, contractHash, merchantPub); } signDeposit(contractTerms: ContractTerms, diff --git a/src/crypto/cryptoWorker.ts b/src/crypto/cryptoWorker.ts index 92947d039..28634b234 100644 --- a/src/crypto/cryptoWorker.ts +++ b/src/crypto/cryptoWorker.ts @@ -261,7 +261,11 @@ namespace RpcFunctions { */ export function signDeposit(contractTerms: ContractTerms, cds: CoinWithDenom[]): PayCoinInfo { - const ret: PayCoinInfo = []; + const ret: PayCoinInfo = { + originalCoins: [], + updatedCoins: [], + sigs: [], + }; const contractTermsHash = hashString(canonicalJson(contractTerms)); @@ -275,6 +279,7 @@ namespace RpcFunctions { const amountRemaining = new native.Amount(total); for (const cd of cds) { let coinSpend: Amount; + const originalCoin = { ...(cd.coin) }; if (amountRemaining.value === 0 && amountRemaining.fraction === 0) { break; @@ -324,7 +329,9 @@ namespace RpcFunctions { f: coinSpend.toJson(), ub_sig: cd.coin.denomSig, }; - ret.push({sig: s, updatedCoin: cd.coin}); + ret.sigs.push(s); + ret.updatedCoins.push(cd.coin); + ret.originalCoins.push(originalCoin); } return ret; } -- cgit v1.2.3