aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/operations/refresh.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2021-11-17 10:23:22 +0100
committerFlorian Dold <florian@dold.me>2021-11-17 10:23:30 +0100
commit9f0429cb2f8ad9cb2e98a787139602d913c1aefa (patch)
treecda55e2d07a291dd2ff6f243bb423121ecf220b3 /packages/taler-wallet-core/src/operations/refresh.ts
parenta994009d2f094c4d9c12da68dac3abb28bdef4b3 (diff)
downloadwallet-core-9f0429cb2f8ad9cb2e98a787139602d913c1aefa.tar.xz
wallet: implement exchange protocol v9
Diffstat (limited to 'packages/taler-wallet-core/src/operations/refresh.ts')
-rw-r--r--packages/taler-wallet-core/src/operations/refresh.ts25
1 files changed, 20 insertions, 5 deletions
diff --git a/packages/taler-wallet-core/src/operations/refresh.ts b/packages/taler-wallet-core/src/operations/refresh.ts
index d727bd06f..956e4d65a 100644
--- a/packages/taler-wallet-core/src/operations/refresh.ts
+++ b/packages/taler-wallet-core/src/operations/refresh.ts
@@ -14,7 +14,12 @@
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import { encodeCrock, getRandomBytes, HttpStatusCode } from "@gnu-taler/taler-util";
+import {
+ DenomKeyType,
+ encodeCrock,
+ getRandomBytes,
+ HttpStatusCode,
+} from "@gnu-taler/taler-util";
import {
CoinRecord,
CoinSourceType,
@@ -599,10 +604,17 @@ async function refreshReveal(
continue;
}
const pc = derived.planchetsForGammas[norevealIndex][newCoinIndex];
- const denomSig = await ws.cryptoApi.rsaUnblind(
- reveal.ev_sigs[newCoinIndex].ev_sig,
+ if (denom.denomPub.cipher !== 1) {
+ throw Error("cipher unsupported");
+ }
+ const evSig = reveal.ev_sigs[newCoinIndex].ev_sig;
+ if (evSig.cipher !== DenomKeyType.Rsa) {
+ throw Error("unsupported cipher");
+ }
+ const denomSigRsa = await ws.cryptoApi.rsaUnblind(
+ evSig.blinded_rsa_signature,
pc.blindingKey,
- denom.denomPub,
+ denom.denomPub.rsa_public_key,
);
const coin: CoinRecord = {
blindingKey: pc.blindingKey,
@@ -611,7 +623,10 @@ async function refreshReveal(
currentAmount: denom.value,
denomPub: denom.denomPub,
denomPubHash: denom.denomPubHash,
- denomSig,
+ denomSig: {
+ cipher: DenomKeyType.Rsa,
+ rsa_signature: denomSigRsa,
+ },
exchangeBaseUrl: oldCoin.exchangeBaseUrl,
status: CoinStatus.Fresh,
coinSource: {