aboutsummaryrefslogtreecommitdiff
path: root/src/cryptoWorker.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/cryptoWorker.ts')
-rw-r--r--src/cryptoWorker.ts21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/cryptoWorker.ts b/src/cryptoWorker.ts
index cb7bee40b..4275d659b 100644
--- a/src/cryptoWorker.ts
+++ b/src/cryptoWorker.ts
@@ -30,7 +30,7 @@ import create = chrome.alarms.create;
import {OfferRecord} from "./wallet";
import {CoinWithDenom} from "./wallet";
import {CoinPaySig, CoinRecord} from "./types";
-import {DenominationRecord, Amounts} from "./types";
+import {DenominationRecord, Amounts, WireFee} from "./types";
import {Amount} from "./emscriptif";
import {HashContext} from "./emscriptif";
import {RefreshMeltCoinAffirmationPS} from "./emscriptif";
@@ -110,6 +110,25 @@ namespace RpcFunctions {
nativePub);
}
+ export function isValidWireFee(type: string, wf: WireFee, masterPub: string): boolean {
+ let p = new native.MasterWireFeePS({
+ h_wire_method: native.ByteArray.fromStringWithNull(type).hash(),
+ start_date: native.AbsoluteTimeNbo.fromStamp(wf.startStamp),
+ end_date: native.AbsoluteTimeNbo.fromStamp(wf.endStamp),
+ wire_fee: (new native.Amount(wf.wireFee)).toNbo(),
+ closing_fee: (new native.Amount(wf.closingFee)).toNbo(),
+ });
+
+ let nativeSig = new native.EddsaSignature();
+ nativeSig.loadCrock(wf.sig);
+ let nativePub = native.EddsaPublicKey.fromCrock(masterPub);
+
+ return native.eddsaVerify(native.SignaturePurpose.MASTER_WIRE_FEES,
+ p.toPurpose(),
+ nativeSig,
+ nativePub);
+ }
+
export function isValidDenom(denom: DenominationRecord,
masterPub: string): boolean {