aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-embedded/src/wallet-qjs.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-embedded/src/wallet-qjs.ts')
-rw-r--r--packages/taler-wallet-embedded/src/wallet-qjs.ts44
1 files changed, 32 insertions, 12 deletions
diff --git a/packages/taler-wallet-embedded/src/wallet-qjs.ts b/packages/taler-wallet-embedded/src/wallet-qjs.ts
index 04efb458a..e475f9542 100644
--- a/packages/taler-wallet-embedded/src/wallet-qjs.ts
+++ b/packages/taler-wallet-embedded/src/wallet-qjs.ts
@@ -45,11 +45,11 @@ import {
reduceAction,
getBackupStartState,
getRecoveryStartState,
+ discoverPolicies,
+ mergeDiscoveryAggregate,
ReducerState,
} from "@gnu-taler/anastasis-core";
-import {
- userIdentifierDerive,
-} from "@gnu-taler/anastasis-core/lib/crypto.js";
+import { userIdentifierDerive } from "@gnu-taler/anastasis-core/lib/crypto.js";
setGlobalLogLevelFromString("trace");
@@ -195,18 +195,33 @@ async function handleAnastasisRequest(
};
};
+ let req = args ?? {};
+
switch (operation) {
case "anastasisReduce":
// TODO: do some input validation here
- let req = args ?? {};
- let res = await reduceAction(req.state, req.action, req.args ?? {});
+ let reduceRes = await reduceAction(req.state, req.action, req.args ?? {});
// For now, this will return "success" even if the wrapped Anastasis
// response is a ReducerStateError.
- return wrapSuccessResponse(res);
+ return wrapSuccessResponse(reduceRes);
case "anastasisStartBackup":
return wrapSuccessResponse(await getBackupStartState());
case "anastasisStartRecovery":
return wrapSuccessResponse(await getRecoveryStartState());
+ case "anastasisDiscoverPolicies":
+ let discoverRes = await discoverPolicies(req.state, req.cursor);
+ let aggregatedPolicies = mergeDiscoveryAggregate(
+ discoverRes.policies ?? [],
+ req.state.discoveryState?.aggregatedPolicies ?? [],
+ );
+ return wrapSuccessResponse({
+ ...req.state,
+ discoveryState: {
+ state: "finished",
+ aggregatedPolicies,
+ cursor: discoverRes.cursor,
+ },
+ });
}
}
@@ -318,13 +333,15 @@ export async function testArgon2id() {
},
input_server_salt: "FZ48EFS7WS3R2ZR4V53A3GFFY4",
output_id:
- "YS45R6CGJV84K1NN7T14ZBCPVTZ6H15XJSM1FV0R748MHPV82SM0126EBZKBAAGCR34Q9AFKPEW1HRT2Q9GQ5JRA3642AB571DKZS18",
+ "YS45R6CGJV84K1NN7T14ZBCPVTZ6H15XJSM1FV0R748MHPV82SM0126EBZKBAAGCR34Q9AFKPEW1HRT2Q9GQ5JRA3642AB571DKZS18",
};
- if (await userIdentifierDerive(
- userIdVector.input_id_data,
- userIdVector.input_server_salt,
- ) != userIdVector.output_id) {
+ if (
+ (await userIdentifierDerive(
+ userIdVector.input_id_data,
+ userIdVector.input_server_salt,
+ )) != userIdVector.output_id
+ ) {
throw Error("argon2id is not working!");
}
@@ -337,4 +354,7 @@ globalThis.testWithGv = testWithGv;
globalThis.testWithLocal = testWithLocal;
// @ts-ignore
globalThis.testArgon2id = testArgon2id;
-
+// @ts-ignore
+globalThis.testReduceAction = reduceAction;
+// @ts-ignore
+globalThis.testDiscoverPolicies = discoverPolicies; \ No newline at end of file