From 0acd4437ac6689fc37b95c19de083996fa1be965 Mon Sep 17 00:00:00 2001
From: Benjamin Young <byoung@digitalbazaar.com>
Date: Wed, 20 Mar 2024 15:40:58 -0400
Subject: [PATCH 1/6] Add .editorconfig.

---
 .editorconfig | 12 ++++++++++++
 1 file changed, 12 insertions(+)
 create mode 100644 .editorconfig

diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..d8da069
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,12 @@
+# EditorConfig is awesome: https://EditorConfig.org
+
+# top-most EditorConfig file
+root = true
+
+# Unix-style newlines with a newline ending every file
+[*]
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
+indent_style = space
+indent_size = 2

From a4824652f809b0bba6d3f7d9067891fe4db577ba Mon Sep 17 00:00:00 2001
From: Benjamin Young <byoung@digitalbazaar.com>
Date: Wed, 20 Mar 2024 15:41:50 -0400
Subject: [PATCH 2/6] Fix whitespace in GrotoNetworking.json.

---
 implementations/GrottoNetworking.json | 70 +++++++++++++--------------
 1 file changed, 35 insertions(+), 35 deletions(-)

diff --git a/implementations/GrottoNetworking.json b/implementations/GrottoNetworking.json
index ef1b6b6..38dd86d 100644
--- a/implementations/GrottoNetworking.json
+++ b/implementations/GrottoNetworking.json
@@ -1,37 +1,37 @@
 {
-    "name": "Grotto Networking",
-    "implementation": "Grotto Selective Disclosure Libraries",
-    "issuers": [{
-      "id": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP",
-      "endpoint": "https://ecdsa-sd.grotto-networking.com/credentials/issue",
-      "tags": ["ecdsa-sd-2023"],
-      "supportedEcdsaKeyTypes": ["P-256"]
-    },
-    {
-      "id": "did:key:zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ#zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ",
-      "endpoint": "https://ecdsa-sd.grotto-networking.com/BBS/credentials/issue",
-      "tags": ["bbs-2023"]
-    }],
-    "verifiers": [{
-      "id": "https://vcverifier.grotto-networking.com/test",
-      "endpoint": "https://ecdsa-sd.grotto-networking.com/credentials/verify",
-      "tags": ["ecdsa-sd-2023"],
-      "supportedEcdsaKeyTypes": ["P-256"]
-    },
-    {
-      "id": "https://vcverifier.grotto-networking.com/test",
-      "endpoint": "https://ecdsa-sd.grotto-networking.com/BBS/credentials/verify",
-      "tags": ["bbs-2023"]
-    }
-    ],
-    "vcHolders": [{
-      "id": "https://vcholder.grotto-networking.com/test",
-      "endpoint": "https://ecdsa-sd.grotto-networking.com/credentials/derive",
-      "tags": ["vcHolder"]
-    },
-    {
-      "id": "https://vcholder.grotto-networking.com/test",
-      "endpoint": "https://ecdsa-sd.grotto-networking.com/BBS/credentials/derive",
-      "tags": ["vcHolder", "bbs-2023"]
-    }]
+  "name": "Grotto Networking",
+  "implementation": "Grotto Selective Disclosure Libraries",
+  "issuers": [{
+    "id": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP",
+    "endpoint": "https://ecdsa-sd.grotto-networking.com/credentials/issue",
+    "tags": ["ecdsa-sd-2023"],
+    "supportedEcdsaKeyTypes": ["P-256"]
+  },
+  {
+    "id": "did:key:zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ#zUC7DerdEmfZ8f4pFajXgGwJoMkV1ofMTmEG5UoNvnWiPiLuGKNeqgRpLH2TV4Xe5mJ2cXV76gRN7LFQwapF1VFu6x2yrr5ci1mXqC1WNUrnHnLgvfZfMH7h6xP6qsf9EKRQrPQ",
+    "endpoint": "https://ecdsa-sd.grotto-networking.com/BBS/credentials/issue",
+    "tags": ["bbs-2023"]
+  }],
+  "verifiers": [{
+    "id": "https://vcverifier.grotto-networking.com/test",
+    "endpoint": "https://ecdsa-sd.grotto-networking.com/credentials/verify",
+    "tags": ["ecdsa-sd-2023"],
+    "supportedEcdsaKeyTypes": ["P-256"]
+  },
+  {
+    "id": "https://vcverifier.grotto-networking.com/test",
+    "endpoint": "https://ecdsa-sd.grotto-networking.com/BBS/credentials/verify",
+    "tags": ["bbs-2023"]
   }
+  ],
+  "vcHolders": [{
+    "id": "https://vcholder.grotto-networking.com/test",
+    "endpoint": "https://ecdsa-sd.grotto-networking.com/credentials/derive",
+    "tags": ["vcHolder"]
+  },
+  {
+    "id": "https://vcholder.grotto-networking.com/test",
+    "endpoint": "https://ecdsa-sd.grotto-networking.com/BBS/credentials/derive",
+    "tags": ["vcHolder", "bbs-2023"]
+  }]
+}

