taler-typescript-core

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

commit 3e834cd10187a488b19b8f809b55cc443cd3c675
parent 682c7847e3f07ac1c9f5c876633335c63bb4456f
Author: Sebastian <sebasjm@gmail.com>
Date:   Tue, 27 Aug 2024 15:19:41 -0300

fix signature

Diffstat:
Mpackages/taler-util/src/http-client/exchange.ts | 16++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/packages/taler-util/src/http-client/exchange.ts b/packages/taler-util/src/http-client/exchange.ts @@ -22,6 +22,7 @@ import { import { Codec, codecForAny } from "../codec.js"; import { TalerSignaturePurpose, + bufferForUint64, buildSigPS, decodeCrock, eddsaSign, @@ -66,6 +67,7 @@ import { import { TalerError } from "../errors.js"; import { TalerErrorCode } from "../taler-error-codes.js"; import { codecForEmptyObject } from "../types-taler-wallet.js"; +import { canonicalJson } from "../helpers.js"; export type TalerExchangeResultByMethod< prop extends keyof TalerExchangeHttpClient, @@ -777,7 +779,7 @@ export class TalerExchangeHttpClient { * https://docs.taler.net/core/api-exchange.html#get--kyc-proof-$PROVIDER_NAME?state=$H_PAYTO * */ - async completeExternalKycProcess(provider: string, state: string) {} + async completeExternalKycProcess(provider: string, state: string) { } // // AML operations @@ -1021,16 +1023,18 @@ function buildAMLDecisionSignature( const zero = new Uint8Array(new ArrayBuffer(64)); const sigBlob = buildSigPS(TalerSignaturePurpose.AML_DECISION) - //TODO: new need the null terminator, also in the exchange - .put(hash(stringToBytes(decision.justification))) //check null .put(timestampRoundedToBuffer(decision.decision_time)) - // .put(amountToBuffer(decision.new_threshold)) .put(decodeCrock(decision.h_payto)) - .put(zero) //kyc_requirement - // .put(bufferForUint32(decision.new_state)) + .put(hash(stringToBytes(decision.justification))) + .put(hash(stringToBytes(canonicalJson(decision.properties) + "\0"))) + .put(hash(stringToBytes(canonicalJson(decision.new_rules) + "\0"))) + .put(decision.new_measure != null ? hash(stringToBytes(decision.new_measure)) : zero) + .put(bufferForUint64(decision.keep_investigating ? 1 : 0)) .build(); + const officer_sig = encodeCrock(eddsaSign(sigBlob, key)); + return { ...decision, officer_sig,