From a17a08ae287a46e837c9a691caebdd029a07dc62 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 29 Mar 2023 18:49:06 +0200 Subject: implement IBAN validation --- packages/taler-wallet-core/src/wallet-api-types.ts | 12 ++++++++++++ packages/taler-wallet-core/src/wallet.ts | 11 +++++++++++ 2 files changed, 23 insertions(+) (limited to 'packages/taler-wallet-core') diff --git a/packages/taler-wallet-core/src/wallet-api-types.ts b/packages/taler-wallet-core/src/wallet-api-types.ts index 84bad09fe..0b1968857 100644 --- a/packages/taler-wallet-core/src/wallet-api-types.ts +++ b/packages/taler-wallet-core/src/wallet-api-types.ts @@ -110,6 +110,8 @@ import { WithdrawFakebankRequest, WithdrawTestBalanceRequest, WithdrawUriInfoResponse, + ValidateIbanRequest, + ValidateIbanResponse, } from "@gnu-taler/taler-util"; import { WalletContractData } from "./db.js"; import { @@ -197,6 +199,7 @@ export enum WalletApiOperation { Recycle = "recycle", SetDevMode = "setDevMode", ApplyDevExperiment = "applyDevExperiment", + ValidateIban = "validateIban", } // group: Initialization @@ -683,6 +686,14 @@ export type ConfirmPeerPullDebitOp = { response: EmptyObject; }; +// group: Data Validation + +export type ValidateIbanOp = { + op: WalletApiOperation.ValidateIban; + request: ValidateIbanRequest; + response: ValidateIbanResponse; +}; + // group: Database Management /** @@ -937,6 +948,7 @@ export type WalletOperations = { [WalletApiOperation.Recycle]: RecycleOp; [WalletApiOperation.ApplyDevExperiment]: ApplyDevExperimentOp; [WalletApiOperation.SetDevMode]: SetDevModeOp; + [WalletApiOperation.ValidateIban]: ValidateIbanOp; }; export type WalletCoreRequestType< diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts index 6197f000e..363214e7b 100644 --- a/packages/taler-wallet-core/src/wallet.ts +++ b/packages/taler-wallet-core/src/wallet.ts @@ -109,6 +109,9 @@ import { WalletNotification, codecForSuspendTransaction, codecForResumeTransaction, + validateIban, + codecForValidateIbanRequest, + ValidateIbanResponse, } from "@gnu-taler/taler-util"; import { TalerCryptoInterface } from "./crypto/cryptoImplementation.js"; import { @@ -1043,6 +1046,14 @@ async function dispatchRequestInternal( await runIntegrationTest(ws, req); return {}; } + case WalletApiOperation.ValidateIban: { + const req = codecForValidateIbanRequest().decode(payload); + const valRes = validateIban(req.iban); + const resp: ValidateIbanResponse = { + valid: valRes.type === "valid", + }; + return resp; + } case WalletApiOperation.TestPay: { const req = codecForTestPayArgs().decode(payload); return await testPay(ws, req); -- cgit v1.2.3