From b9661c3137518b8099537a98d7e78cf53e34d3ed Mon Sep 17 00:00:00 2001 From: Joe Andrieu Date: Mon, 10 Jan 2022 21:15:44 -0800 Subject: [PATCH 01/21] first pass at REC artifacts (incomplete) --- rec/README.md | 81 +++++++++++++++++++++++++++++++++++++ rec/certifier.ed25519 | 7 ++++ rec/certifier.ed25519.pub | 1 + rec/hydroelec.did.json | 27 +++++++++++++ rec/hydroelec.ed25519 | 7 ++++ rec/hydroelec.ed25519.pub | 1 + rec/hydroelec.project1.json | 37 +++++++++++++++++ rec/meter1.ed25519 | 7 ++++ rec/meter1.ed25519.pub | 1 + rec/meter2.ed25519 | 7 ++++ rec/meter2.ed25519.pub | 1 + rec/un.rec2022.ed25519 | 7 ++++ rec/un.rec2022.ed25519.pub | 1 + rec/unfccc.ed25519 | 7 ++++ rec/unfccc.ed25519.pub | 1 + rec/verifier.ed25519 | 7 ++++ rec/verifier.ed25519.pub | 1 + 17 files changed, 201 insertions(+) create mode 100644 rec/README.md create mode 100644 rec/certifier.ed25519 create mode 100644 rec/certifier.ed25519.pub create mode 100644 rec/hydroelec.did.json create mode 100644 rec/hydroelec.ed25519 create mode 100644 rec/hydroelec.ed25519.pub create mode 100644 rec/hydroelec.project1.json create mode 100644 rec/meter1.ed25519 create mode 100644 rec/meter1.ed25519.pub create mode 100644 rec/meter2.ed25519 create mode 100644 rec/meter2.ed25519.pub create mode 100644 rec/un.rec2022.ed25519 create mode 100644 rec/un.rec2022.ed25519.pub create mode 100644 rec/unfccc.ed25519 create mode 100644 rec/unfccc.ed25519.pub create mode 100644 rec/verifier.ed25519 create mode 100644 rec/verifier.ed25519.pub diff --git a/rec/README.md b/rec/README.md new file mode 100644 index 0000000..1bb9d5d --- /dev/null +++ b/rec/README.md @@ -0,0 +1,81 @@ +# Artifacts + +Artifacts that illustrate Earth Program use cases and solutions + +## Renewable Energy Certificates +These artifacts help realize the Renewable Energy Certificates Focal Use Case. + +### Cryptographic Materials + +Many of the identifiers used in this set of artifacts are DIDs based on cryptographic public/private keypairs. This allows the artifacts' identifiers to be created offline and secured using cryptographic signatures. + +The public/private key pairs for these identifiers have been generated using Ed25519: + +* **HydroElec** — The producer behind the proposed project. + * private Key [./rec/hydroelec.ed25519](./rec/hydroelec.ed25519) + * public key [./rec/hydroelec.ed25519.pub](./rec/hydroelec.ed25519.pub) + +* **Smart Meter 1** — The first of two electric meters that issue signed VCs as evidence of electricity production. + * private Key [./rec/meter1.ed25519](./rec/meter1.ed25519) + * public key [./rec/meter1.ed25519.pub](./rec/meter1.ed25519.pub) + +* **Smart Meter 2** — The second of two electric meters that issue signed VCs as evidence of electricity production. + * private Key [./rec/meter2.ed25519](./rec/meter2.ed25519) + * public key [./rec/meter2.ed25519.pub](./rec/meter2.ed25519.pub) + +* **UN FCCC** — The issuing authority for REC2022 Renewable Energy Certificates. + * private Key [./rec/unfccc.ed25519](./rec/unfccc.ed25519) + * public key [./rec/unfccc.ed25519.pub](./rec/unfccc.ed25519.pub) + +* **UN Rec2022** (DOES THIS NEED TO BE CRYPTOGRAPHIC?) + * private Key [./rec/un.rec2022.ed25519](./rec/un.rec2022.ed25519) + * public key [./rec/un.rec2022.ed25519.pub](./rec/un.rec2022.ed25519.pub) + +* **Certifier** — A UN authorized project certifier. They review the project proposal from the producer and issue an REC2022 Certification verifiable credential. + * private Key [./rec/certifier.ed25519](./rec/certifier.ed25519) + * public key [./rec/certifier.ed25519.pub](./rec/certifier.ed25519.pub) + +* **Verifier** — A UN authorized project verifier. They review the project on-site and issue an REC2022 Verification verifiable credential, based the propsoal, the REC2022 Certification, and the evidence produced by the Project's smart meters. + * private Key [./rec/verifier.ed25519](./rec/verifier.ed25519) + * public key [./rec/verifier.ed25519.pub](./rec/verifier.ed25519.pub) + + +### Verifiable Credentials (VCs) + +1. Project Proposal + +This VC captures the automated metadata about the project and refers definitively for a descriptive PDF with additional details. [./rec/hydroelec.project1.json](./rec/hydroelec.project1.json) + +That file is a fully formed VC describing the following metadata: +* **producer**: HydroElec's DID for exercising control over this project +* **geographicLocation**: The GPS coordinates for the project location in Capetown, South Africa. +* **dateProposed**: January 30, 2022 +* **annualTarget**: The expected annual electricity production of 1000 MWh + +It is signed by HydroElec. + +2. Certifier Credential +3. Verifier Credential +4. Project Certification +5. Project Verification +6. Electricity Production + +### DIDs +Throughout these examples, we use a fictional did:example which uses an Ed25519 public key for both the method-specific identifier and all of its verification methods. + +#### 1. HydroElec + +The included files, [./rec/hydroelec.ed25519](./rec/hydroelec.ed25519) and [./rec/hydroelec.ed25519.pub](./rec/hydroelec.ed25519.pub) are the private and public keys, respectively, that control this DID: + +```did:example:AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX``` + +See [./rec/hydroelec.did.json](./rec/hydroelec.did.json) for the DID Document for HydroElec. + +2. UNFCCC +3. Certifier +4. Verifier +5. Project (as registered) + +### IIDs +1. The NFT class created by the UNFCCC +2. The particular NFT tokens minted \ No newline at end of file diff --git a/rec/certifier.ed25519 b/rec/certifier.ed25519 new file mode 100644 index 0000000..b0f1f36 --- /dev/null +++ b/rec/certifier.ed25519 @@ -0,0 +1,7 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACA7UyLgC6V9eFN7LZjFu3V4dXip6XYH6jvM/eJ4b1AOgAAAAJBx6Cj4cego ++AAAAAtzc2gtZWQyNTUxOQAAACA7UyLgC6V9eFN7LZjFu3V4dXip6XYH6jvM/eJ4b1AOgA +AAAEBKacBqhjtVdkuKjcdlXMncuXQL+M8sYrf0XqdKCU4wDztTIuALpX14U3stmMW7dXh1 +eKnpdgfqO8z94nhvUA6AAAAACUpvZUBMb3ZlcgECAwQ= +-----END OPENSSH PRIVATE KEY----- diff --git a/rec/certifier.ed25519.pub b/rec/certifier.ed25519.pub new file mode 100644 index 0000000..eb568ac --- /dev/null +++ b/rec/certifier.ed25519.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDtTIuALpX14U3stmMW7dXh1eKnpdgfqO8z94nhvUA6A Joe@Lover diff --git a/rec/hydroelec.did.json b/rec/hydroelec.did.json new file mode 100644 index 0000000..e6e6115 --- /dev/null +++ b/rec/hydroelec.did.json @@ -0,0 +1,27 @@ +{ + "@context": [ + "https://www.w3.org/ns/did/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "id": "did:example:AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX", + "verificationMethod": [ + { + "id": "#key-0", + "type": "Ed25519VerificationKey2020", + "controller": "did:example:AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX", + "publicKeyMultibase": "AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX" + } + ], + "authentication": [ + "#key-0" + ], + "assertionMethod": [ + "#key-0" + ], + "capabilityDelegation": [ + "#key-0" + ], + "capabilityInvocation": [ + "#key-0" + ] +} \ No newline at end of file diff --git a/rec/hydroelec.ed25519 b/rec/hydroelec.ed25519 new file mode 100644 index 0000000..cb73ffd --- /dev/null +++ b/rec/hydroelec.ed25519 @@ -0,0 +1,7 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACAsLXfvRCT3ogQ4d+xX4urieoK2KrR/e1qyVtH8rova1wAAAJA8CaqUPAmq +lAAAAAtzc2gtZWQyNTUxOQAAACAsLXfvRCT3ogQ4d+xX4urieoK2KrR/e1qyVtH8rova1w +AAAEDotYcJ9rL03efI6MOCLQcUq79A2yIy2wboWKTXCOVPLiwtd+9EJPeiBDh37Ffi6uJ6 +grYqtH97WrJW0fyui9rXAAAACUpvZUBMb3ZlcgECAwQ= +-----END OPENSSH PRIVATE KEY----- diff --git a/rec/hydroelec.ed25519.pub b/rec/hydroelec.ed25519.pub new file mode 100644 index 0000000..ea6e2ae --- /dev/null +++ b/rec/hydroelec.ed25519.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX Joe@Lover diff --git a/rec/hydroelec.project1.json b/rec/hydroelec.project1.json new file mode 100644 index 0000000..8817476 --- /dev/null +++ b/rec/hydroelec.project1.json @@ -0,0 +1,37 @@ +{ + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://www.w3id.org/earth/iid/v1", + "https://unfccc.int.example.com/ns/2022/rec/v1", + ], + "id": "https://hydroelec.example.com/projects/1", + "type": "REC2022", + "producer": "did:example:AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX", + "geographicLocation": { + "lat" : -33.918861, + "long" : 18.423300 + }, + "dateProposed": "2022-01-30", + "annualTarget": 1000, + "linkedResource": { + "id": "proposal", + "path": "proposal", + "rel": "detail", + "type": "iid:ResourceDescriptor", + "resourceFormat": "application/pdf", + "compression": "gzip", + "endpoint": "https://www.w3id.org/earth/artifacts/hydroelec.proposal.pdf.gzip", + "proof": { + "type": "iid:hash", + "stage": "raw", + "value": "asdrioqweindcuioqweroiasdcnuieasdnjcjasdkf", + } + }, + "proof": { + "type": "Ed25519Signature2020", + "created": "2022-01-30T03:50:55Z", + "proofValue": "z5SpZtDGGz5a89PJbQT2sgbRUiyyAGhhgjcf86aJHfYcfvPjxn6vej5na6kUzmw1jMAR9PJU9mowshQFFdGmDN14D", + "proofPurpose": "assertionMethod", + "verificationMethod": "did:example:AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX#key-0" + } +} \ No newline at end of file diff --git a/rec/meter1.ed25519 b/rec/meter1.ed25519 new file mode 100644 index 0000000..65812c1 --- /dev/null +++ b/rec/meter1.ed25519 @@ -0,0 +1,7 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACD/pJ6UkZenkc/0/2lSP/VXWJwZFnqWCAytk+Hc4MSZEAAAAJCPYwBtj2MA +bQAAAAtzc2gtZWQyNTUxOQAAACD/pJ6UkZenkc/0/2lSP/VXWJwZFnqWCAytk+Hc4MSZEA +AAAEAojb2NXLc3uAs9dtPO62l0tJI1yuqcvgiZT83HQwnkx/+knpSRl6eRz/T/aVI/9VdY +nBkWepYIDK2T4dzgxJkQAAAACUpvZUBMb3ZlcgECAwQ= +-----END OPENSSH PRIVATE KEY----- diff --git a/rec/meter1.ed25519.pub b/rec/meter1.ed25519.pub new file mode 100644 index 0000000..e4e5edb --- /dev/null +++ b/rec/meter1.ed25519.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP+knpSRl6eRz/T/aVI/9VdYnBkWepYIDK2T4dzgxJkQ Joe@Lover diff --git a/rec/meter2.ed25519 b/rec/meter2.ed25519 new file mode 100644 index 0000000..8eb419c --- /dev/null +++ b/rec/meter2.ed25519 @@ -0,0 +1,7 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACBpWXdInKmw9ePyqFADIN7B+6rf1meWZVWmg+Y+t+PzwAAAAJBYWv1ZWFr9 +WQAAAAtzc2gtZWQyNTUxOQAAACBpWXdInKmw9ePyqFADIN7B+6rf1meWZVWmg+Y+t+PzwA +AAAEBJV8EkMbabPwEZsfCgsV4b5Al0YQkVrt/Wx0XCfg5/BmlZd0icqbD14/KoUAMg3sH7 +qt/WZ5ZlVaaD5j634/PAAAAACUpvZUBMb3ZlcgECAwQ= +-----END OPENSSH PRIVATE KEY----- diff --git a/rec/meter2.ed25519.pub b/rec/meter2.ed25519.pub new file mode 100644 index 0000000..81b7628 --- /dev/null +++ b/rec/meter2.ed25519.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGlZd0icqbD14/KoUAMg3sH7qt/WZ5ZlVaaD5j634/PA Joe@Lover diff --git a/rec/un.rec2022.ed25519 b/rec/un.rec2022.ed25519 new file mode 100644 index 0000000..7aee61d --- /dev/null +++ b/rec/un.rec2022.ed25519 @@ -0,0 +1,7 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACC4S9KYjlfbxu1bgAlb8vZWZR+tMlQgIvUeZOJkZbzQ+gAAAJCVSM0GlUjN +BgAAAAtzc2gtZWQyNTUxOQAAACC4S9KYjlfbxu1bgAlb8vZWZR+tMlQgIvUeZOJkZbzQ+g +AAAEB1KOMm8qXMdG4BY/FrYBgsQOfhSgwex379jut/dSPUVLhL0piOV9vG7VuACVvy9lZl +H60yVCAi9R5k4mRlvND6AAAACUpvZUBMb3ZlcgECAwQ= +-----END OPENSSH PRIVATE KEY----- diff --git a/rec/un.rec2022.ed25519.pub b/rec/un.rec2022.ed25519.pub new file mode 100644 index 0000000..8185063 --- /dev/null +++ b/rec/un.rec2022.ed25519.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILhL0piOV9vG7VuACVvy9lZlH60yVCAi9R5k4mRlvND6 Joe@Lover diff --git a/rec/unfccc.ed25519 b/rec/unfccc.ed25519 new file mode 100644 index 0000000..3bc83ab --- /dev/null +++ b/rec/unfccc.ed25519 @@ -0,0 +1,7 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACCmafpfkbgGzJHjUj1LBaFxH+tRUh4uMG0sb0sEsIPRNQAAAJBWPBLRVjwS +0QAAAAtzc2gtZWQyNTUxOQAAACCmafpfkbgGzJHjUj1LBaFxH+tRUh4uMG0sb0sEsIPRNQ +AAAEBSeKllBJdnRPSX40p5pUgkN+Gy6x6+qMtYfrHBgCKMT6Zp+l+RuAbMkeNSPUsFoXEf +61FSHi4wbSxvSwSwg9E1AAAACUpvZUBMb3ZlcgECAwQ= +-----END OPENSSH PRIVATE KEY----- diff --git a/rec/unfccc.ed25519.pub b/rec/unfccc.ed25519.pub new file mode 100644 index 0000000..b0098fc --- /dev/null +++ b/rec/unfccc.ed25519.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKZp+l+RuAbMkeNSPUsFoXEf61FSHi4wbSxvSwSwg9E1 Joe@Lover diff --git a/rec/verifier.ed25519 b/rec/verifier.ed25519 new file mode 100644 index 0000000..d987b51 --- /dev/null +++ b/rec/verifier.ed25519 @@ -0,0 +1,7 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACAfHoj92pxNPGOVt2FJDAL4CZud+0D5BoJEM+SMfNYiUgAAAJC/s9Omv7PT +pgAAAAtzc2gtZWQyNTUxOQAAACAfHoj92pxNPGOVt2FJDAL4CZud+0D5BoJEM+SMfNYiUg +AAAEBKNkIs1ArQmwedxzAZWmPwCfpOUcordJvIUznIYfrz3x8eiP3anE08Y5W3YUkMAvgJ +m537QPkGgkQz5Ix81iJSAAAACUpvZUBMb3ZlcgECAwQ= +-----END OPENSSH PRIVATE KEY----- diff --git a/rec/verifier.ed25519.pub b/rec/verifier.ed25519.pub new file mode 100644 index 0000000..37bcdfd --- /dev/null +++ b/rec/verifier.ed25519.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB8eiP3anE08Y5W3YUkMAvgJm537QPkGgkQz5Ix81iJS Joe@Lover From f9e6ab831b4a2ce87779c349a3f9695eef90c62a Mon Sep 17 00:00:00 2001 From: Joe Andrieu Date: Mon, 10 Jan 2022 21:16:55 -0800 Subject: [PATCH 02/21] moved README.md back to top --- README.md | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++- rec/README.md | 81 --------------------------------------------------- 2 files changed, 80 insertions(+), 82 deletions(-) delete mode 100644 rec/README.md diff --git a/README.md b/README.md index ab10d5b..1bb9d5d 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,81 @@ -# artifacts +# Artifacts + Artifacts that illustrate Earth Program use cases and solutions + +## Renewable Energy Certificates +These artifacts help realize the Renewable Energy Certificates Focal Use Case. + +### Cryptographic Materials + +Many of the identifiers used in this set of artifacts are DIDs based on cryptographic public/private keypairs. This allows the artifacts' identifiers to be created offline and secured using cryptographic signatures. + +The public/private key pairs for these identifiers have been generated using Ed25519: + +* **HydroElec** — The producer behind the proposed project. + * private Key [./rec/hydroelec.ed25519](./rec/hydroelec.ed25519) + * public key [./rec/hydroelec.ed25519.pub](./rec/hydroelec.ed25519.pub) + +* **Smart Meter 1** — The first of two electric meters that issue signed VCs as evidence of electricity production. + * private Key [./rec/meter1.ed25519](./rec/meter1.ed25519) + * public key [./rec/meter1.ed25519.pub](./rec/meter1.ed25519.pub) + +* **Smart Meter 2** — The second of two electric meters that issue signed VCs as evidence of electricity production. + * private Key [./rec/meter2.ed25519](./rec/meter2.ed25519) + * public key [./rec/meter2.ed25519.pub](./rec/meter2.ed25519.pub) + +* **UN FCCC** — The issuing authority for REC2022 Renewable Energy Certificates. + * private Key [./rec/unfccc.ed25519](./rec/unfccc.ed25519) + * public key [./rec/unfccc.ed25519.pub](./rec/unfccc.ed25519.pub) + +* **UN Rec2022** (DOES THIS NEED TO BE CRYPTOGRAPHIC?) + * private Key [./rec/un.rec2022.ed25519](./rec/un.rec2022.ed25519) + * public key [./rec/un.rec2022.ed25519.pub](./rec/un.rec2022.ed25519.pub) + +* **Certifier** — A UN authorized project certifier. They review the project proposal from the producer and issue an REC2022 Certification verifiable credential. + * private Key [./rec/certifier.ed25519](./rec/certifier.ed25519) + * public key [./rec/certifier.ed25519.pub](./rec/certifier.ed25519.pub) + +* **Verifier** — A UN authorized project verifier. They review the project on-site and issue an REC2022 Verification verifiable credential, based the propsoal, the REC2022 Certification, and the evidence produced by the Project's smart meters. + * private Key [./rec/verifier.ed25519](./rec/verifier.ed25519) + * public key [./rec/verifier.ed25519.pub](./rec/verifier.ed25519.pub) + + +### Verifiable Credentials (VCs) + +1. Project Proposal + +This VC captures the automated metadata about the project and refers definitively for a descriptive PDF with additional details. [./rec/hydroelec.project1.json](./rec/hydroelec.project1.json) + +That file is a fully formed VC describing the following metadata: +* **producer**: HydroElec's DID for exercising control over this project +* **geographicLocation**: The GPS coordinates for the project location in Capetown, South Africa. +* **dateProposed**: January 30, 2022 +* **annualTarget**: The expected annual electricity production of 1000 MWh + +It is signed by HydroElec. + +2. Certifier Credential +3. Verifier Credential +4. Project Certification +5. Project Verification +6. Electricity Production + +### DIDs +Throughout these examples, we use a fictional did:example which uses an Ed25519 public key for both the method-specific identifier and all of its verification methods. + +#### 1. HydroElec + +The included files, [./rec/hydroelec.ed25519](./rec/hydroelec.ed25519) and [./rec/hydroelec.ed25519.pub](./rec/hydroelec.ed25519.pub) are the private and public keys, respectively, that control this DID: + +```did:example:AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX``` + +See [./rec/hydroelec.did.json](./rec/hydroelec.did.json) for the DID Document for HydroElec. + +2. UNFCCC +3. Certifier +4. Verifier +5. Project (as registered) + +### IIDs +1. The NFT class created by the UNFCCC +2. The particular NFT tokens minted \ No newline at end of file diff --git a/rec/README.md b/rec/README.md deleted file mode 100644 index 1bb9d5d..0000000 --- a/rec/README.md +++ /dev/null @@ -1,81 +0,0 @@ -# Artifacts - -Artifacts that illustrate Earth Program use cases and solutions - -## Renewable Energy Certificates -These artifacts help realize the Renewable Energy Certificates Focal Use Case. - -### Cryptographic Materials - -Many of the identifiers used in this set of artifacts are DIDs based on cryptographic public/private keypairs. This allows the artifacts' identifiers to be created offline and secured using cryptographic signatures. - -The public/private key pairs for these identifiers have been generated using Ed25519: - -* **HydroElec** — The producer behind the proposed project. - * private Key [./rec/hydroelec.ed25519](./rec/hydroelec.ed25519) - * public key [./rec/hydroelec.ed25519.pub](./rec/hydroelec.ed25519.pub) - -* **Smart Meter 1** — The first of two electric meters that issue signed VCs as evidence of electricity production. - * private Key [./rec/meter1.ed25519](./rec/meter1.ed25519) - * public key [./rec/meter1.ed25519.pub](./rec/meter1.ed25519.pub) - -* **Smart Meter 2** — The second of two electric meters that issue signed VCs as evidence of electricity production. - * private Key [./rec/meter2.ed25519](./rec/meter2.ed25519) - * public key [./rec/meter2.ed25519.pub](./rec/meter2.ed25519.pub) - -* **UN FCCC** — The issuing authority for REC2022 Renewable Energy Certificates. - * private Key [./rec/unfccc.ed25519](./rec/unfccc.ed25519) - * public key [./rec/unfccc.ed25519.pub](./rec/unfccc.ed25519.pub) - -* **UN Rec2022** (DOES THIS NEED TO BE CRYPTOGRAPHIC?) - * private Key [./rec/un.rec2022.ed25519](./rec/un.rec2022.ed25519) - * public key [./rec/un.rec2022.ed25519.pub](./rec/un.rec2022.ed25519.pub) - -* **Certifier** — A UN authorized project certifier. They review the project proposal from the producer and issue an REC2022 Certification verifiable credential. - * private Key [./rec/certifier.ed25519](./rec/certifier.ed25519) - * public key [./rec/certifier.ed25519.pub](./rec/certifier.ed25519.pub) - -* **Verifier** — A UN authorized project verifier. They review the project on-site and issue an REC2022 Verification verifiable credential, based the propsoal, the REC2022 Certification, and the evidence produced by the Project's smart meters. - * private Key [./rec/verifier.ed25519](./rec/verifier.ed25519) - * public key [./rec/verifier.ed25519.pub](./rec/verifier.ed25519.pub) - - -### Verifiable Credentials (VCs) - -1. Project Proposal - -This VC captures the automated metadata about the project and refers definitively for a descriptive PDF with additional details. [./rec/hydroelec.project1.json](./rec/hydroelec.project1.json) - -That file is a fully formed VC describing the following metadata: -* **producer**: HydroElec's DID for exercising control over this project -* **geographicLocation**: The GPS coordinates for the project location in Capetown, South Africa. -* **dateProposed**: January 30, 2022 -* **annualTarget**: The expected annual electricity production of 1000 MWh - -It is signed by HydroElec. - -2. Certifier Credential -3. Verifier Credential -4. Project Certification -5. Project Verification -6. Electricity Production - -### DIDs -Throughout these examples, we use a fictional did:example which uses an Ed25519 public key for both the method-specific identifier and all of its verification methods. - -#### 1. HydroElec - -The included files, [./rec/hydroelec.ed25519](./rec/hydroelec.ed25519) and [./rec/hydroelec.ed25519.pub](./rec/hydroelec.ed25519.pub) are the private and public keys, respectively, that control this DID: - -```did:example:AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX``` - -See [./rec/hydroelec.did.json](./rec/hydroelec.did.json) for the DID Document for HydroElec. - -2. UNFCCC -3. Certifier -4. Verifier -5. Project (as registered) - -### IIDs -1. The NFT class created by the UNFCCC -2. The particular NFT tokens minted \ No newline at end of file From 7cfb72df8859f5407ed20b96303571f536d7c5de Mon Sep 17 00:00:00 2001 From: Joe Andrieu Date: Mon, 10 Jan 2022 21:18:39 -0800 Subject: [PATCH 03/21] added the detail that the project VC is not yet actually signed --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1bb9d5d..f4162a7 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ Artifacts that illustrate Earth Program use cases and solutions ## Renewable Energy Certificates + These artifacts help realize the Renewable Energy Certificates Focal Use Case. ### Cryptographic Materials @@ -52,7 +53,7 @@ That file is a fully formed VC describing the following metadata: * **dateProposed**: January 30, 2022 * **annualTarget**: The expected annual electricity production of 1000 MWh -It is signed by HydroElec. +It is signed by HydroElec. (Or, it will be. Currently the proof is faked.) 2. Certifier Credential 3. Verifier Credential From d1acaff117ef257940c89a5042afe15c2acdd3b5 Mon Sep 17 00:00:00 2001 From: Joe Andrieu Date: Fri, 11 Feb 2022 08:34:03 -0800 Subject: [PATCH 04/21] added project1 certificate --- rec/hydroelec.project1.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rec/hydroelec.project1.json b/rec/hydroelec.project1.json index 8817476..13adbde 100644 --- a/rec/hydroelec.project1.json +++ b/rec/hydroelec.project1.json @@ -5,7 +5,7 @@ "https://unfccc.int.example.com/ns/2022/rec/v1", ], "id": "https://hydroelec.example.com/projects/1", - "type": "REC2022", + "type": "REC2022/Proposal", "producer": "did:example:AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX", "geographicLocation": { "lat" : -33.918861, From 2f009b7a2642366b6be8cb5f36c1ccf108518fba Mon Sep 17 00:00:00 2001 From: Joe Andrieu Date: Fri, 11 Feb 2022 08:35:48 -0800 Subject: [PATCH 05/21] added artifacts.isf --- Artifacts.isf | Bin 0 -> 76860 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Artifacts.isf diff --git a/Artifacts.isf b/Artifacts.isf new file mode 100644 index 0000000000000000000000000000000000000000..020595d1d8a46a84d6c7f9441f402d3e5aeb1f85 GIT binary patch literal 76860 zcmeIb2V4`&8#cNj2&kxl^b$g`cSHpR0YMN^QNRl7K|n<*(gd+!Ibz4&d+(@-z4vnL z0v51hSFC`jXzu&&W|Ij?$fBI@eD~h}@Z0Rn?#wf9nR#|*wh%mGL_~Nnl$!dp=x|42^QM#rMe!z6PE<|9L|a?Gu#jk5+pb~p!5+c!!H|=p z)F{g4>FYpVyscB1lI|SiXty)#Py0&qR8pd{3=2mtU4x*Ekt`>EOSC`MTrqpzKd|jUC zEM*D8R{?2JU~%B7@ztwnXlhlhRvj|z)1lOOe7>4Gze*K#b;vyy&Qt2TRrIV{xM|ex z5v*w)qi;81?piII4tq`+_}%(s4Rzd=L$R;}AOIJR~7=;-Oy z$-A?EK+j&i`}FM>5*jvm$k6a%aq$Tw6O%?IPx^au>XfO|rq7$dVBw<0OO`HMw|>LM zO`ErD-IlR8bKm|02M--Sedg@B^A|2&x_s+)R(8&vyZ7!td7A(1`HPpYUcdSD`AcC@ z@z;`X-%&3f#b?x#XjVoqXdFB>b#=bFChEmgON5QDt6s&bg@&G656$41+SYaxwDdd7 zUAyO0RhyQ69}Nb@-mGS5YyYIqCsd8rjGJN;e@iooVp6^CQ`&qUIFGMOxlmuf*Izfj zTG_3UO^-XbPJi23Wmfh-8@wB3de-Tw-KVL~;V%oE8*VPGvvrP3Ms!9u%?~>diKvTN zyqi6O9+lQ@{yz8T(oqLTekq8%WBDcb&h%r!yP6bzzTax{gB`Q0cS#K~>D9Ag&1&sZ z#wOp;*r(sawaOoE=I4Gye(L)2{e!Q4a%;^|^SbWhlx5rbW`>>b{L3d6T3SwVcG)@X z?L+fDcXnFTJFwrVPEWt*k9)`S_Kx>;c>Cy3`oLcXk(*0@o)J;wLqyc{HHr2kI~%ud zYOe9)c$biw6JrYQJSt3&KKJ?CfqsFb{Jf^V*SKe-ImsYgM4jH5DWX;%O!=st@+qL? zmx+7zsOi7#ZU0)hk1wJIuW6c?*`uSHoK?$OnQQv|ryA$7+`FabyzvQ%iw_xP6VN2H zqs`+e^@JYx_YXHa+q}Qe&*iOlZdmO3@ZH5v=P&NeJZBvm^;g^7A6!k+53h6Rv2)n$ zxhr<`x@);2q3ZIU+W-9AyfdnMO{e7plCEq1b75cDiCGb${da8|n6c{IAQAQSjj>bs z#;O~ezfOE|bANlo786}v9u->8DQq2`5O_@O>G>CL1CAZpH!n_qkA3&g+EJdZ*R6Qp z^TXTzkvmWKzwaJr{MUTXjQUY)bmuPnyh|r(qQ$U>ImQw1*R}9{vA649guMn6zi} z3}$;cAIX_DC~0bD^oG1qEiak3nY`h1aCl$0)SlO})$3JRYq*K)l9ZsIS5ES}yS^6*Ak4NV(UFEI4;blzb za>v{QKaQ{PH#&P#Z%)Sv^mwb=fZafTHmQ!%WB6)hcklJb!&BK z>0i$_v(EW8&ALX%4%xqSNT;>^&#f2KJ(SzV_>I4fy5R58*%#lvf1!RZ!ctQ+dfKj< zE}!m?FWKJl1kM|qHoZa>= z7g1BUu6Wa+uXW?8!8iAHdOXYaKzRQEjk!m?lB%zW?Nl{w?3PYz_Ghij%)XK{+}_UH zeCyNdo7LC42E1=@{rak(HGGWH#oex3JKQ*$loxX0A>SpwuyEaqH;(;$T*EB}@7jE7^Uig-O-jE6U4ORi(vAn7>z^gs z&bg9oRq$}z*i;eqYfPYss^)Y3SKWO_J^Qt}HALsS?TCkl^Dj-_7^Y#;yInx-nY%68 z<#?6WO*Sh1*%cUMe#$3<4bN>0Th33sk^0Cd+xpAVyBk-JnS48OYWjsmo7c@0UKDIz z6@GieejoEY`!mi(3{G>j_0{da$Mt>fky?EI$mF#8Q_c&_XD7QS)IT%kWWOsTM!4L| zpV=#V+8CdW!;7Vy6`$^_~^-KkxK0-mv;f!jb`&CsAb_hH_S46moamX zA9X1xVdE&{ZTof|c${GPz5T*OlX>^Qe-G6RA6hgzmHHm)-Dl|hAgA;9FON)hd_K9~ zK%EEMTVDvZ9beNf;A^Y6CnBnJ{16efYm1D zd{5Xhn|E<<()u1tTW0idn%cKhoqm70oq9H6cyynmvwc1pWIxDDY!p#EqW;n*8|K;x zf+qItr1@gN@pTjQH)dqnrh261bXvJ!a?I0q83ErPZ*us$&dkEo!N$AE#)a9g;bvzO z|2lNRcKni;_t&(y`FL~T^Tsc{&cA5wH!tRPNdw`hW~u9{ef+1M-<#7pA$Jab8~e&6 z#W&D#pUI9^Mu+wu44Cz_`mUf8%a0yBnHTU({}t~|!<;?A8Y>n}d=UL|*^87qy}Ay5 z)5_B3kZo$z#nFlBox66(4fvF^I&SE-kCUPWFJ{eup|{6IoA=7=W&ab?64&0^taH7g zds08&x`qoE7>5NFbnj+&GX8_>%#@5rDc5I+s3+c|MAX@=??H!OEY-g`c9Ge_d4uPU zySeQjtC{A(yrI)hUWm)fi7T0X#;^6u##hWn)V=KIR`g?4;q{VErA>b<=ybud5ih)r z#m8|2Q*tJ()cR!bVBhl%$tzbb+;{A3YBR@Zp9m|H^X{JOHKW>oH8`F&&ojgG@~e|} z87n5%>QH0UkZG+}w(;AWabWkn-b3GyIbTD4s@l7l6}v4imcG4NIPe?w`ccta%U=`g z>n2aHzeY{GX*Vlz&$RsZ5k^DTMbx=ojoS-8{+#>C;=#EY_N^1mF7_SRuGjs#!ZCTP z_T}EGz5UF%;)l%_HM+QdZ^s4Ryh(AL#$7OK_cbPWW^&OxDrN9%m%{pQQc7wYi73m> zmxgS*JlCeg*T0e8JGbJg2ThuYDCeJja(-;L(@F0!+mkXMm!O+E$oq#+t>wZh12i{x zP8%HkZtk_benS^6x|MhRN!PAc)3oQg+_z~Lpgn&=`{d+aUrVj-*D5VZc?R9&>9!M7 zMbxw2*(cs!j{ZqyxzvIb-{t4nHoqqB^Uk{#)8p=~*{7E^_HI~bkzvof`B%qzx+j0% zvIYE9^G3=`7(3a(rPLrW(_i>F{->E+#>Y*Q?GFdsY1u#U^z^x1+?qUFT<=9f_vSm2 zvo`(X;Xmog=*LNKN7Wj)`t!rZUK79BKdS1S{mkFZ#v^!|@a`bXki`>o(>`2`dwuJ0 z_@)*|*4^tYqUzP$w$WF8LYCleX~($i?e#lf+>jp7-Zr6Tw^?Ji`-Zs#PfQ-;`tiXTi*>n!JI$;D1DPAvznt&#=axF=?`oBEG40&Q z&i)o7c-LPB1}slIA3L()y*DZMil+@9{^V*m2mf}xuZ+*HS8smnq-&49|Lo3K-q_XTTdj?Q zw_SerCBvk&&f3}feLNZ;_slpn$mz}-fp+58R=wZ#t9_~dq%)>}zc$}xv}FF8UiHrf znr+fF(cH4*L-mfM?Q<>#C)CJ1-|ot##v0uK^mz*2cZ?$E(7Frq!F(coXA!_2{nU{J8P$u8ghXwIwg`&BKAYM_X?F z=lPH!AJzs9F?rp*&>+;!!Ld!+h_(?ymbW&|>fc>+Y{7#))6+)A{)`&u<&wB|sL_3G zqdDOj?uUPAEv>WgKm#LhGk&Vg7Uvp$kKZb+?(DW>{f%Z#pZ8hRyLlI?`?>KyJ~wl* ziBIo$vQxs?E*&nk8y>q1Qg+!xi(T2q@+D$utABpf zyyKyK2S@X1d$asEO!uWByE>>>6>c2khGNs6D z`HZ-ALHDn!*<@UA9h=@qty-ru+gf$seKXU{vg)grJ{zvbwaPwPf2;O}mMvzCa%s7R zU+ux0RnUm))bbTkvAH73^Vsmb@WZK#1rx%ZOO13+wLMjB*|qBA11w=aeCRZOJ&IPF1!f0BG6N$n>5kuf;=B653rDC}mnlvOFD4lNI<+2p#m227>aoYb z(sBF$x?}oK>+y^;-o}y``VDG(n4Mjn+w-}`^{MCXEG|yjH@nT%^H)y{p3-jb`4)Ft?F;I*DdFQ3@Uf)?kg$)~E`EhLV+9qdBi>C}X%hy>mrTTcy z!Gfi)A8vzLV529#-%ahKFE{(u^vD6DB`HlFTa0|)VcgOeON_eb#nsswv|>4db1B*ALmRKCrZZvgVY+f$thsZ8GlW%MS}K9T}V#%9|Pby_fIQ zDi=y^+8$VP)8L1GUc))#@<;z{_-Im5qhtQwi$>oYbI&k#!v4wm!&aS4UKXBrt;h4W zFwzYE?Tzs*ozKQbs1=-E+b+M;#|!fx zoiKi#H+Hz`!ci7G?9)fMe4Jk5|0{Kt*=M+3&)E9zsM(sJ2aS8Rx49j5(DD8p+lZHG zBls^jj(pqXw(;`FYqcKwo7Ot{CF@5oqZ#khGat0;d?@v)Z)TnMJ)d>Fc*SmFi8|y?^GpeWB0LCRRBGQOnvKNDWQvwSbzr?iS_4M|WL*qtqEYFKrp%{p7md;Pc^U zKN>B2I@#;Kf`YkezkuMWmod_qc0MRyFE-eZe)qJ<#w-_f2@>TWuco zsr{@~cXd-fCFB(xeYD!H#=+OmSG;_?Y~!vEBIPzZsr6MeVld`W$MqDJ#mO&D?DsAu}f|A7tm<1rPag zlU`oBW3YW>-JQNe%SmAu4 zo87ECU$zeVa_CEE%dX?6uZpX+^V_(3j*(Bc_iuRK>_-z%vm>LLMuxaoqgH<^(!FRk z^-ZJU=X$NOI5v4_kfH`JwY93v z1OvAw#f1*)`Sa&z)Ui$KIz`7upYfv;ca*$i>>PCfvT_kRLIus^f?2n+JYcch_OUmK`TCLRLTh*6LimGZKoMjm# zC|&lnX+onTmV&@j(M>PDAGF`Q_t17zmJ8oIyh-kz;yN3~Dw6|Y0mo$oaFQ{Y4F)o@ z2e#j+zourD_QtvApR7MV%{ac%P#$pD_C$~U6K`2W<-A@$I%#mH=i#nemzxOHcRPhx z#PzQc^ZoVl%-cu(R^OZN9i3>NF=MW6utEFF+i#D2_r61m*<)^K)ZGa463s`$^zz(x z4IR1Xc#CRUBMwp{gI}*&`KFAG-X5Gk?#%OrwQ@&X+;(=DiNm}*CXXYcyj}u#JMv_k z=_`Td&6M3cZ1?@}T7BHVZo%@HIT|hIzwYzPN<_^a(i0{@jwcHFy~kK??f+(3m%R`F zd2w;?f*P64%mRw}SvPFfteak+!fl67qoL7FoxF#SSpH<$J1^^Jvo1%jRSz9)n!96` zoyY9%cb0ht3_P&rA9L;HNz~7w{8d>;Ew=k?>HK}%_Lv%5&z~LZ`FQTh>v4~qK^Ln5 zHX>?G*6Nbx2Y0GxAMMzF{*bL+37cOe8TN>19O{_I4@q2_RdXfpL)z7p+QX{rEzH_6 zpm!ZV-o`E#OUw;UE#BfBcYEv8g*V4!wA}Eq^$B}l{liDR&9?UPIEbBnOZAUkQG z*TI|imztyxs5f%SMeWeJ6ZI4MxAuA-+4?&5^vga+Glu&d8rf-2zfP%*&t7Tnqc^HY zcH9@i!fZGDL>(`uu7@4<+qP~o$FrloPuHmSFo5@RSs%Xt{^Ci6`iJz!y}4D@X6UA* zrGb}o=UjAqbvEHc5Db@(*8!cLJt}E&aC@&dUE?;C#Cazrv~xG>Smpe)MY-d0`&Q+p z-f|7Is1@~eU)|gGcQ<^#wti&ViI&^n+%d_W=v$hZKi>E8@P-R*j0UI9Z=Uj`#;0aK zHS3C~Q?t%_HJgx-J8NQoK<&RHFYg`DRj8>xL|f}x)zY_-_Wz{VIp5!~(=1jiyQy37 zgcaioe`Jr1>QmbC=khIq-lLljUvGAyN$ItW2GiYd-kZ{WvqOQu>F%gYRhFi7xIO3o z@U~(1cT5fQ88vZ!s%7YeK+Q>S`}SKrXs#)*}!G>ruXl^s*T@{*(r|NwYq!71Xd5JZD^LTCo_L# z=a|)-Kcrl1XffbillbaC4mRD_=|$>&Z=L z?Arb3PZNiaKE#_juX(?_;N{inNuHyZ`gIk&AKu}!w{3pG-iCWyJead)j$`8_{!X{Z zr&B*91UBj5(`aG!$V8p#58JFQtreH)!%nBOn;cSf9KAiw%5lFk2cs*CuC9If>Cx| zsz+*XUb#IhIevTFMO$FZrR6m><&~X?DzS97{P=g$lwXsY!Mx>5_VyV=2SubrbT#x( z{E*Nt&AHb1n{$1A9FB*L?Ux@zrMGIAw$$S>C~5{PE~jLn0YnbF`!MAzNX(}jRkAco*q6?{nb~~ zx=ZWq`{(TY+a}mPI;1^L?)5;Q>d}$edYWYRZ}{{>LEP&_etFL<9Uu1^lQt#BBwuY; z4_Cox5mmKz(r};Mw{{h7e|9wOs!o-mQwJGExz!wDSIeQak)X!7hqvDT=-e){TUWPK zTRr=6fxEtr`(|S?yIxw-Nx|BLP4@=OyJNW9yY7Q^Ueo$67#(WaZ=$oNcUmjAP4{)y zn+y$@Uu5f-(QM_an5VUB2fi)dzdNvB|Fgk|zF2J1qIecDXKJt5T`*uFT)8i5b_1gB zBccj*d+eXE(f(4s;;~yAYTdUAYW~&uXL8O&YcJCarrWH?Z`;sogFw-3iJ)Y*AuMAzXiD|R-n+tG2>jfwmQubveZ1oh1+9dx0|2G?#auB~hX{;q1i zQxhmnzmWYfdkN@zZj49g2i=DJ7>S@`wJ+ zn^CbPbq1~qDz<3U;h(^L+56tMyEy5bcCW-?=Odan&v~|L^GwsUdqs^t#kdqdc-FA# z=2;=r9a?YOkUnG9&G|RI{QDhAsJngQ>=Sz?{oI~!`CY?HL{0n#Mt0dZCIlub7e&;^ zf#{FG-1k*ae(L(L(?#QbuSL|jZ2_sjJZi48J`v_z?LvebG>o2Yrd_}8zGwF188ti~ z4LEY}SmrVt``9BbJ6t@n%=N7HPv3Fbd!II{(b*)uRb=Z<8|IwSuY0ecpI>hOG`HR` zw&^oku;94KC(Yu&=ZEh-dV4^ix5KEF`kFl#Z2OrPH|yAx}20IBD*N zvo7x~fF+E)a*y_%nG)(g+xOk;l#;`R_v@QH-@jDm|e~b*R?Mu+x~ToC#*gFi-q@?uG_t|6O)HeeLDZDpzDI^-uM5>+LQmn zdHb!*zmp0BwVw6z3QWpgn5t#v>87uBq@#X!9*0e{LF*~Qx4TUDx)<5+ySJ%URGpcI zU32F0zWg=E?!xA+(4o#Hr!L;&6V`rV#4WFx3yuwPq`po~&iOuIRx78TV?w@E$$SyH z^nAho-7AJ1=$ul#3U02t?rbNbG-`>c^TX=>Q#@_tn;2+5%Y7%h>}j$)SwwAImGarb zeM`ydx7}|yeRm?`$?O81qk+G2x;?n;8T0&0&XMQ>=eS=J`X&C-h6&)ztTxNu?+FQs z8P$6Jpg|K`FFZZ)&>;QL{N`y%TlcjXy(xN<{Z$vg8=*fEX6?JPIR1xINzdZv{tg%O z*OYEMzJBzUr0!b%PTxuza`50HL!V841{<19JU&2!KjD;fqk{(yA2>4eQlyi=u$_je#3aV}6hZEPu%*b16 z`&9_nuEnQC)Wbn7k7!&T)KWx^={Yv=oN4179Ne$|v1O^v@zK2!gwOZb^#y`gBRMUhiVt@$Zim{ z$}_qYW^!}1MO0DYqwm%3^bUgYXJPKKX5Ndc-yO5nH13?O+NqNO$Yj&C1%oxr?~hr^=j0p(Wp&5h(Q{jZ!+%ItxJ1PV~9bT;`4>I-F;fs7V`OgNUE!= zo4YpgFf=rW7^Jndv>JAF($>~)2r)>jsj1cN0MJeALJZQ?t5YBw{o`Z9@u@R>mW)y_`64b*?oNtEsXJ9wh}N1$ z`&=%J_@rVqw}jB}_<&gEi8yeXj(YSp4ruDc6MX5y7R{SBZ`wjwzrKBg2118sZJOCN zw`(r!9Uc`Lofsz!Olr|zdbCCJwk_<1Zs^TF3EolhVX@(n0N%X6uz551g9q~d4~G9< zf60@Ua`tc0Le2pW{e^bTnB#Urhqf(S{kaGJ4;uS_RsGKb|FgjVEbu=I{Lcdav%vo> z@IMRu&jSCm!2c}pKMVY47Lcwc=&0vpDO#Jr_wOjfS6LiH)FWoo;>83hK4o~eyFz?i zaMFJD4+nhB(D2|PvB8nVN*|^Dvo4F;JvKZl9$pZn*JoC8$vF=#N{?y+ITOR-<`3Gj~y4-NAVi&2h7pJ7(pVX@jWmB=Y>VCXw0 z5cR@+UWN5y`G?k8biDyX!w9spQ62Y$xcKPE@ML&b8FEIFd9h|&*vz1Z-+=uTae5u3 z&%?GJ(io~x>XeX<;g33HPQ<0{RGrc%j+1erD)%p+a7~V zhhWo#Ts$B=$-NEgA#Vz6Cy(fmgvhX{c-q_QAbd6N-r{P@-7zu|zt~4Zp*Gm)-iUIt zTNUsW`kqaLbQEsby1>6Qck03(H$0B{*gUw$JZwJT5#$p3{Ak#-K^r1iuG}ECWD`1w zGglVQcm@w^vF;9AFl;knd&L~LSOR-&)hKJ(fL9J!!`A^%;wBS7FT?~ZJ{BLBYKk$u z_F!Oo45T6F9=OLM6d%KL;($1ovmhZwp!n}7N+XY=ta?(Ea5tM%oCou1flP>vd#nrh z&{k*+jH7RGuOZ&!^_bVB3H-8wsEs{T(Y+4V04+wRDQqoZ11nligFW7U0_k+%dQAtA zP`3ueKpJyH*hAgyp2;BoRUi`&dz4(DTMgSou{N>2bp#M+kJpkOr;mZOG+Wrh9`oTI z1NKIY;~qDq0epz(=&KaO=>+bX7!?BN*p1F7PP1`#kFugQFrWodPTcE=_t@vq60qr@ zJm5>6+OUUmI;a~{e;UNl;}CRu!`273zOeO!EfBUK*!sgZ0JeclJ_Z)!9_#_xy>%Dp z8Xu&`ES4x~GN^)BMA*}YU=ENRf%m`Kz=oOG4bPYD+i9$I3i?a=y(HBg0sdCSPu z*)3a6CX@#^H4i^kh|u_@*C92hDsouJC5Sc7k7t(g|=p|EHNrFHl?(j;k&d8_?T5lx)GKW>5AvYnKmIw4(E_n zd^AC?B%1?n4Y%0%@WH_$@o`PV;|7!1dQLV9?Mbso$#D+YB$_gN(*3IBR3)L|RYbjn z%Z!_gY4LL1U-S#p8{G8Z}NK3#IUlF;x9 ztX^`ZlF;y)ty7ZA0j+x7z^=jJQ7{J!?oVp1^Tkx54QbvfImrQ;L{rudX(lTqlGH^hH@h+g5 zR1zADoB_?WlF)DruKvxelF)Gepk8w6_tCmV$A`Jc$41bz3>=%OXZ^vINP>p5J_hX% zIXNJB5F?uaWSjYh!zh-RkdTuT`8Zz1am0xGvK!7#@El&HP!GHg(zb>@9>;)rFeuGK zwA7idJeGZY2Mr4gi5ChH2WQMYK@rxVA}}it(isq)Jpq1~GX;e+C`#B;9)vwE1SS^3 z2(WCL>HuZtVmX{m5cqENaUMu%1b3O!!O?37L`ddL2-R$B=F3CN!dbp)D6QGEZ;>nNl1lYPZidm#ZDF`gH9YT=gOFG@M|*z(hhN50qvvq zrBJavYoUU+NaFlXJW^&(L`dQ~`>dQ+Fq)wyF)YLxhN{4{Ua}2C ze`TLIrwpB1viRMDWAQfC2uTawRM<@wIOe4T?s>Q_EL;YgBgCuXmLf_Kv2i-zXvr)Y zlBKf!0B;f@TQPi8CTGXs*!ZEs?y=GIoisWZ{78%7)U8Yr$>fL7cT@fStiBS@g6zma zz*aR`T;+RR*7{_YI7qN;RhOcK_T)(>E)*XZ4uSJ9!z`Po+#ny#R+yjQ4CXk?R@G>> z(uGxP$@qj`XJjgo|5e0RIDf>_ZD51*!WOXkzy@Or;Vz${v>@Qp(s05$y}Xx)lqR#8z0l23LIuZIrPU;;DTpR;>$xrHri*%e7GU zTBaJ9Lyiiw6-r`Q$YCr%A&-;^gr8diNl zA`93rg#89WGjZ?L<-lo-1X4Tm1PAKN*%^8-+L_WSyusvG{VPRO)_ZA0`@)~9v1D@~ z;i?Km?e@zG<@ABE23@-bSA7UPCB2u%Q!9k=sH#9v#PqvKTk;F>NG*l zO5kx?62rp$@^R?1OzS1vFo&@Q-9o3nuEPPJ$%6RwSi>rcY5Npj(W=v94GGA@PGyG! zl2aIA2M#>CtYqK-jRHp{{IX@ey*-5P(eTnwQamvxr>3qsE@v^24q1jLD7KcVQDH)N z0@|18wU}!pY+^nVegX}<$QNagTiL<+2NYE{&5@7X<@t!diz%&;^rduOi08}BeZ+hu zgpsxY=CW46`GR|dW-K3dmV%cbleSEr;M6-gJ0l-~ohhxN8s+0i&q@)M@)0817qyj^ z;TDVHKuARG_H*yc=>tuV)<=V@J_MdJK0^t(-Zm_`@`}PMd4iz z2_NCt_;bBq2fUw9B5pWAahzIE)Ergx1OriQcy9xa|y2HDWb`40*+TqwxuI+&a z$V9+dxQ3@9=w@R}C3-gI9|apbhB^XPP&9@TAGa!n^Eieoljg`-|Hc>!?sw5+sPC{> zG=`d@!X%Q@(tgAfOlvP^XXGrfGjP^#u%J@TLPYx_9K}{BxQJ9|m+C{=FX1SA}F###xBvT9m39tD-q7%vmUjVG+!*RR$iNgZX7LbKxv(q2pgK zQi;xHKzxR?ZZmD4GK3?Bzcq$}a!|Gm{lwFp70+^32s3yh{69Xgv0QrssgPZOhxW39 zD&OnA#@1Jchp-pG3KRyMqX~7GIQh#S$GMwutu!B-=Ey@G<;PC7$CCAceaSGINGKUQ z;apA#w#2!da3!G`J9f$?Fv^We?aUKA9Uy0C#A)Z>%a@D#JSju<^v0RJptH!EmjtcV-N@7^FheJI~>m}PT7aqbE zn*9112Yew$S9)#fl*n z9F;Nlz>r@(NGz6<2yy1ig-E(J~B_ z428rDWGw`p6fh8b9N!i|1}dBW?-!Dm*gfS4> z85oFjuaF`tV;~yQzSvA61jk6_Fc4k423LIuZImz&ji*-hR<#lYmJ$Y{v0RHAs>Z5l zj*2o6Es0?<_Ip)<$wTJkFb1MqX!08c_kfjDhxqgu$l8Hv`;|Qg5)Xcu|C1@~0iKyU@Y>wrxI z*ejTY>3OTN342~@XP%(rMuiLncBZt7f8!pVQU*dq`{H)23|#k>#6VcP23LKg_Mwz9 z5aOv7S68hCfu)Rr5X-f=vudo0=BVf_40{)4SZu|i9)^3EUnV;j2ErDa%;||jF(&M2 z2C{*x;=eKmq6a?`0+Ja6xqO%F8OT7uE5JY;-eJ<)h z2^NIP*%`+`U}s<;_i|x~lTt*b41|dG#UqG9oT8QUL=LTw23LIuZIm$(YNJ-{s#*mC zOBn+pmTPf}YOIRpsPGsFB{3|9o}n`Q9s^+uz5M15M|5N#F#}n_laSE%dGJg!Y`--N zkNyL`kVXFbhB#?N%)TEIIJQcvcEk}6& z^66W0Jq;NRcnTP8k_237q&AEL^^%Exk2!H&iDficFH*>8;^VlkL^E2M^nb``u&zWi z+IQG1VzjMFjZx-=)XqG?bIH3ylJz@eG_W%;8ax}qEl3fSG8!V<7cb|ASFv0~?e2c40#c!Cl`3A)lq?Idi|W!P;DWM9SdpjmA?e{#Cy0c$UCY!frH{>sM#hSQX7tQFfyxG5o5}p&q7X zknMxRjFE1k@o!x?;4@hepINh7$+Ug^cs*6^x5jJqhwr7#g%y;Vz?&ZQ%VaXERq;DV z%Jm751Q`Xmhr?*L_D$?TWw>V~RJa6d1x?_2OG^b;Gxj(>Zz*gi&BvyHpL;6fc}vUP zFjs62Qnev86VDZEbAI|o+8pT|{h5 z`JSj<$+JteJ{ny0A@G!O4{D?KwY_qg*fRu{GVVbv*RQfql(5DBXkTIOK}ih1O2-Y# zYiC%8`DJo(;T~+EQExfSi^LTpKJ&~#Rp_nI_UZR8`M=3Md?;UL)YQv8j=VZVjl3b( z8$br+5?~z;_hQ_{p!JhW}kZl3P$c-Dcxoj( zWJFb%Ah49N5!%|dgu@e53M(k*U`5AMv{r_kz9aX0Y=kW|>D{MtM3y}zVIyl?K|(gd zTWr5~$4}uGLy&ty*vG!f`CL-lnR5LCq(N2z{=splieLce^^LAng-8!A{BlIFK0)ft`VWj&g#7Oj1Op{DX-0 zC9k<6RwN%$yOR5J*ls8duKEyo%J>KI)JhJimXg3y#y^PVT2i7KtD-q7JQ_kt3`?$a zsOR_i2V3aKccmQgnJiNNaS-zlK8?e^wJV0<_!R->ZTK>yA><$UUl?WIIvJU`MG^ZT zrvUrFDvzpQ&=0w)4Ev0NQtVs|?)ocYAAH{ykK@w;^jxe=`oCiztK*CZtiCH|9|Lt& zHet_8djwA~*FnzCF#16|1N&TJOQ_mQ5tXqIjc8v|tO}{@`O2A#(Y0%E)rZhV3H#7^ zY9%m2Ruu>=CG10Exqhpn3aR4fD?0k2B{AeQLj5iFpg$;8QD_BeeP?HA+`=VQ~q&q$SVS4|iPY=n2!z7t$4UL7(RKr;fNO<`!HG!uk;|RM%-H~6N02z==c!E+6_hwAGVc#M8ChCE#vj8Iun+RSqaq<^g z29G1lSSCsHv1yL1qu{PuWw4H*fMFfWctSHV>lnc~Zb52ip5RhzMXZB%rnG)!aKqy= z3!@S3e>~!f$mXk@aS&a*23LKg_EEMbP2;Kk;IK+YU@2i88q4*^dsgGh+gEfPL`!1$ z;~WPGev5VJ78><|^J*m}!#ddZE1PxT2}l{%>9|;~H-HStB|O2e#;WaNS{pfv=$lvs zS!Xs=7TLvO4-+SU+2hDEf({JpU_Lg@k#!V&{irfn$Kn9PI)e6uW@6Sc=|$>MUR>G} zc!IPYa(0HX4%(U0`e{@i3VBY7sBEl5BijG;AWLzHR}SmYwQF$IhtNjJSck?_`^n)s zKLSe$>(E%PKmEB_qhfg~$~v?phCdr}sO7g^H;_=+~ z*QZO5W6}E98Npp}$0Q*STFC;V*bCRhEU7Ev>w4d+<{pZNp88`{; z44jn50gTQfMO4N~G@|`47)MtuRL=a1u3dwxK7=+(IEltn`*}~bE(DemPNK0~e;KRB zs%VaiauO|x;m;2o>R~tuTOJ0QI|xk;o#5U!^F9Rm1%0}Oj{nTGc&23ezYHfOLYsGD z+CIHhY4Dr#FI@1Fa1vHrY9jLmeMMih9iOi7>1t#bo`CnfeDU$D1+4U$)+Tx@9*l!+ z5k_Fl1J^Z6cP38$vd4uz;e3`fADbq}M&*1PpZQN7GT+Ak?f>NA0`koQNnoU6=?#0h zidxceh{jVB<*U|&z*53PG?pvXQZ-gZb5xXvXh{r3-#FC6@DTIMWasdd5Zywr z6prD5FUEu&{gjZdSnQ`iz}3T zLvm<*{D`==&6*7j4jCR9+B7`6+2Am*h=jr2!u>;HM#c^EY7^?#IilkbA>sck+q$vr zEV%~_7DT4v3Dg#1ZRH32|H=B_88h0E2T2gq;Oh@=x3&AA+4JEw#tD1!8fsfv)bjUI`zTv=r}5Od*oVMU#)oJbS2YE9fXbIr z_1OyZAxdJXc0x5W^m+`;FO!`MA7TqlF5=v(Xnf{La9E?jwom`pflB=5r8oSmlvw!3 z(_upY5n&-RZ__1vol(d@z$?H&cNnG1`?WZZ{fOwNm>C&pJyVKimM=`4{AG_L<5>SK zW+2GNrvGCGf*AnvruBG2GnRokJd4a|D(w|Kf%|khJ0k;uoq>VQkd`SgE=5$zK!|9s z#$lbZym}O$BWhRj^d+s2hT1vB<;xx=@RW_nP#ZNa_93v8F%V+8^4U>HSz-Pl-Cd?E zA&HWw4QMMFs^!WQQ=Irc2ErDaRJ2zyq=KVZibM52B3N9(UPSa#%#Zwo-iClYW4)h=lfUe7o^PeN zyz--!Gy=lfHPnif*F&Bmv{A-Ch^NNIJ_MFB{y{8PeoInRLVVwXwMH+3h@Ugh}xCSzOZ%;elu>B5O~VC z2l3Rn*oVMU#yyDT%8%qGTSanJc>M<@G30mTPzSOC&Wxmi%lZ$t(DY&ME$${C^MxNsv*1dnT)p8BPn}8fTGPhI??_vymx_ z;~8rhNt6xjaUADZ!?USn)4$I>0@=Ae={MwKY0!o!o>egJq2IZMagR0mMzMI@BT$z@ zlpmA!2cEzXtX}2|oya|4XW*Wg@^PeRrHD$o2NCW0;+21CNma2*8uwuB8vHm_wK3-j zZIp2j;;C`54}qnOdl1W&zlWP_70Fd$?mN+Rc2Es{rJkJH=)RxF$T18y>ssg3k2XKu1u!OY35 zZ3xX+ZZej^FDD`GFFb*ZjUsMBI|DZ@EeAyAloU}JH_?dp{0lP0I3y}(Rfw)#gTI_Z zg^-2NMhQ33cxqhiLtrW4CK}6?e~+7Nzn_bcM9HcUEr}r~mSkEl*@n4r6SmN)#T-Yc zkQeb8Zh|=(wtf2RVZZlH0Q@iD1UKP@9KMjmFUwZ=g>JvFxabJ@Q~+VIsqf{#zzWhK z%K#s7xZ5k}i0no5TBx6%r>(^ZXmgUnTJo)~>-n!=jeIC$v$Ix|VYwEL7ifj-#1m98kbo+U z2tttc%J3Lka4l2BTBw-E*yH%ECFHTP>Hm($@Y}h_V>tFz$YVZAjZx-=v~TeQo%+ey z8RmRwXG)8E-;yFKsc{ z{CmjE9rNnFmg{?J!|fTGd1u1@6~W%@+;ND!Hj0l(`yEfvSR`j>_cEF<2b}}RUgYi zunK0WFvp=JhUz^zRKu_v^UGxC!g1I_7ZpSMx~&p3(3J%NV5Y zs121q;w=J|7ntYJbvw!GPQPg_)?HT<$_r&=Gy-kQ*Bz@A>uxmyRt@jMHE|s9m;>x( z(qdeuWl426qztX>EWTMK3XGUN6DRaeca;2(E*ZT+6DlL7F$z##5bHfzR&SlAAP=jz z2bBK}Aq2_LS<4KEEnhAp8V=zY5zU+%PRzKwn`N0SlQv8 zi4%IKo9k4{Tg!qiQeFQT2E-BwB9mldA;?J&se?l#Cqp} z-Vi7CPVi&(Cfg`ode|FrUsI($oR?{%C?^yCoi;k~4J$LrrFuAnNsq0{)~#$W_7yyZ zpv+f#b)f7Y_{zF1<11@mcl4EPTHaT*q+(xLyD`49cC-A9ane^?Bu}u&=na~H-Z0ZB zKQMaNhLswndUphbKhWC-S^@gr2F5U`w`^KoZ@n0(Ppr31bw+QS>Xx4|PU_wDGV5=d zHj1T(y%|=%*2Gy!8)fBU&iy-W)H#clne-J}pUQ|EKuD!9D)tquNs+!HulMwSO8Wy} z;q~3}H24Xw_d;vfWYS_^F=NLv*L%y)ve$b|Tf!6k>>G_#hO^}Br82sMHdK1t7=;QG z2N~TBV6;!_PF_Rk|GoGJx?6)J*iNl?GwoD1E#FRSuL1Gc{<%rqKQ}@DggBvh`lN@f z&&hU5mmc5Uxn8`^Z=Ef5THt8vA>`Xl6{N*W~X?3rhgJJ{=i>Wa5WMxfN|Lb*cZZH zCN1B$3`RkHbl(#0gYnsID?55m#|dAh=l`wHS6F&jK`i`o3ld+kaxumJ9bb9fV`Y}< zTgZUv2|=m^7W-;aIlh9i;Gg&k`2~GN^C0+2Hm$%{nk_0uiU^_5GQ@L%$U_%##dN+SiyMs7g z@fBR3ENe2?E6XV6dL>QE`^p&Sm&{nO8LT68h4lp7({a*Q?vnqUO8SZ}J?tZntGNZK zuf%dP#r_>%wXLPlS73ec)n`=#i+yEMj;}TX#-I2K`Vs9L=vTC_WYP+JWeD}LzRDB( zDi3@Gane^U2C{m~_zFu8`&dhr-jefDUy0>n&ip&RYSxgIndCrYus- zWzu3_5o-a){Xk-Rj%C>l=2XPmKc+345&p{1Il<~K<1a)Q_R+t5&55%Tf3dPL=l&gk z>CI+kCjEsTpfX0;6H+ORGX64!J8ZP&sxX;If6-rG{u6&af%_Ggz)yIurUC3_((?YI zC7}If@lDoWn6~&v`m1WRBHd9NDt**fg$fe~8Qsl=vbvM^=jgAz{( zO0JcWuR`}FbOz26RuOk;?fI>wdZ%-8Vt;Kh)j2I-|QatmUEZ z(zGhwt=ma;hxjM!cBJlpISO?LZ9sRFyWAkw{YE*u9|wRx)%_ZyyG>KE?vk`h-G33f z{{r2Ak-E2Stx$K+hDsm1yIjTLq*(Vyvbxh>yb#aB@LL&wqC4KlwSEBY9s0VBGwfy3 zV%?G3aAWz6?(5dStP*X^t?Y2m#0kCAcMMXfH)sNSpMc+T15>X6>ZD`hYq^Zxxd8A7 zKDUDV;k4fQV!dV3D)i11>zxOBL!8vxdAlOLQ4`SnNx4eHNwMCr5F(>Deq)LC_s>7n z8~tm__}e;J>~BfBT)o?YpZkKpaZkrdz2`{2n)R3p?98G?>x{Q;-ubdJ1f*1Gy%O)`*MR=@4@Bh4dcx}(c2ov zsHitS3xImdrpwpc+Ktg0_DL8g^=<(xgYxUu0?>roHm*atO3R$2B@pu(`3xcb4DbJC z_f&CWLf_5ClV| z2=qHgg9-cOY=5fA-n4zHy~S&?sv!0}fmzK7p59~n6lrs`gPQRDMOA=w>%b@Yd35{I zg8UWIR~I=;9CSUv{%BQY2$|qj2xxDq&1=I9ueR8m__hc;}ve z4xmB^M(-)gSc5^pbtz+9<*E>Zi61=ODP9@El@fa0r9uc6D`9QGh>-#3V)V?eVhGy- zLCh%lrA`Z+A5{$D43xShmI3Ak7N?~xO-*REQm&-|ThKjD|J^aBRJp(6)+@~;MW^(g zBy&8n9b?Pjt@xNJEu$<3a^RQF)#%j&^rb@0MK7sL=Km!ijfeIn$b(SLN!6-rx?%+UB zaK%w(NsDSy1YAq8s4Dd`Z$-{WMQw=g|2iL3j(nt&Fm*_gDIF)t7a_>@gS@~q{>%Yc zrv2cZz6#k*|D057{gceoMHNFZ09&!a03rs{;iqCUl(6L~N+0gr8%(M&!dn921t7rJ zOxP#nc*f6C75R>4UhPi;X-TCqN&lCkQrb>ta;T7xX5*Z~M5S1g6Ec27_N$Q1^im{1 z6yBAk@9|a)VH<(45fJn$DnsoYDFWWXGA5sG&v`Um&OX4pw0)|5*&!{dG$yt>VRI#8 z2KxGyQ*>4-lH|mn*<2T&@)iet^M!torb0H?O=ZhN=?Sn+hIHSGu#~B>6aiQFP04p4 zayrR#3D}&rPqjjo_bCCHv(4!%e$Mx)QfZXMy$j|lA+zg#RmiriojlLISr7^+riq0$^i9Sra>-v?+|8_l;v#LtBXW$;J>i4*G$TMg^;Z! zAS@}~KRz~`t_920)Zy~_Lsg-QTWmPIXiQ*M zi|fN;;+KRHVndkq2C$08*+OOSfc|)Re_E9f3M|c|Nq`eZ~D6`+ARD3k%DUH zI)w#?hQ$hn0HXsN+a%i|Y_G7`uJC^egb;-(k8f=F5OE4~%7l(lq4=(@5D!8JiWkQ* zpLn`THNtacFvQbH`eVWrEJ}xYM#qLhHX-I!5_otV^LBv$tOrpcZ1gc@d(7(}o{YG- z@E|GQJvd&7$MD8H2F&LX95%|q!6p@ z|J@3KSLaZ~SPNYs61@;T6G6ij2a)K5C`Ts!Q*?t!KN1y-ZW8GeqFWr;2j>G`75AfXiR zp6H~gh)CZT?UKJQogE+rTG(^;lNMC^3!ijVn(PdEsB3%>YT|}fKL>ol;M0%pA zi|8DYJ|uD%?IzM-_6V`*+3v}@LgBt@hv2yIkfz~LY$=7g$~|aHji=ObQAVvVzW^%5 zdin4>UL=BMAdvzi(kn>bGCO`Xgf)k&iMoG4p8$wA?9<)b9rmq9M8wC#zC#!94zS)v zb?fOJfY+UVhzWZ-@C!sDA@d(ADb4#B=QHDAI*&RtbED%`OtAoaH9QNVn!~z1Qn0Np foTv*j>cZDAo<)Z{3Y#~@|2e>$OgT|C4HN$#=xm|M literal 0 HcmV?d00001 From 92deda0704d02ca50bfff6bd18a84f41c90a0e56 Mon Sep 17 00:00:00 2001 From: Joe Andrieu Date: Fri, 11 Feb 2022 08:48:31 -0800 Subject: [PATCH 06/21] first upload of inspiration docs for artifacts and capability --- Artifacts.isf => docs/Artifacts.isf | Bin docs/Capability for Minting Tokens.isf | Bin 0 -> 80818 bytes 2 files changed, 0 insertions(+), 0 deletions(-) rename Artifacts.isf => docs/Artifacts.isf (100%) create mode 100644 docs/Capability for Minting Tokens.isf diff --git a/Artifacts.isf b/docs/Artifacts.isf similarity index 100% rename from Artifacts.isf rename to docs/Artifacts.isf diff --git a/docs/Capability for Minting Tokens.isf b/docs/Capability for Minting Tokens.isf new file mode 100644 index 0000000000000000000000000000000000000000..a7f8275ba18905e28dc4a8506f7c32c54c7ba1d6 GIT binary patch literal 80818 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 literal 0 HcmV?d00001 From 6b753509a1c51ec4c87d89c898b2e206b61f5356 Mon Sep 17 00:00:00 2001 From: Joe Andrieu Date: Mon, 14 Mar 2022 20:47:33 -0700 Subject: [PATCH 07/21] first pass at simple DID docs plus updated inspiration files --- docs/Artifacts.isf | Bin 76860 -> 76860 bytes docs/Capability for Minting Tokens.isf | Bin 80818 -> 83044 bytes minimalDID.json | 27 ++++++++++++++++ simpleIID.json | 42 +++++++++++++++++++++++++ 4 files changed, 69 insertions(+) create mode 100644 minimalDID.json create mode 100644 simpleIID.json diff --git a/docs/Artifacts.isf b/docs/Artifacts.isf index 020595d1d8a46a84d6c7f9441f402d3e5aeb1f85..2f114a3181e02d2377224317bedfe1430dcdaaf7 100644 GIT binary patch delta 1302 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 YVkA`fVp&8N@~LQ4AQQuX{~^c!1A3qkZ~y=R delta 16738 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 diff --git a/minimalDID.json b/minimalDID.json new file mode 100644 index 0000000..7a15dee --- /dev/null +++ b/minimalDID.json @@ -0,0 +1,27 @@ +{ + "@context": [ + "https://www.w3.org/ns/did/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "id": "did:cosmos:ixo:nft:1:AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX", + "verificationMethod": [ + { + "id": "#key-0", + "type": "Ed25519VerificationKey2020", + "controller": "did:example:AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX", + "publicKeyMultibase": "AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX" + } + ], + "authentication": [ + "#key-0" + ], + "assertionMethod": [ + "#key-0" + ], + "capabilityDelegation": [ + "#key-0" + ], + "capabilityInvocation": [ + "#key-0" + ] +} \ No newline at end of file diff --git a/simpleIID.json b/simpleIID.json new file mode 100644 index 0000000..626fc05 --- /dev/null +++ b/simpleIID.json @@ -0,0 +1,42 @@ +{ +{ + "@context": [ + "https://www.w3.org/ns/did/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "id": "did:cosmos:ixo:nft:1:AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX", + "verificationMethod": [ + { + "id": "#key-0", + "type": "Ed25519VerificationKey2020", + "controller": "did:example:AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX", + "publicKeyMultibase": "AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX" + } + ], + "authentication": [ + "#key-0" + ], + "assertionMethod": [ + "#key-0" + ], + "capabilityDelegation": [ + "#key-0" + ], + "capabilityInvocation": [ + "#key-0" + ], + "linkedResource": { + "id": "proposal", + "path": "proposal", + "rel": "detail", + "type": "iid:ResourceDescriptor", + "resourceFormat": "application/pdf", + "compression": "gzip", + "endpoint": "https://www.w3id.org/earth/artifacts/hydroelec.proposal.pdf.gzip", + "proof": { + "type": "iid:hash", + "stage": "raw", + "value": "asdrioqweindcuioqweroiasdcnuieasdnjcjasdkf", + } + } +} \ No newline at end of file From ab728e634a63cf18942752550c5b13afb7a8fec7 Mon Sep 17 00:00:00 2001 From: Joe Andrieu Date: Mon, 14 Mar 2022 21:18:12 -0700 Subject: [PATCH 08/21] updated id and path for the linkedResource --- simpleIID.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/simpleIID.json b/simpleIID.json index 626fc05..8ea2b64 100644 --- a/simpleIID.json +++ b/simpleIID.json @@ -1,8 +1,8 @@ -{ { "@context": [ "https://www.w3.org/ns/did/v1", - "https://w3id.org/security/suites/ed25519-2020/v1" + "https://w3id.org/security/suites/ed25519-2020/v1", + "http://legreq.com/earth/iid/v1" ], "id": "did:cosmos:ixo:nft:1:AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX", "verificationMethod": [ @@ -26,8 +26,8 @@ "#key-0" ], "linkedResource": { - "id": "proposal", - "path": "proposal", + "id": "#proposal", + "path": "/proposal", "rel": "detail", "type": "iid:ResourceDescriptor", "resourceFormat": "application/pdf", @@ -36,7 +36,7 @@ "proof": { "type": "iid:hash", "stage": "raw", - "value": "asdrioqweindcuioqweroiasdcnuieasdnjcjasdkf", + "value": "asdrioqweindcuioqweroiasdcnuieasdnjcjasdkf" } } } \ No newline at end of file From 698ec58f844f4f9b5122660ea7e57723608eda43 Mon Sep 17 00:00:00 2001 From: Wip Date: Wed, 16 Mar 2022 22:21:01 +0000 Subject: [PATCH 09/21] generated secp keys in jwk format and corresponding diddocuments --- .gitignore | 1 + keys/cerifier.diddoc.json | 32 ++++++++++++++++++++++++++++++++ keys/certifier.jwk | 1 + keys/hydroelec.diddoc.json | 32 ++++++++++++++++++++++++++++++++ keys/hydroelec.jwk | 1 + keys/meter1.diddoc.json | 32 ++++++++++++++++++++++++++++++++ keys/meter1.jwk | 1 + keys/meter2.diddoc.json | 32 ++++++++++++++++++++++++++++++++ keys/meter2.jwk | 1 + keys/un.rec2022.diddoc.json | 32 ++++++++++++++++++++++++++++++++ keys/un.rec2022.jwk | 1 + keys/unfccc.diddoc.json | 32 ++++++++++++++++++++++++++++++++ keys/unfccc.jwk | 1 + keys/verifier.diddoc.json | 32 ++++++++++++++++++++++++++++++++ keys/verifier.jwk | 1 + 15 files changed, 232 insertions(+) create mode 100644 .gitignore create mode 100644 keys/cerifier.diddoc.json create mode 100644 keys/certifier.jwk create mode 100644 keys/hydroelec.diddoc.json create mode 100644 keys/hydroelec.jwk create mode 100644 keys/meter1.diddoc.json create mode 100644 keys/meter1.jwk create mode 100644 keys/meter2.diddoc.json create mode 100644 keys/meter2.jwk create mode 100644 keys/un.rec2022.diddoc.json create mode 100644 keys/un.rec2022.jwk create mode 100644 keys/unfccc.diddoc.json create mode 100644 keys/unfccc.jwk create mode 100644 keys/verifier.diddoc.json create mode 100644 keys/verifier.jwk diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9f11b75 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea/ diff --git a/keys/cerifier.diddoc.json b/keys/cerifier.diddoc.json new file mode 100644 index 0000000..d42d192 --- /dev/null +++ b/keys/cerifier.diddoc.json @@ -0,0 +1,32 @@ +{ + "@context": [ + "https://www.w3.org/ns/did/v1", + { + "EcdsaSecp256k1VerificationKey2019": "https://w3id.org/security#EcdsaSecp256k1VerificationKey2019", + "publicKeyJwk": { + "@id": "https://w3id.org/security#publicKeyJwk", + "@type": "@json" + } + } + ], + "id": "did:key:zQ3shgcxqAs77QCN4azCsfUgPHcSLhNvKatmePUrHXRfkiLm8", + "verificationMethod": [ + { + "id": "did:key:zQ3shgcxqAs77QCN4azCsfUgPHcSLhNvKatmePUrHXRfkiLm8#zQ3shgcxqAs77QCN4azCsfUgPHcSLhNvKatmePUrHXRfkiLm8", + "type": "EcdsaSecp256k1VerificationKey2019", + "controller": "did:key:zQ3shgcxqAs77QCN4azCsfUgPHcSLhNvKatmePUrHXRfkiLm8", + "publicKeyJwk": { + "kty": "EC", + "crv": "secp256k1", + "x": "HWxpqouTfGstEAMGjJ53JLWJoKcEtxtw1K-mxCLE4oM", + "y": "6MC-pwz3WJBH8-9ySNjawc1fgKeoTaePP1Py8uktoHM" + } + } + ], + "authentication": [ + "did:key:zQ3shgcxqAs77QCN4azCsfUgPHcSLhNvKatmePUrHXRfkiLm8#zQ3shgcxqAs77QCN4azCsfUgPHcSLhNvKatmePUrHXRfkiLm8" + ], + "assertionMethod": [ + "did:key:zQ3shgcxqAs77QCN4azCsfUgPHcSLhNvKatmePUrHXRfkiLm8#zQ3shgcxqAs77QCN4azCsfUgPHcSLhNvKatmePUrHXRfkiLm8" + ] +} \ No newline at end of file diff --git a/keys/certifier.jwk b/keys/certifier.jwk new file mode 100644 index 0000000..fbd7966 --- /dev/null +++ b/keys/certifier.jwk @@ -0,0 +1 @@ +{"kty":"EC","crv":"secp256k1","x":"HWxpqouTfGstEAMGjJ53JLWJoKcEtxtw1K-mxCLE4oM","y":"6MC-pwz3WJBH8-9ySNjawc1fgKeoTaePP1Py8uktoHM","d":"6QEeveOCezFpuOKi3O-XsyZ1oC0QQf0lATz_Xww7EUU"} diff --git a/keys/hydroelec.diddoc.json b/keys/hydroelec.diddoc.json new file mode 100644 index 0000000..98cd398 --- /dev/null +++ b/keys/hydroelec.diddoc.json @@ -0,0 +1,32 @@ +{ + "@context": [ + "https://www.w3.org/ns/did/v1", + { + "EcdsaSecp256k1VerificationKey2019": "https://w3id.org/security#EcdsaSecp256k1VerificationKey2019", + "publicKeyJwk": { + "@id": "https://w3id.org/security#publicKeyJwk", + "@type": "@json" + } + } + ], + "id": "did:key:zQ3shPm1156YHd3pzvhz8BMtZPT9LnTxtGyFBnm8tzJmjnBWD", + "verificationMethod": [ + { + "id": "did:key:zQ3shPm1156YHd3pzvhz8BMtZPT9LnTxtGyFBnm8tzJmjnBWD#zQ3shPm1156YHd3pzvhz8BMtZPT9LnTxtGyFBnm8tzJmjnBWD", + "type": "EcdsaSecp256k1VerificationKey2019", + "controller": "did:key:zQ3shPm1156YHd3pzvhz8BMtZPT9LnTxtGyFBnm8tzJmjnBWD", + "publicKeyJwk": { + "kty": "EC", + "crv": "secp256k1", + "x": "IuTV_ZHm7TnHNkxXkk_wib9-4fumceoVpKajqlNMIO4", + "y": "6lbfKH4cC8NN2_t-9ZzVETxA2zEIiQcDIglYTgG7MmA" + } + } + ], + "authentication": [ + "did:key:zQ3shPm1156YHd3pzvhz8BMtZPT9LnTxtGyFBnm8tzJmjnBWD#zQ3shPm1156YHd3pzvhz8BMtZPT9LnTxtGyFBnm8tzJmjnBWD" + ], + "assertionMethod": [ + "did:key:zQ3shPm1156YHd3pzvhz8BMtZPT9LnTxtGyFBnm8tzJmjnBWD#zQ3shPm1156YHd3pzvhz8BMtZPT9LnTxtGyFBnm8tzJmjnBWD" + ] +} \ No newline at end of file diff --git a/keys/hydroelec.jwk b/keys/hydroelec.jwk new file mode 100644 index 0000000..ddb8159 --- /dev/null +++ b/keys/hydroelec.jwk @@ -0,0 +1 @@ +{"kty":"EC","crv":"secp256k1","x":"IuTV_ZHm7TnHNkxXkk_wib9-4fumceoVpKajqlNMIO4","y":"6lbfKH4cC8NN2_t-9ZzVETxA2zEIiQcDIglYTgG7MmA","d":"j2YZsSgLSm8ZHinzD32svQ2pK1A1aJbGMJsAQO8K34U"} diff --git a/keys/meter1.diddoc.json b/keys/meter1.diddoc.json new file mode 100644 index 0000000..4cc98b3 --- /dev/null +++ b/keys/meter1.diddoc.json @@ -0,0 +1,32 @@ +{ + "@context": [ + "https://www.w3.org/ns/did/v1", + { + "EcdsaSecp256k1VerificationKey2019": "https://w3id.org/security#EcdsaSecp256k1VerificationKey2019", + "publicKeyJwk": { + "@id": "https://w3id.org/security#publicKeyJwk", + "@type": "@json" + } + } + ], + "id": "did:key:zQ3shnrp17gjuGWX1BMREpKJEEyb6dM9nYnjzyVPG3PHh6kWc", + "verificationMethod": [ + { + "id": "did:key:zQ3shnrp17gjuGWX1BMREpKJEEyb6dM9nYnjzyVPG3PHh6kWc#zQ3shnrp17gjuGWX1BMREpKJEEyb6dM9nYnjzyVPG3PHh6kWc", + "type": "EcdsaSecp256k1VerificationKey2019", + "controller": "did:key:zQ3shnrp17gjuGWX1BMREpKJEEyb6dM9nYnjzyVPG3PHh6kWc", + "publicKeyJwk": { + "kty": "EC", + "crv": "secp256k1", + "x": "eh6u5aeo_50eqf0fjANmK3KdRDCtJixeHA9Wa5IfTIk", + "y": "mOrVKorsRzAsFmb-u828cbbgHs4NVnk32qAAU-PS5Lk" + } + } + ], + "authentication": [ + "did:key:zQ3shnrp17gjuGWX1BMREpKJEEyb6dM9nYnjzyVPG3PHh6kWc#zQ3shnrp17gjuGWX1BMREpKJEEyb6dM9nYnjzyVPG3PHh6kWc" + ], + "assertionMethod": [ + "did:key:zQ3shnrp17gjuGWX1BMREpKJEEyb6dM9nYnjzyVPG3PHh6kWc#zQ3shnrp17gjuGWX1BMREpKJEEyb6dM9nYnjzyVPG3PHh6kWc" + ] +} \ No newline at end of file diff --git a/keys/meter1.jwk b/keys/meter1.jwk new file mode 100644 index 0000000..329d3eb --- /dev/null +++ b/keys/meter1.jwk @@ -0,0 +1 @@ +{"kty":"EC","crv":"secp256k1","x":"eh6u5aeo_50eqf0fjANmK3KdRDCtJixeHA9Wa5IfTIk","y":"mOrVKorsRzAsFmb-u828cbbgHs4NVnk32qAAU-PS5Lk","d":"yD5v0UJxtXuPnZ1CsWO7Y5wKB6Rd842meIw6cFni79Q"} diff --git a/keys/meter2.diddoc.json b/keys/meter2.diddoc.json new file mode 100644 index 0000000..b776ede --- /dev/null +++ b/keys/meter2.diddoc.json @@ -0,0 +1,32 @@ +{ + "@context": [ + "https://www.w3.org/ns/did/v1", + { + "EcdsaSecp256k1VerificationKey2019": "https://w3id.org/security#EcdsaSecp256k1VerificationKey2019", + "publicKeyJwk": { + "@id": "https://w3id.org/security#publicKeyJwk", + "@type": "@json" + } + } + ], + "id": "did:key:zQ3shPipfYsVQK5HGjPDBZ34qAHFG5JMWeBDWYJU3kAavXj5c", + "verificationMethod": [ + { + "id": "did:key:zQ3shPipfYsVQK5HGjPDBZ34qAHFG5JMWeBDWYJU3kAavXj5c#zQ3shPipfYsVQK5HGjPDBZ34qAHFG5JMWeBDWYJU3kAavXj5c", + "type": "EcdsaSecp256k1VerificationKey2019", + "controller": "did:key:zQ3shPipfYsVQK5HGjPDBZ34qAHFG5JMWeBDWYJU3kAavXj5c", + "publicKeyJwk": { + "kty": "EC", + "crv": "secp256k1", + "x": "IlX8l1TAUuqaNY73XwrxXy2CzKcb-8-ueyguKhHTX1M", + "y": "U0L8gvB0AbhmSbTL_VMV4JMSOdVgKIFeEBrZG6aoaV4" + } + } + ], + "authentication": [ + "did:key:zQ3shPipfYsVQK5HGjPDBZ34qAHFG5JMWeBDWYJU3kAavXj5c#zQ3shPipfYsVQK5HGjPDBZ34qAHFG5JMWeBDWYJU3kAavXj5c" + ], + "assertionMethod": [ + "did:key:zQ3shPipfYsVQK5HGjPDBZ34qAHFG5JMWeBDWYJU3kAavXj5c#zQ3shPipfYsVQK5HGjPDBZ34qAHFG5JMWeBDWYJU3kAavXj5c" + ] +} \ No newline at end of file diff --git a/keys/meter2.jwk b/keys/meter2.jwk new file mode 100644 index 0000000..a2fbb0d --- /dev/null +++ b/keys/meter2.jwk @@ -0,0 +1 @@ +{"kty":"EC","crv":"secp256k1","x":"IlX8l1TAUuqaNY73XwrxXy2CzKcb-8-ueyguKhHTX1M","y":"U0L8gvB0AbhmSbTL_VMV4JMSOdVgKIFeEBrZG6aoaV4","d":"sP1AvAEd911yd9abUiLNm2xZhC0JBCeQklbdkG4AGK0"} diff --git a/keys/un.rec2022.diddoc.json b/keys/un.rec2022.diddoc.json new file mode 100644 index 0000000..9c3f9cc --- /dev/null +++ b/keys/un.rec2022.diddoc.json @@ -0,0 +1,32 @@ +{ + "@context": [ + "https://www.w3.org/ns/did/v1", + { + "EcdsaSecp256k1VerificationKey2019": "https://w3id.org/security#EcdsaSecp256k1VerificationKey2019", + "publicKeyJwk": { + "@id": "https://w3id.org/security#publicKeyJwk", + "@type": "@json" + } + } + ], + "id": "did:key:zQ3shjVFnfpw8Pb4rZPaZQZbmcGo5MgssdnnNKkhSaGG9ksE4", + "verificationMethod": [ + { + "id": "did:key:zQ3shjVFnfpw8Pb4rZPaZQZbmcGo5MgssdnnNKkhSaGG9ksE4#zQ3shjVFnfpw8Pb4rZPaZQZbmcGo5MgssdnnNKkhSaGG9ksE4", + "type": "EcdsaSecp256k1VerificationKey2019", + "controller": "did:key:zQ3shjVFnfpw8Pb4rZPaZQZbmcGo5MgssdnnNKkhSaGG9ksE4", + "publicKeyJwk": { + "kty": "EC", + "crv": "secp256k1", + "x": "SAYAEh62gmVXnTHoqEtI0_86hkbwAe6U8xdO9jFvMtU", + "y": "zR1jwZRCiUOskmNWqehw1wJ0BTlbBKtCjC0ezfIQQ8E" + } + } + ], + "authentication": [ + "did:key:zQ3shjVFnfpw8Pb4rZPaZQZbmcGo5MgssdnnNKkhSaGG9ksE4#zQ3shjVFnfpw8Pb4rZPaZQZbmcGo5MgssdnnNKkhSaGG9ksE4" + ], + "assertionMethod": [ + "did:key:zQ3shjVFnfpw8Pb4rZPaZQZbmcGo5MgssdnnNKkhSaGG9ksE4#zQ3shjVFnfpw8Pb4rZPaZQZbmcGo5MgssdnnNKkhSaGG9ksE4" + ] +} \ No newline at end of file diff --git a/keys/un.rec2022.jwk b/keys/un.rec2022.jwk new file mode 100644 index 0000000..058922a --- /dev/null +++ b/keys/un.rec2022.jwk @@ -0,0 +1 @@ +{"kty":"EC","crv":"secp256k1","x":"SAYAEh62gmVXnTHoqEtI0_86hkbwAe6U8xdO9jFvMtU","y":"zR1jwZRCiUOskmNWqehw1wJ0BTlbBKtCjC0ezfIQQ8E","d":"n0iLyxNh47jVLoAsoVsnHcNjhtuxYIJ421suCZEJKCY"} diff --git a/keys/unfccc.diddoc.json b/keys/unfccc.diddoc.json new file mode 100644 index 0000000..8f74efd --- /dev/null +++ b/keys/unfccc.diddoc.json @@ -0,0 +1,32 @@ +{ + "@context": [ + "https://www.w3.org/ns/did/v1", + { + "EcdsaSecp256k1VerificationKey2019": "https://w3id.org/security#EcdsaSecp256k1VerificationKey2019", + "publicKeyJwk": { + "@id": "https://w3id.org/security#publicKeyJwk", + "@type": "@json" + } + } + ], + "id": "did:key:zQ3shT1KWQc6o3qrC3PPnig2twVet2ir618NUw9s8Q5KXrrLq", + "verificationMethod": [ + { + "id": "did:key:zQ3shT1KWQc6o3qrC3PPnig2twVet2ir618NUw9s8Q5KXrrLq#zQ3shT1KWQc6o3qrC3PPnig2twVet2ir618NUw9s8Q5KXrrLq", + "type": "EcdsaSecp256k1VerificationKey2019", + "controller": "did:key:zQ3shT1KWQc6o3qrC3PPnig2twVet2ir618NUw9s8Q5KXrrLq", + "publicKeyJwk": { + "kty": "EC", + "crv": "secp256k1", + "x": "UyLz3FWAd5zIN7DulIXOqPy3uVCfDFWzxQufjo6bvKo", + "y": "iqt8lR9HbYoI_j09_Z01eTFpck_iUwRb6fpgoGU-vj4" + } + } + ], + "authentication": [ + "did:key:zQ3shT1KWQc6o3qrC3PPnig2twVet2ir618NUw9s8Q5KXrrLq#zQ3shT1KWQc6o3qrC3PPnig2twVet2ir618NUw9s8Q5KXrrLq" + ], + "assertionMethod": [ + "did:key:zQ3shT1KWQc6o3qrC3PPnig2twVet2ir618NUw9s8Q5KXrrLq#zQ3shT1KWQc6o3qrC3PPnig2twVet2ir618NUw9s8Q5KXrrLq" + ] +} \ No newline at end of file diff --git a/keys/unfccc.jwk b/keys/unfccc.jwk new file mode 100644 index 0000000..1ccc2c5 --- /dev/null +++ b/keys/unfccc.jwk @@ -0,0 +1 @@ +{"kty":"EC","crv":"secp256k1","x":"UyLz3FWAd5zIN7DulIXOqPy3uVCfDFWzxQufjo6bvKo","y":"iqt8lR9HbYoI_j09_Z01eTFpck_iUwRb6fpgoGU-vj4","d":"BWP5NjBRk2PWYIbSiDNf5zDMi96I0-6Io3e5s9ksRlM"} diff --git a/keys/verifier.diddoc.json b/keys/verifier.diddoc.json new file mode 100644 index 0000000..bbf0e28 --- /dev/null +++ b/keys/verifier.diddoc.json @@ -0,0 +1,32 @@ +{ + "@context": [ + "https://www.w3.org/ns/did/v1", + { + "EcdsaSecp256k1VerificationKey2019": "https://w3id.org/security#EcdsaSecp256k1VerificationKey2019", + "publicKeyJwk": { + "@id": "https://w3id.org/security#publicKeyJwk", + "@type": "@json" + } + } + ], + "id": "did:key:zQ3shv9K3mWECTkBBbd9VXtRbmgbpfBsRKijgvzmvYPfgbCnT", + "verificationMethod": [ + { + "id": "did:key:zQ3shv9K3mWECTkBBbd9VXtRbmgbpfBsRKijgvzmvYPfgbCnT#zQ3shv9K3mWECTkBBbd9VXtRbmgbpfBsRKijgvzmvYPfgbCnT", + "type": "EcdsaSecp256k1VerificationKey2019", + "controller": "did:key:zQ3shv9K3mWECTkBBbd9VXtRbmgbpfBsRKijgvzmvYPfgbCnT", + "publicKeyJwk": { + "kty": "EC", + "crv": "secp256k1", + "x": "5lqgcTPez3h4xtPtDN-H6-IDlrk8Ea4zPebgdBIKH1g", + "y": "BWBKVbVwCQLM4FAVgO4V-azr6AZojBpG4JQ9tALisYk" + } + } + ], + "authentication": [ + "did:key:zQ3shv9K3mWECTkBBbd9VXtRbmgbpfBsRKijgvzmvYPfgbCnT#zQ3shv9K3mWECTkBBbd9VXtRbmgbpfBsRKijgvzmvYPfgbCnT" + ], + "assertionMethod": [ + "did:key:zQ3shv9K3mWECTkBBbd9VXtRbmgbpfBsRKijgvzmvYPfgbCnT#zQ3shv9K3mWECTkBBbd9VXtRbmgbpfBsRKijgvzmvYPfgbCnT" + ] +} \ No newline at end of file diff --git a/keys/verifier.jwk b/keys/verifier.jwk new file mode 100644 index 0000000..fdbac19 --- /dev/null +++ b/keys/verifier.jwk @@ -0,0 +1 @@ +{"kty":"EC","crv":"secp256k1","x":"5lqgcTPez3h4xtPtDN-H6-IDlrk8Ea4zPebgdBIKH1g","y":"BWBKVbVwCQLM4FAVgO4V-azr6AZojBpG4JQ9tALisYk","d":"XdnnfcT-U7iR_KvCq3FHqi-a87ErzvH4cIg3XieFcns"} From 7b367b15e1c7659bfa5754b8e3a9f8e492fe28c9 Mon Sep 17 00:00:00 2001 From: Wip Date: Tue, 22 Mar 2022 23:38:11 +0000 Subject: [PATCH 10/21] reorg file structure --- rec/certifier.ed25519 | 7 ----- rec/certifier.ed25519.pub | 1 - .../diddocs/certifier.diddoc.json | 0 {keys => rec/diddocs}/hydroelec.diddoc.json | 0 {keys => rec/diddocs}/meter1.diddoc.json | 0 {keys => rec/diddocs}/meter2.diddoc.json | 0 {keys => rec/diddocs}/un.rec2022.diddoc.json | 0 {keys => rec/diddocs}/unfccc.diddoc.json | 0 {keys => rec/diddocs}/verifier.diddoc.json | 0 rec/hydroelec.did.json | 27 ------------------- rec/hydroelec.ed25519 | 7 ----- rec/hydroelec.ed25519.pub | 1 - {keys => rec/keys}/certifier.jwk | 0 {keys => rec/keys}/hydroelec.jwk | 0 {keys => rec/keys}/meter1.jwk | 0 {keys => rec/keys}/meter2.jwk | 0 {keys => rec/keys}/un.rec2022.jwk | 0 {keys => rec/keys}/unfccc.jwk | 0 {keys => rec/keys}/verifier.jwk | 0 rec/meter1.ed25519 | 7 ----- rec/meter1.ed25519.pub | 1 - rec/meter2.ed25519 | 7 ----- rec/meter2.ed25519.pub | 1 - rec/{ => projects}/hydroelec.project1.json | 0 rec/un.rec2022.ed25519 | 7 ----- rec/un.rec2022.ed25519.pub | 1 - rec/unfccc.ed25519 | 7 ----- rec/unfccc.ed25519.pub | 1 - rec/verifier.ed25519 | 7 ----- rec/verifier.ed25519.pub | 1 - 30 files changed, 83 deletions(-) delete mode 100644 rec/certifier.ed25519 delete mode 100644 rec/certifier.ed25519.pub rename keys/cerifier.diddoc.json => rec/diddocs/certifier.diddoc.json (100%) rename {keys => rec/diddocs}/hydroelec.diddoc.json (100%) rename {keys => rec/diddocs}/meter1.diddoc.json (100%) rename {keys => rec/diddocs}/meter2.diddoc.json (100%) rename {keys => rec/diddocs}/un.rec2022.diddoc.json (100%) rename {keys => rec/diddocs}/unfccc.diddoc.json (100%) rename {keys => rec/diddocs}/verifier.diddoc.json (100%) delete mode 100644 rec/hydroelec.did.json delete mode 100644 rec/hydroelec.ed25519 delete mode 100644 rec/hydroelec.ed25519.pub rename {keys => rec/keys}/certifier.jwk (100%) rename {keys => rec/keys}/hydroelec.jwk (100%) rename {keys => rec/keys}/meter1.jwk (100%) rename {keys => rec/keys}/meter2.jwk (100%) rename {keys => rec/keys}/un.rec2022.jwk (100%) rename {keys => rec/keys}/unfccc.jwk (100%) rename {keys => rec/keys}/verifier.jwk (100%) delete mode 100644 rec/meter1.ed25519 delete mode 100644 rec/meter1.ed25519.pub delete mode 100644 rec/meter2.ed25519 delete mode 100644 rec/meter2.ed25519.pub rename rec/{ => projects}/hydroelec.project1.json (100%) delete mode 100644 rec/un.rec2022.ed25519 delete mode 100644 rec/un.rec2022.ed25519.pub delete mode 100644 rec/unfccc.ed25519 delete mode 100644 rec/unfccc.ed25519.pub delete mode 100644 rec/verifier.ed25519 delete mode 100644 rec/verifier.ed25519.pub diff --git a/rec/certifier.ed25519 b/rec/certifier.ed25519 deleted file mode 100644 index b0f1f36..0000000 --- a/rec/certifier.ed25519 +++ /dev/null @@ -1,7 +0,0 @@ ------BEGIN OPENSSH PRIVATE KEY----- -b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW -QyNTUxOQAAACA7UyLgC6V9eFN7LZjFu3V4dXip6XYH6jvM/eJ4b1AOgAAAAJBx6Cj4cego -+AAAAAtzc2gtZWQyNTUxOQAAACA7UyLgC6V9eFN7LZjFu3V4dXip6XYH6jvM/eJ4b1AOgA -AAAEBKacBqhjtVdkuKjcdlXMncuXQL+M8sYrf0XqdKCU4wDztTIuALpX14U3stmMW7dXh1 -eKnpdgfqO8z94nhvUA6AAAAACUpvZUBMb3ZlcgECAwQ= ------END OPENSSH PRIVATE KEY----- diff --git a/rec/certifier.ed25519.pub b/rec/certifier.ed25519.pub deleted file mode 100644 index eb568ac..0000000 --- a/rec/certifier.ed25519.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDtTIuALpX14U3stmMW7dXh1eKnpdgfqO8z94nhvUA6A Joe@Lover diff --git a/keys/cerifier.diddoc.json b/rec/diddocs/certifier.diddoc.json similarity index 100% rename from keys/cerifier.diddoc.json rename to rec/diddocs/certifier.diddoc.json diff --git a/keys/hydroelec.diddoc.json b/rec/diddocs/hydroelec.diddoc.json similarity index 100% rename from keys/hydroelec.diddoc.json rename to rec/diddocs/hydroelec.diddoc.json diff --git a/keys/meter1.diddoc.json b/rec/diddocs/meter1.diddoc.json similarity index 100% rename from keys/meter1.diddoc.json rename to rec/diddocs/meter1.diddoc.json diff --git a/keys/meter2.diddoc.json b/rec/diddocs/meter2.diddoc.json similarity index 100% rename from keys/meter2.diddoc.json rename to rec/diddocs/meter2.diddoc.json diff --git a/keys/un.rec2022.diddoc.json b/rec/diddocs/un.rec2022.diddoc.json similarity index 100% rename from keys/un.rec2022.diddoc.json rename to rec/diddocs/un.rec2022.diddoc.json diff --git a/keys/unfccc.diddoc.json b/rec/diddocs/unfccc.diddoc.json similarity index 100% rename from keys/unfccc.diddoc.json rename to rec/diddocs/unfccc.diddoc.json diff --git a/keys/verifier.diddoc.json b/rec/diddocs/verifier.diddoc.json similarity index 100% rename from keys/verifier.diddoc.json rename to rec/diddocs/verifier.diddoc.json diff --git a/rec/hydroelec.did.json b/rec/hydroelec.did.json deleted file mode 100644 index e6e6115..0000000 --- a/rec/hydroelec.did.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "@context": [ - "https://www.w3.org/ns/did/v1", - "https://w3id.org/security/suites/ed25519-2020/v1" - ], - "id": "did:example:AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX", - "verificationMethod": [ - { - "id": "#key-0", - "type": "Ed25519VerificationKey2020", - "controller": "did:example:AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX", - "publicKeyMultibase": "AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX" - } - ], - "authentication": [ - "#key-0" - ], - "assertionMethod": [ - "#key-0" - ], - "capabilityDelegation": [ - "#key-0" - ], - "capabilityInvocation": [ - "#key-0" - ] -} \ No newline at end of file diff --git a/rec/hydroelec.ed25519 b/rec/hydroelec.ed25519 deleted file mode 100644 index cb73ffd..0000000 --- a/rec/hydroelec.ed25519 +++ /dev/null @@ -1,7 +0,0 @@ ------BEGIN OPENSSH PRIVATE KEY----- -b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW -QyNTUxOQAAACAsLXfvRCT3ogQ4d+xX4urieoK2KrR/e1qyVtH8rova1wAAAJA8CaqUPAmq -lAAAAAtzc2gtZWQyNTUxOQAAACAsLXfvRCT3ogQ4d+xX4urieoK2KrR/e1qyVtH8rova1w -AAAEDotYcJ9rL03efI6MOCLQcUq79A2yIy2wboWKTXCOVPLiwtd+9EJPeiBDh37Ffi6uJ6 -grYqtH97WrJW0fyui9rXAAAACUpvZUBMb3ZlcgECAwQ= ------END OPENSSH PRIVATE KEY----- diff --git a/rec/hydroelec.ed25519.pub b/rec/hydroelec.ed25519.pub deleted file mode 100644 index ea6e2ae..0000000 --- a/rec/hydroelec.ed25519.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX Joe@Lover diff --git a/keys/certifier.jwk b/rec/keys/certifier.jwk similarity index 100% rename from keys/certifier.jwk rename to rec/keys/certifier.jwk diff --git a/keys/hydroelec.jwk b/rec/keys/hydroelec.jwk similarity index 100% rename from keys/hydroelec.jwk rename to rec/keys/hydroelec.jwk diff --git a/keys/meter1.jwk b/rec/keys/meter1.jwk similarity index 100% rename from keys/meter1.jwk rename to rec/keys/meter1.jwk diff --git a/keys/meter2.jwk b/rec/keys/meter2.jwk similarity index 100% rename from keys/meter2.jwk rename to rec/keys/meter2.jwk diff --git a/keys/un.rec2022.jwk b/rec/keys/un.rec2022.jwk similarity index 100% rename from keys/un.rec2022.jwk rename to rec/keys/un.rec2022.jwk diff --git a/keys/unfccc.jwk b/rec/keys/unfccc.jwk similarity index 100% rename from keys/unfccc.jwk rename to rec/keys/unfccc.jwk diff --git a/keys/verifier.jwk b/rec/keys/verifier.jwk similarity index 100% rename from keys/verifier.jwk rename to rec/keys/verifier.jwk diff --git a/rec/meter1.ed25519 b/rec/meter1.ed25519 deleted file mode 100644 index 65812c1..0000000 --- a/rec/meter1.ed25519 +++ /dev/null @@ -1,7 +0,0 @@ ------BEGIN OPENSSH PRIVATE KEY----- -b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW -QyNTUxOQAAACD/pJ6UkZenkc/0/2lSP/VXWJwZFnqWCAytk+Hc4MSZEAAAAJCPYwBtj2MA -bQAAAAtzc2gtZWQyNTUxOQAAACD/pJ6UkZenkc/0/2lSP/VXWJwZFnqWCAytk+Hc4MSZEA -AAAEAojb2NXLc3uAs9dtPO62l0tJI1yuqcvgiZT83HQwnkx/+knpSRl6eRz/T/aVI/9VdY -nBkWepYIDK2T4dzgxJkQAAAACUpvZUBMb3ZlcgECAwQ= ------END OPENSSH PRIVATE KEY----- diff --git a/rec/meter1.ed25519.pub b/rec/meter1.ed25519.pub deleted file mode 100644 index e4e5edb..0000000 --- a/rec/meter1.ed25519.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP+knpSRl6eRz/T/aVI/9VdYnBkWepYIDK2T4dzgxJkQ Joe@Lover diff --git a/rec/meter2.ed25519 b/rec/meter2.ed25519 deleted file mode 100644 index 8eb419c..0000000 --- a/rec/meter2.ed25519 +++ /dev/null @@ -1,7 +0,0 @@ ------BEGIN OPENSSH PRIVATE KEY----- -b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW -QyNTUxOQAAACBpWXdInKmw9ePyqFADIN7B+6rf1meWZVWmg+Y+t+PzwAAAAJBYWv1ZWFr9 -WQAAAAtzc2gtZWQyNTUxOQAAACBpWXdInKmw9ePyqFADIN7B+6rf1meWZVWmg+Y+t+PzwA -AAAEBJV8EkMbabPwEZsfCgsV4b5Al0YQkVrt/Wx0XCfg5/BmlZd0icqbD14/KoUAMg3sH7 -qt/WZ5ZlVaaD5j634/PAAAAACUpvZUBMb3ZlcgECAwQ= ------END OPENSSH PRIVATE KEY----- diff --git a/rec/meter2.ed25519.pub b/rec/meter2.ed25519.pub deleted file mode 100644 index 81b7628..0000000 --- a/rec/meter2.ed25519.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGlZd0icqbD14/KoUAMg3sH7qt/WZ5ZlVaaD5j634/PA Joe@Lover diff --git a/rec/hydroelec.project1.json b/rec/projects/hydroelec.project1.json similarity index 100% rename from rec/hydroelec.project1.json rename to rec/projects/hydroelec.project1.json diff --git a/rec/un.rec2022.ed25519 b/rec/un.rec2022.ed25519 deleted file mode 100644 index 7aee61d..0000000 --- a/rec/un.rec2022.ed25519 +++ /dev/null @@ -1,7 +0,0 @@ ------BEGIN OPENSSH PRIVATE KEY----- -b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW -QyNTUxOQAAACC4S9KYjlfbxu1bgAlb8vZWZR+tMlQgIvUeZOJkZbzQ+gAAAJCVSM0GlUjN -BgAAAAtzc2gtZWQyNTUxOQAAACC4S9KYjlfbxu1bgAlb8vZWZR+tMlQgIvUeZOJkZbzQ+g -AAAEB1KOMm8qXMdG4BY/FrYBgsQOfhSgwex379jut/dSPUVLhL0piOV9vG7VuACVvy9lZl -H60yVCAi9R5k4mRlvND6AAAACUpvZUBMb3ZlcgECAwQ= ------END OPENSSH PRIVATE KEY----- diff --git a/rec/un.rec2022.ed25519.pub b/rec/un.rec2022.ed25519.pub deleted file mode 100644 index 8185063..0000000 --- a/rec/un.rec2022.ed25519.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILhL0piOV9vG7VuACVvy9lZlH60yVCAi9R5k4mRlvND6 Joe@Lover diff --git a/rec/unfccc.ed25519 b/rec/unfccc.ed25519 deleted file mode 100644 index 3bc83ab..0000000 --- a/rec/unfccc.ed25519 +++ /dev/null @@ -1,7 +0,0 @@ ------BEGIN OPENSSH PRIVATE KEY----- -b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW -QyNTUxOQAAACCmafpfkbgGzJHjUj1LBaFxH+tRUh4uMG0sb0sEsIPRNQAAAJBWPBLRVjwS -0QAAAAtzc2gtZWQyNTUxOQAAACCmafpfkbgGzJHjUj1LBaFxH+tRUh4uMG0sb0sEsIPRNQ -AAAEBSeKllBJdnRPSX40p5pUgkN+Gy6x6+qMtYfrHBgCKMT6Zp+l+RuAbMkeNSPUsFoXEf -61FSHi4wbSxvSwSwg9E1AAAACUpvZUBMb3ZlcgECAwQ= ------END OPENSSH PRIVATE KEY----- diff --git a/rec/unfccc.ed25519.pub b/rec/unfccc.ed25519.pub deleted file mode 100644 index b0098fc..0000000 --- a/rec/unfccc.ed25519.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKZp+l+RuAbMkeNSPUsFoXEf61FSHi4wbSxvSwSwg9E1 Joe@Lover diff --git a/rec/verifier.ed25519 b/rec/verifier.ed25519 deleted file mode 100644 index d987b51..0000000 --- a/rec/verifier.ed25519 +++ /dev/null @@ -1,7 +0,0 @@ ------BEGIN OPENSSH PRIVATE KEY----- -b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW -QyNTUxOQAAACAfHoj92pxNPGOVt2FJDAL4CZud+0D5BoJEM+SMfNYiUgAAAJC/s9Omv7PT -pgAAAAtzc2gtZWQyNTUxOQAAACAfHoj92pxNPGOVt2FJDAL4CZud+0D5BoJEM+SMfNYiUg -AAAEBKNkIs1ArQmwedxzAZWmPwCfpOUcordJvIUznIYfrz3x8eiP3anE08Y5W3YUkMAvgJ -m537QPkGgkQz5Ix81iJSAAAACUpvZUBMb3ZlcgECAwQ= ------END OPENSSH PRIVATE KEY----- diff --git a/rec/verifier.ed25519.pub b/rec/verifier.ed25519.pub deleted file mode 100644 index 37bcdfd..0000000 --- a/rec/verifier.ed25519.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB8eiP3anE08Y5W3YUkMAvgJm537QPkGgkQz5Ix81iJS Joe@Lover From 97a4c71cd0b897a9aa781ac9c59d561d192893b3 Mon Sep 17 00:00:00 2001 From: Wip Date: Wed, 23 Mar 2022 17:53:03 +0000 Subject: [PATCH 11/21] update file & folder names & sync readme --- README.md | 38 +++++++++---------- .../certifier.did.json} | 0 .../hydroelec.did.json} | 0 .../meter1.did.json} | 0 .../meter2.did.json} | 0 .../un.rec2022.did.json} | 0 .../unfccc.did.json} | 0 .../verifier.did.json} | 0 8 files changed, 19 insertions(+), 19 deletions(-) rename rec/{diddocs/certifier.diddoc.json => dids/certifier.did.json} (100%) rename rec/{diddocs/hydroelec.diddoc.json => dids/hydroelec.did.json} (100%) rename rec/{diddocs/meter1.diddoc.json => dids/meter1.did.json} (100%) rename rec/{diddocs/meter2.diddoc.json => dids/meter2.did.json} (100%) rename rec/{diddocs/un.rec2022.diddoc.json => dids/un.rec2022.did.json} (100%) rename rec/{diddocs/unfccc.diddoc.json => dids/unfccc.did.json} (100%) rename rec/{diddocs/verifier.diddoc.json => dids/verifier.did.json} (100%) diff --git a/README.md b/README.md index f4162a7..89799d4 100644 --- a/README.md +++ b/README.md @@ -10,42 +10,42 @@ These artifacts help realize the Renewable Energy Certificates Focal Use Case. Many of the identifiers used in this set of artifacts are DIDs based on cryptographic public/private keypairs. This allows the artifacts' identifiers to be created offline and secured using cryptographic signatures. -The public/private key pairs for these identifiers have been generated using Ed25519: +The public/private key pairs are Secp256k1 keys generated using [didkit](https://spruceid.dev/docs/didkit/) and represented in [Json Web Key](https://datatracker.ietf.org/doc/html/rfc7517) format. The .jwk files contain both the public and private keys for each actor. From these keys a DID and associated DID Document has been generated using didkit. * **HydroElec** — The producer behind the proposed project. - * private Key [./rec/hydroelec.ed25519](./rec/hydroelec.ed25519) - * public key [./rec/hydroelec.ed25519.pub](./rec/hydroelec.ed25519.pub) + * Key pair [./rec/keys/hydroelec.jwk](./rec/keys/hydroelec.jwk) + * DID [./rec/dids/hydroelec.did.json](./rec/dids/hydroelec.did.json) * **Smart Meter 1** — The first of two electric meters that issue signed VCs as evidence of electricity production. - * private Key [./rec/meter1.ed25519](./rec/meter1.ed25519) - * public key [./rec/meter1.ed25519.pub](./rec/meter1.ed25519.pub) + * Key pair [./rec/keys/meter1.jwk](./rec/keys/meter1.jwk) + * DID [./rec/dids/meter1.did.json](./rec/dids/meter1.did.json) * **Smart Meter 2** — The second of two electric meters that issue signed VCs as evidence of electricity production. - * private Key [./rec/meter2.ed25519](./rec/meter2.ed25519) - * public key [./rec/meter2.ed25519.pub](./rec/meter2.ed25519.pub) + * Key pair [./rec/keys/meter2.jwk](./rec/keys/meter2.jwk) + * DID [./rec/dids/meter2.did.json](./rec/dids/meter2.did.json) * **UN FCCC** — The issuing authority for REC2022 Renewable Energy Certificates. - * private Key [./rec/unfccc.ed25519](./rec/unfccc.ed25519) - * public key [./rec/unfccc.ed25519.pub](./rec/unfccc.ed25519.pub) + * Key pair [./rec/keys/unfccc.jwl](./rec/keys/unfccc.jwk) + * DID [./rec/dids/unfccc.did.json](./rec/dids/unfccc.did.json) * **UN Rec2022** (DOES THIS NEED TO BE CRYPTOGRAPHIC?) - * private Key [./rec/un.rec2022.ed25519](./rec/un.rec2022.ed25519) - * public key [./rec/un.rec2022.ed25519.pub](./rec/un.rec2022.ed25519.pub) + * Key pair [./rec/keys/un.rec2022.jwk](./rec/keys/un.rec2022.jwk) + * DID [./rec/dids/un.rec2022.did.json](./rec/dids/un.rec2022.did.json) * **Certifier** — A UN authorized project certifier. They review the project proposal from the producer and issue an REC2022 Certification verifiable credential. - * private Key [./rec/certifier.ed25519](./rec/certifier.ed25519) - * public key [./rec/certifier.ed25519.pub](./rec/certifier.ed25519.pub) + * Key pair [./rec/keys/certifier.jwk](./rec/keys/certifier.jwk) + * DID [./rec/dids/certifier.did.json](./rec/dids/certifier.did.json) * **Verifier** — A UN authorized project verifier. They review the project on-site and issue an REC2022 Verification verifiable credential, based the propsoal, the REC2022 Certification, and the evidence produced by the Project's smart meters. - * private Key [./rec/verifier.ed25519](./rec/verifier.ed25519) - * public key [./rec/verifier.ed25519.pub](./rec/verifier.ed25519.pub) + * Key pair [./rec/keys/verifier.jwk](./rec/keys/verifier.jwk) + * DID [./rec/dids/verifier.did.json](./rec/dids/verifier.did.json) ### Verifiable Credentials (VCs) 1. Project Proposal -This VC captures the automated metadata about the project and refers definitively for a descriptive PDF with additional details. [./rec/hydroelec.project1.json](./rec/hydroelec.project1.json) +This VC captures the automated metadata about the project and refers definitively for a descriptive PDF with additional details. [./rec/projects/hydroelec.project1.json](./rec/projects/hydroelec.project1.json) That file is a fully formed VC describing the following metadata: * **producer**: HydroElec's DID for exercising control over this project @@ -66,11 +66,11 @@ Throughout these examples, we use a fictional did:example which uses an Ed25519 #### 1. HydroElec -The included files, [./rec/hydroelec.ed25519](./rec/hydroelec.ed25519) and [./rec/hydroelec.ed25519.pub](./rec/hydroelec.ed25519.pub) are the private and public keys, respectively, that control this DID: +The file [./rec/keys/hydroelec.jwk](./rec/hydroelec.ed25519) is a representation of the private and public keys, respectively, that control this DID: -```did:example:AAAAC3NzaC1lZDI1NTE5AAAAICwtd+9EJPeiBDh37Ffi6uJ6grYqtH97WrJW0fyui9rX``` +```did:key:zQ3shPm1156YHd3pzvhz8BMtZPT9LnTxtGyFBnm8tzJmjnBWD``` -See [./rec/hydroelec.did.json](./rec/hydroelec.did.json) for the DID Document for HydroElec. +When this DID is resolved it returns the DID Document found in [./rec/dids/hydroelec.did.json](./rec/dids/hydroelec.did.json) 2. UNFCCC 3. Certifier diff --git a/rec/diddocs/certifier.diddoc.json b/rec/dids/certifier.did.json similarity index 100% rename from rec/diddocs/certifier.diddoc.json rename to rec/dids/certifier.did.json diff --git a/rec/diddocs/hydroelec.diddoc.json b/rec/dids/hydroelec.did.json similarity index 100% rename from rec/diddocs/hydroelec.diddoc.json rename to rec/dids/hydroelec.did.json diff --git a/rec/diddocs/meter1.diddoc.json b/rec/dids/meter1.did.json similarity index 100% rename from rec/diddocs/meter1.diddoc.json rename to rec/dids/meter1.did.json diff --git a/rec/diddocs/meter2.diddoc.json b/rec/dids/meter2.did.json similarity index 100% rename from rec/diddocs/meter2.diddoc.json rename to rec/dids/meter2.did.json diff --git a/rec/diddocs/un.rec2022.diddoc.json b/rec/dids/un.rec2022.did.json similarity index 100% rename from rec/diddocs/un.rec2022.diddoc.json rename to rec/dids/un.rec2022.did.json diff --git a/rec/diddocs/unfccc.diddoc.json b/rec/dids/unfccc.did.json similarity index 100% rename from rec/diddocs/unfccc.diddoc.json rename to rec/dids/unfccc.did.json diff --git a/rec/diddocs/verifier.diddoc.json b/rec/dids/verifier.did.json similarity index 100% rename from rec/diddocs/verifier.diddoc.json rename to rec/dids/verifier.did.json From 8f5436f202e56647e9b66cf296f8593687c798f6 Mon Sep 17 00:00:00 2001 From: Wip Date: Wed, 23 Mar 2022 17:54:16 +0000 Subject: [PATCH 12/21] update projects foldername to credentials --- README.md | 2 +- rec/{projects => credentials}/hydroelec.project1.json | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename rec/{projects => credentials}/hydroelec.project1.json (100%) diff --git a/README.md b/README.md index 89799d4..8490760 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ The public/private key pairs are Secp256k1 keys generated using [didkit](https:/ 1. Project Proposal -This VC captures the automated metadata about the project and refers definitively for a descriptive PDF with additional details. [./rec/projects/hydroelec.project1.json](./rec/projects/hydroelec.project1.json) +This VC captures the automated metadata about the project and refers definitively for a descriptive PDF with additional details. [./rec/credentials/hydroelec.project1.json](./rec/credentials/hydroelec.project1.json) That file is a fully formed VC describing the following metadata: * **producer**: HydroElec's DID for exercising control over this project diff --git a/rec/projects/hydroelec.project1.json b/rec/credentials/hydroelec.project1.json similarity index 100% rename from rec/projects/hydroelec.project1.json rename to rec/credentials/hydroelec.project1.json From 97319894b90f72216d2c382da88ca2cd08d0b53f Mon Sep 17 00:00:00 2001 From: Will Abramson Date: Fri, 25 Mar 2022 04:09:09 +0000 Subject: [PATCH 13/21] Update README.md Co-authored-by: Joe Andrieu --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8490760..b930387 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ The public/private key pairs are Secp256k1 keys generated using [didkit](https:/ * **Verifier** — A UN authorized project verifier. They review the project on-site and issue an REC2022 Verification verifiable credential, based the propsoal, the REC2022 Certification, and the evidence produced by the Project's smart meters. * Key pair [./rec/keys/verifier.jwk](./rec/keys/verifier.jwk) - * DID [./rec/dids/verifier.did.json](./rec/dids/verifier.did.json) + * DID document [./rec/dids/verifier.did.json](./rec/dids/verifier.did.json) ### Verifiable Credentials (VCs) From d86be7eea91ae797c693b4ebb0f5371bdaf87e36 Mon Sep 17 00:00:00 2001 From: Will Abramson Date: Fri, 25 Mar 2022 04:09:30 +0000 Subject: [PATCH 14/21] Change to DID document Co-authored-by: Joe Andrieu --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b930387..949fe5c 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ The public/private key pairs are Secp256k1 keys generated using [didkit](https:/ * **Certifier** — A UN authorized project certifier. They review the project proposal from the producer and issue an REC2022 Certification verifiable credential. * Key pair [./rec/keys/certifier.jwk](./rec/keys/certifier.jwk) - * DID [./rec/dids/certifier.did.json](./rec/dids/certifier.did.json) + * DID document [./rec/dids/certifier.did.json](./rec/dids/certifier.did.json) * **Verifier** — A UN authorized project verifier. They review the project on-site and issue an REC2022 Verification verifiable credential, based the propsoal, the REC2022 Certification, and the evidence produced by the Project's smart meters. * Key pair [./rec/keys/verifier.jwk](./rec/keys/verifier.jwk) From 05c855fdb093b11343cbc89a1bff11cd60f987c2 Mon Sep 17 00:00:00 2001 From: Will Abramson Date: Fri, 25 Mar 2022 04:09:41 +0000 Subject: [PATCH 15/21] Change to DID document Co-authored-by: Joe Andrieu --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 949fe5c..c79b34e 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ The public/private key pairs are Secp256k1 keys generated using [didkit](https:/ * **UN FCCC** — The issuing authority for REC2022 Renewable Energy Certificates. * Key pair [./rec/keys/unfccc.jwl](./rec/keys/unfccc.jwk) - * DID [./rec/dids/unfccc.did.json](./rec/dids/unfccc.did.json) + * DID document [./rec/dids/unfccc.did.json](./rec/dids/unfccc.did.json) * **UN Rec2022** (DOES THIS NEED TO BE CRYPTOGRAPHIC?) * Key pair [./rec/keys/un.rec2022.jwk](./rec/keys/un.rec2022.jwk) From 559033b7b737e207de4702ea05f88adf8c0a0f79 Mon Sep 17 00:00:00 2001 From: Will Abramson Date: Fri, 25 Mar 2022 04:09:50 +0000 Subject: [PATCH 16/21] Change to DID document Co-authored-by: Joe Andrieu --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c79b34e..17550be 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ The public/private key pairs are Secp256k1 keys generated using [didkit](https:/ * **Smart Meter 2** — The second of two electric meters that issue signed VCs as evidence of electricity production. * Key pair [./rec/keys/meter2.jwk](./rec/keys/meter2.jwk) - * DID [./rec/dids/meter2.did.json](./rec/dids/meter2.did.json) + * DID document [./rec/dids/meter2.did.json](./rec/dids/meter2.did.json) * **UN FCCC** — The issuing authority for REC2022 Renewable Energy Certificates. * Key pair [./rec/keys/unfccc.jwl](./rec/keys/unfccc.jwk) From acf6accba3a8ef575c5e38cb1b5b2e2f6e8f6023 Mon Sep 17 00:00:00 2001 From: Will Abramson Date: Fri, 25 Mar 2022 04:10:00 +0000 Subject: [PATCH 17/21] Change to DID document Co-authored-by: Joe Andrieu --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 17550be..af35f24 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ The file [./rec/keys/hydroelec.jwk](./rec/hydroelec.ed25519) is a representation ```did:key:zQ3shPm1156YHd3pzvhz8BMtZPT9LnTxtGyFBnm8tzJmjnBWD``` -When this DID is resolved it returns the DID Document found in [./rec/dids/hydroelec.did.json](./rec/dids/hydroelec.did.json) +When this DID is resolved it returns the DID document found in [./rec/dids/hydroelec.did.json](./rec/dids/hydroelec.did.json) 2. UNFCCC 3. Certifier From 55d4fcaf5c02a6a65b603a5a2190fcc2c9f5b4a8 Mon Sep 17 00:00:00 2001 From: Will Abramson Date: Fri, 25 Mar 2022 04:10:09 +0000 Subject: [PATCH 18/21] Change to DID document Co-authored-by: Joe Andrieu --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index af35f24..de48fd3 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ The public/private key pairs are Secp256k1 keys generated using [didkit](https:/ * **UN Rec2022** (DOES THIS NEED TO BE CRYPTOGRAPHIC?) * Key pair [./rec/keys/un.rec2022.jwk](./rec/keys/un.rec2022.jwk) - * DID [./rec/dids/un.rec2022.did.json](./rec/dids/un.rec2022.did.json) + * DID document [./rec/dids/un.rec2022.did.json](./rec/dids/un.rec2022.did.json) * **Certifier** — A UN authorized project certifier. They review the project proposal from the producer and issue an REC2022 Certification verifiable credential. * Key pair [./rec/keys/certifier.jwk](./rec/keys/certifier.jwk) From 7c44bd11a8e1ebcc5774858f3a8ce2b841192e6e Mon Sep 17 00:00:00 2001 From: Will Abramson Date: Fri, 25 Mar 2022 04:10:18 +0000 Subject: [PATCH 19/21] Change to DID document Co-authored-by: Joe Andrieu --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index de48fd3..0ff2b96 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ The public/private key pairs are Secp256k1 keys generated using [didkit](https:/ * **Smart Meter 1** — The first of two electric meters that issue signed VCs as evidence of electricity production. * Key pair [./rec/keys/meter1.jwk](./rec/keys/meter1.jwk) - * DID [./rec/dids/meter1.did.json](./rec/dids/meter1.did.json) + * DID document [./rec/dids/meter1.did.json](./rec/dids/meter1.did.json) * **Smart Meter 2** — The second of two electric meters that issue signed VCs as evidence of electricity production. * Key pair [./rec/keys/meter2.jwk](./rec/keys/meter2.jwk) From df6fcbefb51b6ea5b42efe69cc6b3dc4fa1927f3 Mon Sep 17 00:00:00 2001 From: Will Abramson Date: Fri, 25 Mar 2022 04:10:29 +0000 Subject: [PATCH 20/21] Change to DID document Co-authored-by: Joe Andrieu --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0ff2b96..502d656 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ The public/private key pairs are Secp256k1 keys generated using [didkit](https:/ * **HydroElec** — The producer behind the proposed project. * Key pair [./rec/keys/hydroelec.jwk](./rec/keys/hydroelec.jwk) - * DID [./rec/dids/hydroelec.did.json](./rec/dids/hydroelec.did.json) + * DID document [./rec/dids/hydroelec.did.json](./rec/dids/hydroelec.did.json) * **Smart Meter 1** — The first of two electric meters that issue signed VCs as evidence of electricity production. * Key pair [./rec/keys/meter1.jwk](./rec/keys/meter1.jwk) From 81425b6cd7bc3ca9e8bc89579a2656bd8ab6e667 Mon Sep 17 00:00:00 2001 From: Will Abramson Date: Fri, 25 Mar 2022 04:11:39 +0000 Subject: [PATCH 21/21] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 502d656..09def53 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ These artifacts help realize the Renewable Energy Certificates Focal Use Case. Many of the identifiers used in this set of artifacts are DIDs based on cryptographic public/private keypairs. This allows the artifacts' identifiers to be created offline and secured using cryptographic signatures. -The public/private key pairs are Secp256k1 keys generated using [didkit](https://spruceid.dev/docs/didkit/) and represented in [Json Web Key](https://datatracker.ietf.org/doc/html/rfc7517) format. The .jwk files contain both the public and private keys for each actor. From these keys a DID and associated DID Document has been generated using didkit. +The public/private key pairs are Secp256k1 keys generated using [didkit](https://spruceid.dev/docs/didkit/) and represented in [Json Web Key](https://datatracker.ietf.org/doc/html/rfc7517) format. The .jwk files contain both the public and private keys for each actor. From these keys a DID and associated DID document has been generated using didkit. * **HydroElec** — The producer behind the proposed project. * Key pair [./rec/keys/hydroelec.jwk](./rec/keys/hydroelec.jwk)