From c776e2e35fcbf18853abd8f2930cbacad9a4fde8 Mon Sep 17 00:00:00 2001
From: Zdravko Iliev <zdravko.iliev@vereign.com>
Date: Mon, 14 Aug 2023 10:45:54 +0300
Subject: [PATCH] wip: proof event change listener, trying to get email from
 credential

---
 compose/docker-compose.simple.yml             | 106 +++++++++++++++---
 compose/env/issuer.simple.env                 |   8 +-
 libs/askar/src/agent.utils.ts                 |  10 +-
 .../src/askar/agent.event.listener.servce.ts  |  18 +++
 4 files changed, 121 insertions(+), 21 deletions(-)

diff --git a/compose/docker-compose.simple.yml b/compose/docker-compose.simple.yml
index 0d8d9ad9..fd1a12be 100644
--- a/compose/docker-compose.simple.yml
+++ b/compose/docker-compose.simple.yml
@@ -11,30 +11,104 @@ services:
     volumes:
       - ./data/db-simple/:/var/lib/postgresql/data/
 
-  agent-issuer-simple:
-    container_name: agent-issuer-simple
-    build:
-      context: "../"
-      dockerfile: "./apps/agent/deployment/Dockerfile"
-    env_file:
-      - ./env/issuer.simple.env
+  builder:
+    privileged: true
+    image: node:18.16.0-buster-slim
+    volumes:
+      - ./../yarn.lock:/app/yarn.lock
+      - ./../package.json:/app/package.json
+      - ./../apps:/app/apps
+      - ./../libs:/app/libs
+      - ./../nx.json:/app/nx.json
+      - ./../tsconfig.base.json:/app/tsconfig.base.json
+      - ./data/node_modules:/app/node_modules
+      - ./data/dist:/app/dist
+    working_dir: /app
+    command:
+      - sh
+      - -c
+      - |
+        whoami
+        apt update -y && apt install python3 git make build-essential -y
+        yarn install
+        yarn build:all
+        exit 0
+
+  agent-issuer:
+    container_name: agent-issuer
+    image: node:18.16.0
+    volumes:
+      - ./data/node_modules:/app/node_modules
+      - ./data/dist/apps/agent:/app/
+    working_dir: /app
+    command: node main.js
     ports:
-      - "8080:8080"
+      - "8080:8081"
       - "8001:8001"
+    env_file:
+      - ./env/issuer.simple.env
     depends_on:
+      builder:
+        condition: service_completed_successfully
       pg_db:
         condition: service_started
 
-  agent-holder-simple:
-    container_name: agent-holder-simple
-    build:
-      context: "../"
-      dockerfile: "./apps/agent/deployment/Dockerfile"
-    env_file:
-      - ./env/holder.simple.env
+  agent-holder:
+    container_name: agent-holder
+    image: node:18.16.0
+    volumes:
+      - ./data/node_modules:/app/node_modules
+      - ./data/dist/apps/agent:/app/
+    working_dir: /app
+    command: node main.js
     ports:
-      - "8081:8080"
+      - "8090:8081"
       - "6001:6001"
+    env_file:
+      - ./env/holder.simple.env
     depends_on:
+      builder:
+        condition: service_completed_successfully
       pg_db:
         condition: service_started
+
+
+
+
+
+  # agent-holder-simple:
+  #   container_name: agent-holder-simple
+  #   build:
+  #     context: "."
+  #     dockerfile: "../apps/agent/deployment/Dockerfile"
+  #   env_file:
+  #     - ./env/holder.simple.env
+  #   ports:
+  #     - "8081:8080"
+  #     - "6001:6001"
+  #   depends_on:
+  #     pg_db:
+  #       condition: service_started
+
+  mpy:
+    container_name: mpy
+    image: aries-framework-go/agent-rest-interop
+    environment:
+      - ARIESD_API_HOST=0.0.0.0:8092
+      - ARIESD_INBOUND_HOST=http@0.0.0.0:8091
+      - ARIESD_INBOUND_HOST_EXTERNAL=http@http://mpy.com:8091
+      - ARIESD_AUTO_ACCEPT=true
+      - ARIESD_DEFAULT_LABEL=mediator-agent-1
+      - ARIESD_DATABASE_TYPE=leveldb
+      - ARIESD_DATABASE_PREFIX=mediator
+      - ARIESD_DATABASE_TIMEOUT=60
+      - ARIESD_OUTBOUND_TRANSPORT=http
+      - ARIESD_LOG_LEVEL=DEBUG
+      - ARIESD_HTTP_RESOLVER=did:peer@http://test.bcovrin.vonx.io
+    ports:
+      - 8091:8091
+      - 8092:8092
+    volumes:
+      - ./certificates:/etc/tls
+    entrypoint: ""
+    command:  /bin/sh -c "cp /etc/tls/* /usr/local/share/ca-certificates/;update-ca-certificates; aries-agent-rest start"
diff --git a/compose/env/issuer.simple.env b/compose/env/issuer.simple.env
index 46599605..bc15a0e8 100644
--- a/compose/env/issuer.simple.env
+++ b/compose/env/issuer.simple.env
@@ -1,10 +1,10 @@
 LEDGERS="BCOVRIN_TEST"
 IDUNION_KEY=
 
