taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 4335e56d064b853acac192b52a9c2629d383d5ef
parent e7e59f549cd8a9e4371908d7815a0f39b373f016
Author: Florian Dold <florian@dold.me>
Date:   Fri, 23 Jan 2026 18:36:43 +0100

harness: payto hash tooling

Diffstat:
Mpackages/taler-harness/src/index.ts | 17+++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/packages/taler-harness/src/index.ts b/packages/taler-harness/src/index.ts @@ -33,7 +33,6 @@ import { LoginTokenScope, MerchantAuthMethod, PaytoString, - Paytos, TalerBankConversionHttpClient, TalerCoreBankHttpClient, TalerExchangeHttpClient, @@ -49,6 +48,7 @@ import { encodeCrock, generateIban, getRandomBytes, + hashFullPaytoUri, hashNormalizedPaytoUri, j2s, parsePaytoUriOrThrow, @@ -58,6 +58,7 @@ import { signKycAuth, stringifyPayTemplateUri, succeedOrThrow, + toHexString, } from "@gnu-taler/taler-util"; import { clk } from "@gnu-taler/taler-util/clk"; import { readlinePrompt } from "@gnu-taler/taler-util/compat"; @@ -250,6 +251,18 @@ const advancedCli = talerHarnessCli.subcommand("advancedArgs", "advanced", { }); advancedCli + .subcommand("hashPayto", "hash-payto", { + help: "Decode base32-crockford.", + }) + .requiredArgument("payto", clk.STRING) + .action((args) => { + console.log(`normalized base64: ${encodeCrock(hashNormalizedPaytoUri(args.hashPayto.payto))}`); + console.log(`normalized hex: ${toHexString(hashNormalizedPaytoUri(args.hashPayto.payto))}`); + console.log(`full base64: ${encodeCrock(hashFullPaytoUri(args.hashPayto.payto))}`); + console.log(`full hex: ${toHexString(hashFullPaytoUri(args.hashPayto.payto))}`); + }); + +advancedCli .subcommand("decode", "decode", { help: "Decode base32-crockford.", }) @@ -928,7 +941,7 @@ deploymentCli merchantAdminToken = merchantAdminTokenArg; } if (!merchantAdminToken) { - throw Error("no merchant token") + throw Error("no merchant token"); } /**