taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 9b2d6d766f0192923d337ab8c69a332ebdc20bf1
parent 2119daba175e85e56f767a03565dbb87e533d031
Author: Florian Dold <florian@dold.me>
Date:   Thu,  8 Sep 2022 14:02:09 +0200

include age commitment proof in refreshed coins

Diffstat:
Mpackages/taler-util/src/walletTypes.ts | 2++
Mpackages/taler-wallet-cli/src/integrationtests/test-age-restrictions-merchant.ts | 22++++++++++++++++++++++
Mpackages/taler-wallet-core/src/crypto/cryptoImplementation.ts | 1+
Mpackages/taler-wallet-core/src/operations/pending.ts | 2--
Mpackages/taler-wallet-core/src/operations/refresh.ts | 1+
5 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/packages/taler-util/src/walletTypes.ts b/packages/taler-util/src/walletTypes.ts @@ -1154,6 +1154,8 @@ export interface RefreshPlanchetInfo { * Blinding key used. */ blindingKey: string; + + ageCommitmentProof?: AgeCommitmentProof; } /** diff --git a/packages/taler-wallet-cli/src/integrationtests/test-age-restrictions-merchant.ts b/packages/taler-wallet-cli/src/integrationtests/test-age-restrictions-merchant.ts @@ -44,6 +44,28 @@ export async function runAgeRestrictionsMerchantTest(t: GlobalTestState) { const walletThree = new WalletCli(t, "walletThree"); { + const walletZero = new WalletCli(t, "walletZero"); + + await withdrawViaBank(t, { + wallet: walletZero, + bank, + exchange, + amount: "TESTKUDOS:20", + restrictAge: 13, + }); + + const order = { + summary: "Buy me!", + amount: "TESTKUDOS:5", + fulfillment_url: "taler://fulfillment-success/thx", + minimum_age: 9, + }; + + await makeTestPayment(t, { wallet: walletZero, merchant, order }); + await walletZero.runUntilDone(); + } + + { const wallet = walletOne; await withdrawViaBank(t, { diff --git a/packages/taler-wallet-core/src/crypto/cryptoImplementation.ts b/packages/taler-wallet-core/src/crypto/cryptoImplementation.ts @@ -1208,6 +1208,7 @@ export const nativeCryptoR: TalerCryptoInterfaceR = { coinPriv: encodeCrock(coinPriv), coinPub: encodeCrock(coinPub), coinEvHash: encodeCrock(coinEvHash), + ageCommitmentProof: newAc, }; planchets.push(planchet); hashCoinEvInner(coinEv, sessionHc); diff --git a/packages/taler-wallet-core/src/operations/pending.ts b/packages/taler-wallet-core/src/operations/pending.ts @@ -23,7 +23,6 @@ */ import { ProposalStatus, - ReserveRecordStatus, AbortStatus, WalletStoresV1, BackupProviderStateTag, @@ -33,7 +32,6 @@ import { import { PendingOperationsResponse, PendingTaskType, - ReserveType, } from "../pending-types.js"; import { AbsoluteTime } from "@gnu-taler/taler-util"; import { InternalWalletState } from "../internal-wallet-state.js"; diff --git a/packages/taler-wallet-core/src/operations/refresh.ts b/packages/taler-wallet-core/src/operations/refresh.ts @@ -695,6 +695,7 @@ async function refreshReveal( }, suspended: false, coinEvHash: pc.coinEvHash, + ageCommitmentProof: pc.ageCommitmentProof, }; coins.push(coin);