-AGENT_PEER_URL="http://agent-issuer:8001"
-AGENT_NAME=DEV_SIMPLE_AGENT_ISSUER_OCM # this should be changed to company name
-AGENT_KEY=DEV_SIMPLE_AGENT_ISSUER_OCM #example random string
-AGENT_DID_SEED=200000000000000000000000TCuste21js #did private key seed min lenght 32
+AGENT_PEER_URL="http://192.168.1.5:8001"
+AGENT_NAME=TEST_AGENT
+AGENT_KEY=TEST_AGENT
+AGENT_DID_SEED=200000000000000000000000TCuste21js
 AGENT_DB_HOST=pg_db:5432
 AGENT_DB_USER=postgres
 AGENT_DB_PASS=postgres
diff --git a/libs/askar/src/agent.utils.ts b/libs/askar/src/agent.utils.ts
index 3eae5e95..2027c9a9 100644
--- a/libs/askar/src/agent.utils.ts
+++ b/libs/askar/src/agent.utils.ts
@@ -6,7 +6,9 @@ import {
   CredentialsModule,
   DidsModule,
   Key,
+  KeyDidResolver,
   KeyType,
+  PeerDidResolver,
   ProofsModule,
   TypedArrayEncoder,
   V2CredentialProtocol,
@@ -24,6 +26,7 @@ import {
   IndyVdrIndyDidRegistrar,
   IndyVdrIndyDidResolver,
   IndyVdrModule,
+  IndyVdrSovDidResolver,
 } from "@aries-framework/indy-vdr";
 import { AnonCredsRsModule } from "@aries-framework/anoncreds-rs";
 import { anoncreds } from "@hyperledger/anoncreds-nodejs";
@@ -126,7 +129,12 @@ export const getAskarAnonCredsIndyModules = (networks: any) => {
     }),
     dids: new DidsModule({
       registrars: [new IndyVdrIndyDidRegistrar()],
-      resolvers: [new IndyVdrIndyDidResolver()],
+      resolvers: [
+        new IndyVdrSovDidResolver(),
+        new IndyVdrIndyDidResolver(),
+        new KeyDidResolver(),
+        new PeerDidResolver(),
+      ],
     }),
     askar: new AskarModule({
       ariesAskar,
diff --git a/libs/askar/src/askar/agent.event.listener.servce.ts b/libs/askar/src/askar/agent.event.listener.servce.ts
index 03eaf71d..35418884 100644
--- a/libs/askar/src/askar/agent.event.listener.servce.ts
+++ b/libs/askar/src/askar/agent.event.listener.servce.ts
@@ -5,6 +5,8 @@ import {
   BasicMessageEventTypes,
   BasicMessageRole,
   BasicMessageStateChangedEvent,
+  ProofEventTypes,
+  ProofStateChangedEvent,
 } from "@aries-framework/core";
 import {
   MakeBasicMessageResponseDto,
@@ -30,6 +32,22 @@ export class AgentEventListenerServce implements OnModuleInit {
     // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
     this.agentConfig = this.configService.get<IConfAgent>("agent")!;
 
+    this.askar.agent.events.on(
+      ProofEventTypes.ProofStateChanged,
+      async (ev: ProofStateChangedEvent) => {
+        const requestedCredentials =
+          await this.askar.agent.proofs.selectCredentialsForRequest({
+            proofRecordId: ev.payload.proofRecord.id,
+          });
+
+        console.log("event", JSON.stringify(ev, null, 2));
+        console.log("cred", JSON.stringify(ev, null, 2));
+
+        //is this the way to get the email from credential ?
+        console.log(requestedCredentials.proofFormats.anoncreds?.attributes);
+      },
+    );
+
     this.askar.agent.events.on(
       BasicMessageEventTypes.BasicMessageStateChanged,
       async (ev: BasicMessageStateChangedEvent) => {
-- 
GitLab