diff options
Diffstat (limited to 'extension/background')
-rw-r--r-- | extension/background/db.ts | 3 | ||||
-rw-r--r-- | extension/background/wallet.js | 14 | ||||
-rw-r--r-- | extension/background/wallet.ts | 23 |
3 files changed, 30 insertions, 10 deletions
diff --git a/extension/background/db.ts b/extension/background/db.ts index 12d944a83..40c1cdaca 100644 --- a/extension/background/db.ts +++ b/extension/background/db.ts @@ -19,7 +19,7 @@ namespace Db { } export interface Keys { - denoms: { [key: string]: Denomination }; + denoms: Denomination[]; } export interface Denomination { @@ -47,6 +47,7 @@ namespace Db { denomPub: string; denomSig: string; currentAmount: AmountJson; + mintBaseUrl: string; } diff --git a/extension/background/wallet.js b/extension/background/wallet.js index f915187ab..422e60ca5 100644 --- a/extension/background/wallet.js +++ b/extension/background/wallet.js @@ -61,7 +61,7 @@ function signDeposit(db, offer, cds) { * @param db * @param paymentAmount * @param depositFeeLimit - * @param mintKeys + * @param allowedMints */ function getPossibleMintCoins(db, paymentAmount, depositFeeLimit, allowedMints) { return new Promise((resolve, reject) => { @@ -83,10 +83,14 @@ function getPossibleMintCoins(db, paymentAmount, depositFeeLimit, allowedMints) if (!cursor) { return; } + let value = cursor.value; let cd = { coin: cursor.value, - denom: mint.keys.denoms[cursor.value.denomPub] + denom: mint.keys.denoms.find((e) => e.denom_pub === value.denomPub) }; + if (!cd.denom) { + throw Error("denom not found"); + } let x = m[mint.baseUrl]; if (!x) { m[mint.baseUrl] = [cd]; @@ -94,6 +98,7 @@ function getPossibleMintCoins(db, paymentAmount, depositFeeLimit, allowedMints) else { x.push(cd); } + cursor.continue(); }; }; } @@ -278,7 +283,7 @@ function withdrawPrepare(db, denom, reserve) { coinPub: coinPub.toCrock(), coinPriv: coinPriv.toCrock(), denomPub: denomPub.encode().toCrock(), - mintBaseUrl: reserve.mintBaseUrl, + mintBaseUrl: reserve.mint_base_url, withdrawSig: sig.toCrock(), coinEv: ev.toCrock(), coinValue: denom.value @@ -330,7 +335,8 @@ function withdrawExecute(db, pc) { coinPriv: pc.coinPriv, denomPub: pc.denomPub, denomSig: denomSig.encode().toCrock(), - currentAmount: pc.coinValue + currentAmount: pc.coinValue, + mintBaseUrl: pc.mintBaseUrl, }; console.log("unblinded coin"); resolve(coin); diff --git a/extension/background/wallet.ts b/extension/background/wallet.ts index 281a24c6e..a2ac45dfa 100644 --- a/extension/background/wallet.ts +++ b/extension/background/wallet.ts @@ -131,7 +131,7 @@ interface MintInfo { * @param db * @param paymentAmount * @param depositFeeLimit - * @param mintKeys + * @param allowedMints */ function getPossibleMintCoins(db: IDBDatabase, paymentAmount: AmountJson, @@ -156,16 +156,21 @@ function getPossibleMintCoins(db: IDBDatabase, if (!cursor) { return; } + let value: Db.Coin = cursor.value; let cd = { coin: cursor.value, - denom: mint.keys.denoms[cursor.value.denomPub] + denom: mint.keys.denoms.find((e) => e.denom_pub === value.denomPub) }; + if (!cd.denom) { + throw Error("denom not found"); + } let x = m[mint.baseUrl]; if (!x) { m[mint.baseUrl] = [cd]; } else { x.push(cd); } + cursor.continue(); } } } @@ -340,9 +345,16 @@ function rankDenom(denom1: any, denom2: any) { } +interface Reserve { + mint_base_url: string + reserve_priv: string; + reserve_pub: string; +} + + function withdrawPrepare(db: IDBDatabase, denom: Db.Denomination, - reserve): Promise<Db.PreCoin> { + reserve: Reserve): Promise<Db.PreCoin> { let reservePriv = new EddsaPrivateKey(); reservePriv.loadCrock(reserve.reserve_priv); let reservePub = new EddsaPublicKey(); @@ -383,7 +395,7 @@ function withdrawPrepare(db: IDBDatabase, coinPub: coinPub.toCrock(), coinPriv: coinPriv.toCrock(), denomPub: denomPub.encode().toCrock(), - mintBaseUrl: reserve.mintBaseUrl, + mintBaseUrl: reserve.mint_base_url, withdrawSig: sig.toCrock(), coinEv: ev.toCrock(), coinValue: denom.value @@ -444,7 +456,8 @@ function withdrawExecute(db, pc: Db.PreCoin): Promise<Db.Coin> { coinPriv: pc.coinPriv, denomPub: pc.denomPub, denomSig: denomSig.encode().toCrock(), - currentAmount: pc.coinValue + currentAmount: pc.coinValue, + mintBaseUrl: pc.mintBaseUrl, }; console.log("unblinded coin"); resolve(coin); |