aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-cli
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2022-03-23 21:24:23 +0100
committerFlorian Dold <florian@dold.me>2022-03-23 21:24:36 +0100
commitd881f4fd258a27cc765a25c24e5fef9f86b6226f (patch)
tree3254444f93ef552f4ac65f14e581ed761b9df79e /packages/taler-wallet-cli
parente21c1b31928cd6bfe90150ea2de19799b6359c40 (diff)
downloadwallet-core-d881f4fd258a27cc765a25c24e5fef9f86b6226f.tar.xz
wallet: simplify crypto workers
Diffstat (limited to 'packages/taler-wallet-cli')
-rw-r--r--packages/taler-wallet-cli/src/bench2.ts5
-rw-r--r--packages/taler-wallet-cli/src/index.ts37
-rw-r--r--packages/taler-wallet-cli/src/integrationtests/test-wallet-dbless.ts5
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.