From 074a607ae0c1676606324bcc718e3445244c3847 Mon Sep 17 00:00:00 2001
From: Benjamin Young <byoung@digitalbazaar.com>
Date: Wed, 20 Mar 2024 15:59:48 -0400
Subject: [PATCH 3/6] Add more metadata to implementations.

---
 implementations/ApiCatalog.json       | 8 ++++++--
 implementations/DanubeTech.json       | 8 ++++++--
 implementations/DigitalBazaar.json    | 8 ++++++--
 implementations/EWF.json              | 8 ++++++--
 implementations/GrottoNetworking.json | 7 +++++--
 implementations/LearnCard.json        | 5 ++++-
 implementations/SpruceID.json         | 5 ++++-
 implementations/Trinsic.json          | 5 ++++-
 implementations/bovine.json           | 6 +++++-
 9 files changed, 46 insertions(+), 14 deletions(-)

diff --git a/implementations/ApiCatalog.json b/implementations/ApiCatalog.json
index 3a4c30c..9c1abe8 100644
--- a/implementations/ApiCatalog.json
+++ b/implementations/ApiCatalog.json
@@ -1,6 +1,10 @@
 {
-  "name": "apicatalog.com",
-  "implementation": "Iron Verifiable Credentials",
+  "vendor": {
+    "name": "apicatalog.com",
+    "url": "https://apicatalog.com/"
+  },
+  "name": "Iron Verifiable Credentials",
+  "url": "https://github.com/filip26/iron-verifiable-credentials",
   "verifiers": [
     {
       "id": "https://vc.apicatalog.com/verifier",
diff --git a/implementations/DanubeTech.json b/implementations/DanubeTech.json
index 3ccebe9..650c6d9 100644
--- a/implementations/DanubeTech.json
+++ b/implementations/DanubeTech.json
@@ -1,6 +1,10 @@
 {
-  "name": "Danube Tech",
-  "implementation": "uni",
+  "vendor": {
+    "name": "Danube Tech",
+    "url": "https://danubetech.com/"
+  },
+  "name": "uni",
+  "url": "https://danubetech.com/tech/uni-issuer-verifier",
   "issuers": [{
     "id": "did:key:z6MksvTdeczd92YQ5W2V2gL9kXdRvD2AEiyJPoWieP95HUDo",
     "endpoint": "https://uniissuer.io/1.0/credentials/issue",
diff --git a/implementations/DigitalBazaar.json b/implementations/DigitalBazaar.json
index 8ea5eb8..5809ac8 100644
--- a/implementations/DigitalBazaar.json
+++ b/implementations/DigitalBazaar.json
@@ -1,6 +1,10 @@
 {
-  "name": "Digital Bazaar",
-  "implementation": "Veres (Q/A)",
+  "vendor": {
+    "name": "Digital Bazaar",
+    "url": "https://digitalbazaar.com/"
+  },
+  "name": "Veres (Q/A)",
+  "url": "https://demo.veresewallet.dev/",
   "issuers": [{
     "id": "https://issuer.qa.veres.app/issuers/z1AEwLo7tZ3TrsPgRcgLJqQvR",
     "endpoint": "https://issuer.qa.veres.app/issuers/z1AEwLo7tZ3TrsPgRcgLJqQvR/credentials/issue",
diff --git a/implementations/EWF.json b/implementations/EWF.json
index cd02d8f..86ef11e 100644
--- a/implementations/EWF.json
+++ b/implementations/EWF.json
@@ -1,6 +1,10 @@
 {
-  "name": "EWF",
-  "implementation": "Energy Web Foundation VC-API",
+  "vendor": {
+    "name": "EWF",
+    "url": "https://www.energyweb.org/"
+  },
+  "name": "Energy Web Foundation VC-API",
+  "url": "https://github.com/openwallet-foundation-labs/vc-api/tree/develop/apps/vc-api",
   "issuers": [{
     "id": "did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6",
     "endpoint": "https://vc-api-dev.energyweb.org/v1/vc-api/credentials/issue",
diff --git a/implementations/GrottoNetworking.json b/implementations/GrottoNetworking.json
index 38dd86d..3933cb3 100644
--- a/implementations/GrottoNetworking.json
+++ b/implementations/GrottoNetworking.json
@@ -1,6 +1,9 @@
 {
-  "name": "Grotto Networking",
-  "implementation": "Grotto Selective Disclosure Libraries",
+  "vendor": {
+    "name": "Grotto Networking",
+    "url": "https://grotto-networking.com/"
+  },
+  "name": "Grotto Selective Disclosure Libraries",
   "issuers": [{
     "id": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP",
     "endpoint": "https://ecdsa-sd.grotto-networking.com/credentials/issue",
diff --git a/implementations/LearnCard.json b/implementations/LearnCard.json
index ebfdd9e..d2d7d55 100644
--- a/implementations/LearnCard.json
+++ b/implementations/LearnCard.json
@@ -1,6 +1,9 @@
 {
+  "vendor": {
+    "name": "LearnCard",
+    "url": "https://www.learncard.com/"
+  },
   "name": "LearnCard",
-  "implementation": "LearnCard",
   "issuers": [{
     "id": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh",
     "endpoint": "https://bridge.learncard.com/credentials/issue",
diff --git a/implementations/SpruceID.json b/implementations/SpruceID.json
index 9d4b6f3..f9ed7ae 100644
--- a/implementations/SpruceID.json
+++ b/implementations/SpruceID.json
@@ -1,6 +1,9 @@
 {
+  "vendor": {
+    "name": "SpruceID",
+    "url": "https://spruceid.com/"
+  },
   "name": "SpruceID",
-  "implementation": "SpruceID",
   "issuers": [{
     "id": "did:key:z6MkgND5U5Kedizov5nxeh2ZCVUTDRSmAfbNqPhzCq8b72Ra",
     "endpoint": "https://vc.spruceid.xyz/credentials/issue",
diff --git a/implementations/Trinsic.json b/implementations/Trinsic.json
index 0ef9fd2..2502944 100644
--- a/implementations/Trinsic.json
+++ b/implementations/Trinsic.json
@@ -1,6 +1,9 @@
 {
+  "vendor": {
+    "name": "Trinsic",
+    "url": "https://trinsic.id/"
+  },
   "name": "Trinsic",
-  "implementation": "Trinsic",
   "issuers": [{
     "id": "did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU",
     "endpoint": "https://interop.connect.trinsic.cloud/vc-api/credentials/issue",
diff --git a/implementations/bovine.json b/implementations/bovine.json
index c45654a..e7bf090 100644
--- a/implementations/bovine.json
+++ b/implementations/bovine.json
@@ -1,6 +1,10 @@
 {
+  "vendor": {
+    "name": "helge",
+    "url": "https://codeberg.org/helge"
+  },
   "name": "bovine",
-  "implementation": "bovine",
+  "url": "https://bovine.social/",
   "issuers": [{
     "id": "did:key:z6MkuEij7SCByU2MNp6Ec4iiLWdqEepvxawtq5LgqbymdsXd",
     "endpoint": "https://bovine.social/w3c-di/issue/eddsa-rdfc-2022",

From a0b29ffb3b0b20abb8888b9dca929fea7f30cc97 Mon Sep 17 00:00:00 2001
From: Benjamin Young <byoung@digitalbazaar.com>
Date: Tue, 26 Mar 2024 15:12:36 -0400
Subject: [PATCH 4/6] Add initial context file.

This lays the foundation for eventually turning this metadata into VCs.

The context uses a mix of the W3Cs EARL vocabulary, DOAP (which EARL
uses), Schema.org, and a temporary `reporter` namespace mapped to
https://github.com/digitalbazaar/mocha-w3c-interop-reporter#
which is the primary software which consumes these details to generate
W3C test reports.

This context MAY (and likely should) move in the future either to that repo or
to some more permanent home.
---
 context.json | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)
 create mode 100644 context.json

diff --git a/context.json b/context.json
new file mode 100644
index 0000000..4138b43
--- /dev/null
+++ b/context.json
@@ -0,0 +1,52 @@
+{
+  "@context": {
+    "earl": "https://www.w3.org/ns/earl#",
+    "doap": "http://usefulinc.com/ns/doap#",
+    "schema": "http://schema.org/",
+    "reporter": "https://github.com/digitalbazaar/mocha-w3c-interop-reporter#",
+
+    "Software": "earl:Software",
+    "TestSubject": "earl:TestSubject",
+    "Organization": "schema:Organization",
+    "Person": "schema:Person",
+
+    "id": "@id",
+    "name": "schema:name",
+    "url": {
+      "@id": "schema:url",
+      "@type": "@id"
+    },
+    "vendor": {
+      "@id": "doap:vendor"
+    },
+    "email": "schema:email",
+
+    "options": {
+      "@id": "https://w3c-ccg.github.io/vc-api/#options",
+      "@type": "@json"
+    },
+
+    "tags": {
+      "@id": "schema:keywords"
+    },
+    "issuers": {
+      "@id": "cred:issuer",
+      "@container": "@set"
+    },
+    "verifiers": {
+      "@id": "cred:verifier",
+      "@container": "@set"
+    },
+    "endpoint": {
+      "@id": "doap:service-endpoint",
+      "@type": "@id"
+    },
+
+    "zcap": "reporter:zcap",
+    "capability": "reporter:capability",
+    "keySeed": "reporter:keySeed",
+    "supportedEcdsaKeyTypes": "reporter:supportedEcdsaKeyTypes",
+    "vcHolders": "reporter:vcHolders",
+    "vpVerifiers": "reporter:vpVerifiers"
+  }
+}

From 78b231b4017b124402de495233391b7ac50a8aeb Mon Sep 17 00:00:00 2001
From: Benjamin Young <byoung@digitalbazaar.com>
Date: Tue, 26 Mar 2024 15:23:16 -0400
Subject: [PATCH 5/6] Set types using new context terms.

---
 implementations/ApiCatalog.json       | 2 ++
 implementations/DanubeTech.json       | 2 ++
 implementations/DigitalBazaar.json    | 2 ++
 implementations/EWF.json              | 2 ++
 implementations/GrottoNetworking.json | 2 ++
 implementations/LearnCard.json        | 2 ++
 implementations/SpruceID.json         | 2 ++
 implementations/Trinsic.json          | 2 ++
 implementations/bovine.json           | 2 ++
 9 files changed, 18 insertions(+)

diff --git a/implementations/ApiCatalog.json b/implementations/ApiCatalog.json
index 9c1abe8..49d928a 100644
--- a/implementations/ApiCatalog.json
+++ b/implementations/ApiCatalog.json
@@ -1,8 +1,10 @@
 {
   "vendor": {
+    "@type": "Organization",
     "name": "apicatalog.com",
     "url": "https://apicatalog.com/"
   },
+  "@type": ["TestSubject", "Software"],
   "name": "Iron Verifiable Credentials",
   "url": "https://github.com/filip26/iron-verifiable-credentials",
   "verifiers": [
diff --git a/implementations/DanubeTech.json b/implementations/DanubeTech.json
index 650c6d9..e005210 100644
--- a/implementations/DanubeTech.json
+++ b/implementations/DanubeTech.json
@@ -1,8 +1,10 @@
 {
   "vendor": {
+    "@type": "Organization",
     "name": "Danube Tech",
     "url": "https://danubetech.com/"
   },
+  "@type": ["TestSubject", "Software"],
   "name": "uni",
   "url": "https://danubetech.com/tech/uni-issuer-verifier",
   "issuers": [{
diff --git a/implementations/DigitalBazaar.json b/implementations/DigitalBazaar.json
index 5809ac8..25f301e 100644
--- a/implementations/DigitalBazaar.json
+++ b/implementations/DigitalBazaar.json
@@ -1,8 +1,10 @@
 {
   "vendor": {
+    "@type": "Organization",
     "name": "Digital Bazaar",
     "url": "https://digitalbazaar.com/"
   },
+  "@type": ["TestSubject", "Software"],
   "name": "Veres (Q/A)",
   "url": "https://demo.veresewallet.dev/",
   "issuers": [{
diff --git a/implementations/EWF.json b/implementations/EWF.json
index 86ef11e..c45a7d4 100644
--- a/implementations/EWF.json
+++ b/implementations/EWF.json
@@ -1,8 +1,10 @@
 {
   "vendor": {
+    "@type": "Organization",
     "name": "EWF",
     "url": "https://www.energyweb.org/"
   },
+  "@type": ["TestSubject", "Software"],
   "name": "Energy Web Foundation VC-API",
   "url": "https://github.com/openwallet-foundation-labs/vc-api/tree/develop/apps/vc-api",
   "issuers": [{
diff --git a/implementations/GrottoNetworking.json b/implementations/GrottoNetworking.json
index 3933cb3..43369d8 100644
--- a/implementations/GrottoNetworking.json
+++ b/implementations/GrottoNetworking.json
@@ -1,8 +1,10 @@
 {
   "vendor": {
+    "@type": "Organization",
     "name": "Grotto Networking",
     "url": "https://grotto-networking.com/"
   },
+  "@type": ["TestSubject", "Software"],
   "name": "Grotto Selective Disclosure Libraries",
   "issuers": [{
     "id": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP",
diff --git a/implementations/LearnCard.json b/implementations/LearnCard.json
index d2d7d55..ea73b0c 100644
--- a/implementations/LearnCard.json
+++ b/implementations/LearnCard.json
@@ -1,8 +1,10 @@
 {
   "vendor": {
+    "@type": "Organization",
     "name": "LearnCard",
     "url": "https://www.learncard.com/"
   },
+  "@type": ["TestSubject", "Software"],
   "name": "LearnCard",
   "issuers": [{
     "id": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh",
diff --git a/implementations/SpruceID.json b/implementations/SpruceID.json
index f9ed7ae..8072fd8 100644
--- a/implementations/SpruceID.json
+++ b/implementations/SpruceID.json
@@ -1,8 +1,10 @@
 {
   "vendor": {
+    "@type": "Organization",
     "name": "SpruceID",
     "url": "https://spruceid.com/"
   },
+  "@type": ["TestSubject", "Software"],
   "name": "SpruceID",
   "issuers": [{
     "id": "did:key:z6MkgND5U5Kedizov5nxeh2ZCVUTDRSmAfbNqPhzCq8b72Ra",
diff --git a/implementations/Trinsic.json b/implementations/Trinsic.json
index 2502944..39296f6 100644
--- a/implementations/Trinsic.json
+++ b/implementations/Trinsic.json
@@ -1,8 +1,10 @@
 {
   "vendor": {
+    "@type": "Organization",
     "name": "Trinsic",
     "url": "https://trinsic.id/"
   },
+  "@type": ["TestSubject", "Software"],
   "name": "Trinsic",
   "issuers": [{
     "id": "did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU",
diff --git a/implementations/bovine.json b/implementations/bovine.json
index e7bf090..b2ba80e 100644
--- a/implementations/bovine.json
+++ b/implementations/bovine.json
@@ -1,8 +1,10 @@
 {
   "vendor": {
+    "@type": "Person",
     "name": "helge",
     "url": "https://codeberg.org/helge"
   },
+  "@type": ["TestSubject", "Software"],
   "name": "bovine",
   "url": "https://bovine.social/",
   "issuers": [{

From b20e692a5fc3042df2bbc2b6c7fd0624ac0050f7 Mon Sep 17 00:00:00 2001
From: Benjamin Young <byoung@digitalbazaar.com>
Date: Tue, 26 Mar 2024 15:33:15 -0400
Subject: [PATCH 6/6] Add support email address to Digital Bazaar info.

---
 implementations/DigitalBazaar.json | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/implementations/DigitalBazaar.json b/implementations/DigitalBazaar.json
index 25f301e..938a3c7 100644
--- a/implementations/DigitalBazaar.json
+++ b/implementations/DigitalBazaar.json
@@ -2,7 +2,8 @@
   "vendor": {
     "@type": "Organization",
     "name": "Digital Bazaar",
-    "url": "https://digitalbazaar.com/"
+    "url": "https://digitalbazaar.com/",
+    "email": "support@digitalbazaar.com"
   },
   "@type": ["TestSubject", "Software"],
   "name": "Veres (Q/A)",