aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/crypto
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2023-06-05 17:58:20 +0200
committerFlorian Dold <florian@dold.me>2023-06-05 17:58:25 +0200
commit9fca44893a6f7fcee5c828da5fc10e7d76592b5d (patch)
tree634830c7a769302d5e107f2aee323c3f705cf113 /packages/taler-wallet-core/src/crypto
parent6e7c88a62073082b28ef563561d08f56acc0b017 (diff)
downloadwallet-core-9fca44893a6f7fcee5c828da5fc10e7d76592b5d.tar.xz
wallet-core: handle more p2p abort cases nicely
Diffstat (limited to 'packages/taler-wallet-core/src/crypto')
-rw-r--r--packages/taler-wallet-core/src/crypto/cryptoImplementation.ts24
-rw-r--r--packages/taler-wallet-core/src/crypto/cryptoTypes.ts9
2 files changed, 32 insertions, 1 deletions
diff --git a/packages/taler-wallet-core/src/crypto/cryptoImplementation.ts b/packages/taler-wallet-core/src/crypto/cryptoImplementation.ts
index 6b44c297d..c0c8e0d01 100644
--- a/packages/taler-wallet-core/src/crypto/cryptoImplementation.ts
+++ b/packages/taler-wallet-core/src/crypto/cryptoImplementation.ts
@@ -106,6 +106,8 @@ import {
EncryptContractRequest,
EncryptContractResponse,
EncryptedContract,
+ SignDeletePurseRequest,
+ SignDeletePurseResponse,
SignPurseMergeRequest,
SignPurseMergeResponse,
SignRefundRequest,
@@ -240,6 +242,8 @@ export interface TalerCryptoInterface {
): Promise<SignReservePurseCreateResponse>;
signRefund(req: SignRefundRequest): Promise<SignRefundResponse>;
+
+ signDeletePurse(req: SignDeletePurseRequest): Promise<SignDeletePurseResponse>;
}
/**
@@ -419,6 +423,11 @@ export const nullCrypto: TalerCryptoInterface = {
signRefund: function (req: SignRefundRequest): Promise<SignRefundResponse> {
throw new Error("Function not implemented.");
},
+ signDeletePurse: function (
+ req: SignDeletePurseRequest,
+ ): Promise<SignDeletePurseResponse> {
+ throw new Error("Function not implemented.");
+ },
};
export type WithArg<X> = X extends (req: infer T) => infer R
@@ -1671,6 +1680,21 @@ export const nativeCryptoR: TalerCryptoInterfaceR = {
sig: refundSigResp.sig,
};
},
+ async signDeletePurse(
+ tci: TalerCryptoInterfaceR,
+ req: SignDeletePurseRequest,
+ ): Promise<SignDeletePurseResponse> {
+ const deleteSigBlob = buildSigPS(
+ TalerSignaturePurpose.WALLET_PURSE_DELETE,
+ ).build();
+ const sigResp = await tci.eddsaSign(tci, {
+ msg: encodeCrock(deleteSigBlob),
+ priv: req.pursePriv,
+ });
+ return {
+ sig: sigResp.sig,
+ }
+ },
};
function amountToBuffer(amount: AmountLike): Uint8Array {
diff --git a/packages/taler-wallet-core/src/crypto/cryptoTypes.ts b/packages/taler-wallet-core/src/crypto/cryptoTypes.ts
index 3b27db0c0..930db03a8 100644
--- a/packages/taler-wallet-core/src/crypto/cryptoTypes.ts
+++ b/packages/taler-wallet-core/src/crypto/cryptoTypes.ts
@@ -268,7 +268,14 @@ export interface SignRefundResponse {
sig: string;
}
-export interface SignRefundResponse {}
+
+export interface SignDeletePurseRequest {
+ pursePriv: string;
+}
+
+export interface SignDeletePurseResponse {
+ sig: EddsaSignatureString;
+}
export interface SignReservePurseCreateRequest {
mergeTimestamp: TalerProtocolTimestamp;