commit 4335e56d064b853acac192b52a9c2629d383d5ef
parent e7e59f549cd8a9e4371908d7815a0f39b373f016
Author: Florian Dold <florian@dold.me>
Date: Fri, 23 Jan 2026 18:36:43 +0100
harness: payto hash tooling
Diffstat:
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");
}
/**