diff options
author | Florian Dold <florian@dold.me> | 2022-03-23 21:24:23 +0100 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2022-03-23 21:24:36 +0100 |
commit | d881f4fd258a27cc765a25c24e5fef9f86b6226f (patch) | |
tree | 3254444f93ef552f4ac65f14e581ed761b9df79e /packages/taler-wallet-cli | |
parent | e21c1b31928cd6bfe90150ea2de19799b6359c40 (diff) |
wallet: simplify crypto workers
Diffstat (limited to 'packages/taler-wallet-cli')
-rw-r--r-- | packages/taler-wallet-cli/src/bench2.ts | 5 | ||||
-rw-r--r-- | packages/taler-wallet-cli/src/index.ts | 37 | ||||
-rw-r--r-- | packages/taler-wallet-cli/src/integrationtests/test-wallet-dbless.ts | 5 |
3 files changed, 34 insertions, 13 deletions
diff --git a/packages/taler-wallet-cli/src/bench2.ts b/packages/taler-wallet-cli/src/bench2.ts index 43c28882e..c1fa674c4 100644 --- a/packages/taler-wallet-cli/src/bench2.ts +++ b/packages/taler-wallet-cli/src/bench2.ts @@ -27,7 +27,7 @@ import { import { checkReserve, createFakebankReserve, - CryptoApi, + CryptoDispatcher, depositCoin, downloadExchangeInfo, findDenomOrThrow, @@ -50,7 +50,8 @@ export async function runBench2(configJson: any): Promise<void> { // Validate the configuration file for this benchmark. const benchConf = codecForBench2Config().decode(configJson); const curr = benchConf.currency; - const cryptoApi = new CryptoApi(new SynchronousCryptoWorkerFactory()); + const cryptoDisp = new CryptoDispatcher(new SynchronousCryptoWorkerFactory()); + const cryptoApi = cryptoDisp.cryptoApi; const http = new NodeHttpLib(); http.setThrottling(false); diff --git a/packages/taler-wallet-cli/src/index.ts b/packages/taler-wallet-cli/src/index.ts index 0ed935a15..3b79f78b8 100644 --- a/packages/taler-wallet-cli/src/index.ts +++ b/packages/taler-wallet-cli/src/index.ts @@ -50,18 +50,21 @@ import { NodeHttpLib, getDefaultNodeWallet, NodeThreadCryptoWorkerFactory, - CryptoApi, walletCoreDebugFlags, WalletApiOperation, WalletCoreApiClient, Wallet, getErrorDetailFromException, + CryptoDispatcher, + SynchronousCryptoWorkerFactory, + nativeCrypto, } from "@gnu-taler/taler-wallet-core"; import { lintExchangeDeployment } from "./lint.js"; import { runBench1 } from "./bench1.js"; import { runEnv1 } from "./env1.js"; import { GlobalTestState, runTestWithState } from "./harness/harness.js"; import { runBench2 } from "./bench2.js"; +import { TalerCryptoInterface, TalerCryptoInterfaceR } from "@gnu-taler/taler-wallet-core/src/crypto/cryptoImplementation"; // This module also serves as the entry point for the crypto // thread worker, and thus must expose these two handlers. @@ -1121,14 +1124,30 @@ testCli.subcommand("tvgcheck", "tvgcheck").action(async (args) => { console.log("check passed!"); }); -testCli.subcommand("cryptoworker", "cryptoworker").action(async (args) => { - const workerFactory = new NodeThreadCryptoWorkerFactory(); - const cryptoApi = new CryptoApi(workerFactory); - const input = "foo"; - console.log(`testing crypto worker by hashing string '${input}'`); - const res = await cryptoApi.hashString(input); - console.log(res); -}); +testCli + .subcommand("cryptoworker", "cryptoworker") + .maybeOption("impl", ["--impl"], clk.STRING) + .action(async (args) => { + let cryptoApi: TalerCryptoInterface; + if (!args.cryptoworker.impl || args.cryptoworker.impl === "node") { + const workerFactory = new NodeThreadCryptoWorkerFactory(); + const cryptoDisp = new CryptoDispatcher(workerFactory); + cryptoApi = cryptoDisp.cryptoApi; + } else if (args.cryptoworker.impl === "sync") { + const workerFactory = new SynchronousCryptoWorkerFactory(); + const cryptoDisp = new CryptoDispatcher(workerFactory); + cryptoApi = cryptoDisp.cryptoApi; + } else if (args.cryptoworker.impl === "none") { + cryptoApi = nativeCrypto; + } else { + throw Error("invalid impl"); + } + + const input = "foo"; + console.log(`testing crypto worker by hashing string '${input}'`); + const res = await cryptoApi.hashString({ str: input }); + console.log(res); + }); export function main() { if (process.env["TALER_WALLET_DEBUG_DENOMSEL_ALLOW_LATE"]) { diff --git a/packages/taler-wallet-cli/src/integrationtests/test-wallet-dbless.ts b/packages/taler-wallet-cli/src/integrationtests/test-wallet-dbless.ts index 146603f3a..d8abae136 100644 --- a/packages/taler-wallet-cli/src/integrationtests/test-wallet-dbless.ts +++ b/packages/taler-wallet-cli/src/integrationtests/test-wallet-dbless.ts @@ -20,7 +20,7 @@ import { j2s } from "@gnu-taler/taler-util"; import { checkReserve, - CryptoApi, + CryptoDispatcher, depositCoin, downloadExchangeInfo, findDenomOrThrow, @@ -44,7 +44,8 @@ export async function runWalletDblessTest(t: GlobalTestState) { const { bank, exchange } = await createSimpleTestkudosEnvironment(t); const http = new NodeHttpLib(); - const cryptoApi = new CryptoApi(new SynchronousCryptoWorkerFactory()); + const cryptiDisp = new CryptoDispatcher(new SynchronousCryptoWorkerFactory()); + const cryptoApi = cryptiDisp.cryptoApi; try { // Withdraw digital cash into the wallet. |