commit 3e834cd10187a488b19b8f809b55cc443cd3c675
parent 682c7847e3f07ac1c9f5c876633335c63bb4456f
Author: Sebastian <sebasjm@gmail.com>
Date: Tue, 27 Aug 2024 15:19:41 -0300
fix signature
Diffstat:
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,