diff options
author | Florian Dold <florian@dold.me> | 2022-09-05 12:55:46 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2022-09-05 12:55:46 +0200 |
commit | 300242637f20401fa9074e36eea5fa8788cc7202 (patch) | |
tree | 58c962aeee17f2dc1e8de53fb6c5403a1960f789 /packages/taler-wallet-core/src/crypto/cryptoImplementation.ts | |
parent | b1f77f4662e8198d0e02e74d43fd6d1f82ce2fb0 (diff) | |
download | wallet-core-300242637f20401fa9074e36eea5fa8788cc7202.tar.xz |
wallet-core: include age restriction in p2p signature, mark coins as spent
Diffstat (limited to 'packages/taler-wallet-core/src/crypto/cryptoImplementation.ts')
-rw-r--r-- | packages/taler-wallet-core/src/crypto/cryptoImplementation.ts | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/packages/taler-wallet-core/src/crypto/cryptoImplementation.ts b/packages/taler-wallet-core/src/crypto/cryptoImplementation.ts index 193712e52..6336539fa 100644 --- a/packages/taler-wallet-core/src/crypto/cryptoImplementation.ts +++ b/packages/taler-wallet-core/src/crypto/cryptoImplementation.ts @@ -442,6 +442,7 @@ export interface SignPurseDepositsRequest { contribution: AmountString; denomPubHash: string; denomSig: UnblindedSignature; + ageCommitmentProof: AgeCommitmentProof | undefined; }[]; } @@ -1361,11 +1362,18 @@ export const nativeCryptoR: TalerCryptoInterfaceR = { const hExchangeBaseUrl = hash(stringToBytes(req.exchangeBaseUrl + "\0")); const deposits: PurseDeposit[] = []; for (const c of req.coins) { + let maybeAch: Uint8Array; + if (c.ageCommitmentProof) { + maybeAch = decodeCrock( + AgeRestriction.hashCommitment(c.ageCommitmentProof.commitment), + ); + } else { + maybeAch = new Uint8Array(32); + } const sigBlob = buildSigPS(TalerSignaturePurpose.WALLET_PURSE_DEPOSIT) .put(amountToBuffer(Amounts.parseOrThrow(c.contribution))) .put(decodeCrock(c.denomPubHash)) - // FIXME: use h_age_commitment here - .put(new Uint8Array(32)) + .put(maybeAch) .put(decodeCrock(req.pursePub)) .put(hExchangeBaseUrl) .build(); |