gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-core] branch master updated (d33b70b06 -> d59a23885)


From: gnunet
Subject: [taler-wallet-core] branch master updated (d33b70b06 -> d59a23885)
Date: Thu, 10 Aug 2023 15:24:49 +0200

This is an automated email from the git hooks/post-receive script.

dold pushed a change to branch master
in repository wallet-core.

    from d33b70b06 wallet-core-embedded: added Anastasis policy discovery
     new e6c068980 embedded: expose anastasis reducer for testing
     new d59a23885 anastasis: policy discovery CLI

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 packages/anastasis-cli/src/index.ts              | 101 ++++++++++++++---------
 packages/anastasis-core/src/crypto.ts            |   4 +
 packages/taler-wallet-embedded/src/wallet-qjs.ts |  21 +++--
 3 files changed, 78 insertions(+), 48 deletions(-)

diff --git a/packages/anastasis-cli/src/index.ts 
b/packages/anastasis-cli/src/index.ts
index 560574276..7c011569f 100644
--- a/packages/anastasis-cli/src/index.ts
+++ b/packages/anastasis-cli/src/index.ts
@@ -1,20 +1,78 @@
 import { clk } from "@gnu-taler/taler-util/clk";
 import {
+  discoverPolicies,
   getBackupStartState,
   getRecoveryStartState,
   reduceAction,
 } from "@gnu-taler/anastasis-core";
 import fs from "fs";
+import { j2s } from "@gnu-taler/taler-util";
 
-export const reducerCli = clk
-  .program("reducer", {
-    help: "Command line interface for Anastasis.",
+export const reducerCli = clk.program("anastasis-cli", {
+  help: "Command line interface for Anastasis.",
+});
+
+reducerCli
+  .subcommand("reducer", "reduce", {
+    help: "Run the anastasis reducer",
   })
   .flag("initBackup", ["-b", "--backup"])
   .flag("initRecovery", ["-r", "--restore"])
   .maybeOption("argumentsJson", ["-a", "--arguments"], clk.STRING)
   .maybeArgument("action", clk.STRING)
-  .maybeArgument("stateFile", clk.STRING);
+  .maybeArgument("stateFile", clk.STRING)
+  .action(async (x) => {
+    if (x.reducer.initBackup) {
+      console.log(JSON.stringify(await getBackupStartState()));
+      return;
+    } else if (x.reducer.initRecovery) {
+      console.log(JSON.stringify(await getRecoveryStartState()));
+      return;
+    }
+
+    const action = x.reducer.action;
+    if (!action) {
+      console.log("action required");
+      return;
+    }
+
+    let lastState: any;
+    if (x.reducer.stateFile) {
+      const s = fs.readFileSync(x.reducer.stateFile, { encoding: "utf-8" });
+      lastState = JSON.parse(s);
+    } else {
+      const s = await read(process.stdin);
+      lastState = JSON.parse(s);
+    }
+
+    let args: any;
+    if (x.reducer.argumentsJson) {
+      args = JSON.parse(x.reducer.argumentsJson);
+    } else {
+      args = {};
+    }
+
+    const nextState = await reduceAction(lastState, action, args);
+    console.log(JSON.stringify(nextState));
+  });
+
+reducerCli
+  .subcommand("discover", "discover", {
+    help: "Run the anastasis reducer",
+  })
+  .maybeArgument("stateFile", clk.STRING)
+  .action(async (args) => {
+    let lastState: any;
+    if (args.discover.stateFile) {
+      const s = fs.readFileSync(args.discover.stateFile, { encoding: "utf-8" 
});
+      lastState = JSON.parse(s);
+    } else {
+      const s = await read(process.stdin);
+      lastState = JSON.parse(s);
+    }
+    const res = await discoverPolicies(lastState);
+    console.log(j2s(res));
+  });
 
 async function read(stream: NodeJS.ReadStream): Promise<string> {
   const chunks = [];
@@ -24,41 +82,6 @@ async function read(stream: NodeJS.ReadStream): 
Promise<string> {
   return Buffer.concat(chunks).toString("utf8");
 }
 
-reducerCli.action(async (x) => {
-  if (x.reducer.initBackup) {
-    console.log(JSON.stringify(await getBackupStartState()));
-    return;
-  } else if (x.reducer.initRecovery) {
-    console.log(JSON.stringify(await getRecoveryStartState()));
-    return;
-  }
-
-  const action = x.reducer.action;
-  if (!action) {
-    console.log("action required");
-    return;
-  }
-
-  let lastState: any;
-  if (x.reducer.stateFile) {
-    const s = fs.readFileSync(x.reducer.stateFile, { encoding: "utf-8" });
-    lastState = JSON.parse(s);
-  } else {
-    const s = await read(process.stdin);
-    lastState = JSON.parse(s);
-  }
-
-  let args: any;
-  if (x.reducer.argumentsJson) {
-    args = JSON.parse(x.reducer.argumentsJson);
-  } else {
-    args = {};
-  }
-
-  const nextState = await reduceAction(lastState, action, args);
-  console.log(JSON.stringify(nextState));
-});
-
 export function reducerCliMain() {
   reducerCli.run();
 }
diff --git a/packages/anastasis-core/src/crypto.ts 
b/packages/anastasis-core/src/crypto.ts
index 3a9483aa1..8bc004e95 100644
--- a/packages/anastasis-core/src/crypto.ts
+++ b/packages/anastasis-core/src/crypto.ts
@@ -151,7 +151,11 @@ export async function decryptPolicyMetadata(
   userId: UserIdentifier,
   metadataEnc: OpaqueData,
 ): Promise<PolicyMetadata> {
+  // @ts-ignore
+  console.log("metadataEnc", metadataEnc);
   const plain = await anastasisDecrypt(asOpaque(userId), metadataEnc, "rmd");
+  // @ts-ignore
+  console.log("plain:", plain);
   const metadataBytes = decodeCrock(plain);
   const policyHash = encodeCrock(metadataBytes.slice(0, 64));
   const secretName = bytesToString(metadataBytes.slice(64));
diff --git a/packages/taler-wallet-embedded/src/wallet-qjs.ts 
b/packages/taler-wallet-embedded/src/wallet-qjs.ts
index 278a90c83..e475f9542 100644
--- a/packages/taler-wallet-embedded/src/wallet-qjs.ts
+++ b/packages/taler-wallet-embedded/src/wallet-qjs.ts
@@ -49,9 +49,7 @@ import {
   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");
 
@@ -335,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!");
   }
 
@@ -354,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

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]