diff options
author | Sebastian <sebasjm@gmail.com> | 2023-07-20 17:01:35 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2023-07-20 17:01:35 -0300 |
commit | 2335c3418cfbcc8a0196f0f161bab31ade99acb2 (patch) | |
tree | 76edf53acc5810ecfe215f6f99f755833a492af8 /packages/aml-backoffice-ui/src/account.ts | |
parent | 24d05d87ecfb880b174e90a3d585240d190eaefe (diff) | |
download | wallet-core-2335c3418cfbcc8a0196f0f161bab31ade99acb2.tar.xz |
make signed request to exchange
Diffstat (limited to 'packages/aml-backoffice-ui/src/account.ts')
-rw-r--r-- | packages/aml-backoffice-ui/src/account.ts | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/packages/aml-backoffice-ui/src/account.ts b/packages/aml-backoffice-ui/src/account.ts index bd3c2003e..1c8cd7f53 100644 --- a/packages/aml-backoffice-ui/src/account.ts +++ b/packages/aml-backoffice-ui/src/account.ts @@ -1,14 +1,20 @@ import { - bytesToString, + PaytoUri, + TalerSignaturePurpose, + bufferForUint32, + buildSigPS, createEddsaKeyPair, decodeCrock, decryptWithDerivedKey, eddsaGetPublic, + eddsaSign, encodeCrock, encryptWithDerivedKey, getRandomBytesF, stringToBytes, + stringifyPaytoUri, } from "@gnu-taler/taler-util"; +import { AmlExchangeBackend } from "./types.js"; export interface Account { accountId: AccountId; @@ -45,6 +51,26 @@ export async function unlockAccount( return { accountId, signingKey }; } +export function buildQuerySignature(key: SigningKey): string { + const sigBlob = buildSigPS( + TalerSignaturePurpose.TALER_SIGNATURE_AML_QUERY, + ).build(); + + return encodeCrock(eddsaSign(sigBlob, key)); +} +export function buildDecisionSignature( + key: SigningKey, + payto: PaytoUri, + state: AmlExchangeBackend.AmlState, +): string { + const sigBlob = buildSigPS(TalerSignaturePurpose.TALER_SIGNATURE_AML_DECISION) + .put(decodeCrock(stringifyPaytoUri(payto))) + .put(bufferForUint32(state)) + .build(); + + return encodeCrock(eddsaSign(sigBlob, key)); +} + declare const opaque_Account: unique symbol; export type LockedAccount = string & { [opaque_Account]: true }; |