From 82b5754e157a1a3b22afe48c8366c76525eb91e3 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Thu, 27 Apr 2017 03:09:29 +0200 Subject: download, store and check signatures for wire fees --- src/cryptoWorker.ts | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/cryptoWorker.ts') 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 { -- cgit v1.2.3