├── .github └── workflows │ └── auto-publish.yml ├── .pr-preview.json ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── TestVectors ├── Ed25519Signature2020 │ ├── canonDocEdSig.txt │ ├── combinedHashEdSig.txt │ ├── docHashEdSig.txt │ ├── proofCanonEdSig.txt │ ├── proofConfigEdSig.json │ ├── proofHashEdSig.txt │ ├── sigBTC58EdSig.txt │ ├── sigHexEdSig.txt │ └── signedEdSig.json ├── eddsa-jcs-2022 │ ├── canonDocJCS.txt │ ├── combinedHashJCS.txt │ ├── docHashJCS.txt │ ├── proofCanonJCS.txt │ ├── proofConfigJCS.json │ ├── proofHashJCS.txt │ ├── sigBTC58JCS.txt │ ├── sigHexJCS.txt │ └── signedJCS.json ├── eddsa-rdfc-2022 │ ├── canonDocDataInt.txt │ ├── combinedHashDataInt.txt │ ├── docHashDataInt.txt │ ├── employ │ │ ├── canonDocDataInt.txt │ │ ├── combinedHashDataInt.txt │ │ ├── docHashDataInt.txt │ │ ├── proofCanonDataInt.txt │ │ ├── proofConfigDataInt.json │ │ ├── proofHashDataInt.txt │ │ ├── sigBTC58DataInt.txt │ │ ├── sigHexDataInt.txt │ │ └── signedDataInt.json │ ├── proofCanonDataInt.txt │ ├── proofConfigDataInt.json │ ├── proofHashDataInt.txt │ ├── sigBTC58DataInt.txt │ ├── sigHexDataInt.txt │ └── signedDataInt.json ├── employmentAuth.json ├── keyPair.json ├── proof-set-chain │ ├── multiKeyPairs.json │ ├── proofChainConfig1.json │ ├── proofChainConfig2.json │ ├── proofChainConfigSigned1.json │ ├── proofChainConfigSigned2.json │ ├── proofChainTempDoc1.json │ ├── proofChainTempDoc2.json │ ├── proofSetConfig1.json │ ├── proofSetConfig2.json │ ├── proofSetConfigSigned1.json │ ├── proofSetConfigSigned2.json │ ├── signedProofChain1.json │ ├── signedProofChain2.json │ ├── signedProofSet1.json │ ├── signedProofSet2.json │ └── unsigned.json └── unsigned.json ├── contexts └── lds-ed25519-2020-v1.json ├── errata.html ├── index.html ├── transitions ├── 2022 │ └── CGFR │ │ └── index.html ├── 2023 │ └── FPWD │ │ └── index.html ├── 2024 │ ├── CR1 │ │ └── Overview.html │ └── CR2 │ │ └── index.html └── 2025 │ ├── PR │ └── index.html │ └── REC │ └── index.html └── w3c.json /.github/workflows/auto-publish.yml: -------------------------------------------------------------------------------- 1 | # .github/workflows/auto-publish.yml 2 | name: CI 3 | on: 4 | pull_request: {} 5 | push: 6 | branches: [main] 7 | jobs: 8 | main: 9 | name: Build, Validate and Deploy 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v3 13 | - uses: w3c/spec-prod@v2 14 | with: 15 | TOOLCHAIN: respec 16 | W3C_ECHIDNA_TOKEN: ${{ secrets.W3C_TR_TOKEN }} 17 | W3C_WG_DECISION_URL: https://www.w3.org/2017/vc/WG/Meetings/Minutes/2023-04-12-vcwg#resolution1 18 | W3C_BUILD_OVERRIDE: | 19 | shortName: vc-di-eddsa 20 | specStatus: CRD 21 | -------------------------------------------------------------------------------- /.pr-preview.json: -------------------------------------------------------------------------------- 1 | { 2 | "src_file": "index.html", 3 | "type": "respec" 4 | } 5 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # These owners will be the default owners for everything in 2 | # the repo. Unless a later match takes precedence, 3 | # they will be requested for review when someone opens a 4 | # pull request. 5 | * @msporny @dmitrizagidulin @Wind4Greg @seabass-labrax 6 | 7 | # See CODEOWNERS syntax here: https://help.github.com/articles/about-codeowners/#codeowners-syntax 8 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | All documentation, code and communication under this repository are covered 4 | by the [W3C Code of Ethics and Professional Conduct](https://www.w3.org/Consortium/cepc/). 5 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # EdDSA Data Integrity Cryptosuites 2 | 3 | Contributions to this repository are intended to become part of 4 | Recommendation-track documents governed by the [W3C Patent 5 | Policy](https://www.w3.org/Consortium/Patent-Policy-20040205/) and [Software and 6 | Document License](https://www.w3.org/Consortium/Legal/copyright-software). To 7 | make substantive contributions to specifications, you must either participate in 8 | the relevant W3C Working Group or make a non-member patent licensing commitment. 9 | 10 | If you are not the sole contributor to a contribution (pull request), please 11 | identify all contributors in the pull request comment. 12 | 13 | To add a contributor (other than yourself, that's automatic), mark them one per 14 | line as follows: 15 | 16 | ``` 17 | +@github_username 18 | ``` 19 | 20 | If you added a contributor by mistake, you can remove them in a comment with: 21 | 22 | ``` 23 | -@github_username 24 | ``` 25 | 26 | If you are making a pull request on behalf of someone else but you had no part 27 | in designing the feature, you can remove yourself with the above syntax. 28 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | All documents in this Repository are licensed by contributors under the [W3C 2 | Software and Document License](https://www.w3.org/Consortium/Legal/copyright-software). 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## EdDSA Data Integrity Cryptosuites 2 | 3 | This specification describes a Data Integrity cryptographic suite for use when 4 | creating or verifying a digital signature using the twisted Edwards Curve 5 | Digital Signature Algorithm (EdDSA) and Curve25519 (ed25519). The approach is 6 | accepted by the U.S. National Institute of Standards in the latest FIPS 186-5 7 | draft and, after ratification, is expected to meet U.S. Federal Information 8 | Processing requirements when using cryptography to secure digital information. 9 | 10 | We encourage contributions meeting the 11 | [Contribution Guidelines](CONTRIBUTING.md). While we prefer the creation of 12 | issues and Pull Requests in the GitHub repository, discussions also occur on the 13 | [public-vc-wg](http://lists.w3.org/Archives/Public/public-vc-wg/) mailing list. 14 | 15 | ## Verifiable Credentials Working Group 16 | * Group page: [https://www.w3.org/2017/vc/WG/](https://www.w3.org/2017/vc/WG/) 17 | * Charter: [https://www.w3.org/2022/06/verifiable-credentials-wg-charter.html](https://www.w3.org/2022/06/verifiable-credentials-wg-charter.html) 18 | * Chairs 19 | * Brent Zundel - @brentzundel 20 | * W3C Staff Contact 21 | * Ivan Herman - @iherman 22 | 23 | ### Other Relevant Working Group Repositories 24 | * [Use Cases](https://github.com/w3c/vc-use-cases) 25 | * [Data Model](https://github.com/w3c/vc-data-model) 26 | * [Data Integrity](https://github.com/w3c/vc-data-integrity) 27 | 28 | ### Discussion Forums 29 | * [W3C Credentials Community Group Mailing List (Incubation)](https://lists.w3.org/Archives/Public/public-credentials/) 30 | * [W3C Verifiable Credentials WG Mailing List (Standardization)](https://lists.w3.org/Archives/Public/public-vc-wg/) 31 | 32 | ## Process Overview for VC Data Model Pull Requests 33 | 1. Anyone can open a PR on the repository. Note that for the PR to be merged, 34 | the individual must agree to the 35 | [W3C Patent Policy](https://www.w3.org/Consortium/Patent-Policy/). 36 | 2. Once a PR is opened, it will be reviewed by the Editors and other WG 37 | Members. 38 | 3. The W3C CCG is automatically notified of PRs as they are raised and 39 | discussed. 40 | 4. PRs are usually merged in 7 days if there is adequate review and consensus, 41 | as determined by the Chairs and Editors. 42 | 43 | ### Roadmap for 2022-2024 44 | 45 | The VCWG has a set of 46 | [deliverables](https://www.w3.org/2022/06/verifiable-credentials-wg-charter.html#deliverables) 47 | and a 48 | [timeline](https://www.w3.org/2022/06/verifiable-credentials-wg-charter.html#timeline) 49 | listed in the most recent 50 | [VCWG charter](https://www.w3.org/2022/06/verifiable-credentials-wg-charter.html) 51 | -------------------------------------------------------------------------------- /TestVectors/Ed25519Signature2020/canonDocEdSig.txt: -------------------------------------------------------------------------------- 1 | "The School of Examples" . 2 | . 3 | . 4 | "A minimum viable example of an Alumni Credential." . 5 | "Alumni Credential" . 6 | . 7 | . 8 | "2023-01-01T00:00:00Z"^^ . 9 | -------------------------------------------------------------------------------- /TestVectors/Ed25519Signature2020/combinedHashEdSig.txt: -------------------------------------------------------------------------------- 1 | 04e14bcf5727cba0c0aa04a04d22a56fef915d5f8f7756bb92ae67cb1d0c4847517744132ae165a5349155bef0bb0cf2258fff99dfe1dbd914b938d775a36017 -------------------------------------------------------------------------------- /TestVectors/Ed25519Signature2020/docHashEdSig.txt: -------------------------------------------------------------------------------- 1 | 517744132ae165a5349155bef0bb0cf2258fff99dfe1dbd914b938d775a36017 -------------------------------------------------------------------------------- /TestVectors/Ed25519Signature2020/proofCanonEdSig.txt: -------------------------------------------------------------------------------- 1 | _:c14n0 "2023-02-24T23:36:38Z"^^ . 2 | _:c14n0 . 3 | _:c14n0 . 4 | _:c14n0 . 5 | -------------------------------------------------------------------------------- /TestVectors/Ed25519Signature2020/proofConfigEdSig.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "Ed25519Signature2020", 3 | "created": "2023-02-24T23:36:38Z", 4 | "verificationMethod": "did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2#z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2", 5 | "proofPurpose": "assertionMethod", 6 | "@context": [ 7 | "https://www.w3.org/ns/credentials/v2", 8 | "https://www.w3.org/ns/credentials/examples/v2", 9 | "https://w3id.org/security/suites/ed25519-2020/v1" 10 | ] 11 | } -------------------------------------------------------------------------------- /TestVectors/Ed25519Signature2020/proofHashEdSig.txt: -------------------------------------------------------------------------------- 1 | 04e14bcf5727cba0c0aa04a04d22a56fef915d5f8f7756bb92ae67cb1d0c4847 -------------------------------------------------------------------------------- /TestVectors/Ed25519Signature2020/sigBTC58EdSig.txt: -------------------------------------------------------------------------------- 1 | z57Mm1vboMtZiCyJ4aReZsv8co4Re64Y8GEjL1ZARzMbXZgkARFLqFs1P345NpPGG2hgCrS4nNdvJhpwnrNyG3kEF -------------------------------------------------------------------------------- /TestVectors/Ed25519Signature2020/sigHexEdSig.txt: -------------------------------------------------------------------------------- 1 | cd8d023e8a9b462d563bbbd24c4499d8172738eb3f5235d74f65971e9be36dd7f23a1e201791e9a6747e45b8fa877a984f51f591567365c4d8222ecad39be60c -------------------------------------------------------------------------------- /TestVectors/Ed25519Signature2020/signedEdSig.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": [ 3 | "https://www.w3.org/ns/credentials/v2", 4 | "https://www.w3.org/ns/credentials/examples/v2", 5 | "https://w3id.org/security/suites/ed25519-2020/v1" 6 | ], 7 | "id": "urn:uuid:58172aac-d8ba-11ed-83dd-0b3aef56cc33", 8 | "type": [ 9 | "VerifiableCredential", 10 | "AlumniCredential" 11 | ], 12 | "name": "Alumni Credential", 13 | "description": "A minimum viable example of an Alumni Credential.", 14 | "issuer": "https://vc.example/issuers/5678", 15 | "validFrom": "2023-01-01T00:00:00Z", 16 | "credentialSubject": { 17 | "id": "did:example:abcdefgh", 18 | "alumniOf": "The School of Examples" 19 | }, 20 | "proof": { 21 | "type": "Ed25519Signature2020", 22 | "created": "2023-02-24T23:36:38Z", 23 | "verificationMethod": "did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2#z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2", 24 | "proofPurpose": "assertionMethod", 25 | "proofValue": "z57Mm1vboMtZiCyJ4aReZsv8co4Re64Y8GEjL1ZARzMbXZgkARFLqFs1P345NpPGG2hgCrS4nNdvJhpwnrNyG3kEF" 26 | } 27 | } -------------------------------------------------------------------------------- /TestVectors/eddsa-jcs-2022/canonDocJCS.txt: -------------------------------------------------------------------------------- 1 | {"@context":["https://www.w3.org/ns/credentials/v2","https://www.w3.org/ns/credentials/examples/v2"],"credentialSubject":{"alumniOf":"The School of Examples","id":"did:example:abcdefgh"},"description":"A minimum viable example of an Alumni Credential.","id":"urn:uuid:58172aac-d8ba-11ed-83dd-0b3aef56cc33","issuer":"https://vc.example/issuers/5678","name":"Alumni Credential","type":["VerifiableCredential","AlumniCredential"],"validFrom":"2023-01-01T00:00:00Z"} -------------------------------------------------------------------------------- /TestVectors/eddsa-jcs-2022/combinedHashJCS.txt: -------------------------------------------------------------------------------- 1 | 66ab154f5c2890a140cb8388a22a160454f80575f6eae09e5a097cabe539a1db59b7cb6251b8991add1ce0bc83107e3db9dbbab5bd2c28f687db1a03abc92f19 -------------------------------------------------------------------------------- /TestVectors/eddsa-jcs-2022/docHashJCS.txt: -------------------------------------------------------------------------------- 1 | 59b7cb6251b8991add1ce0bc83107e3db9dbbab5bd2c28f687db1a03abc92f19 -------------------------------------------------------------------------------- /TestVectors/eddsa-jcs-2022/proofCanonJCS.txt: -------------------------------------------------------------------------------- 1 | {"@context":["https://www.w3.org/ns/credentials/v2","https://www.w3.org/ns/credentials/examples/v2"],"created":"2023-02-24T23:36:38Z","cryptosuite":"eddsa-jcs-2022","proofPurpose":"assertionMethod","type":"DataIntegrityProof","verificationMethod":"did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2#z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2"} -------------------------------------------------------------------------------- /TestVectors/eddsa-jcs-2022/proofConfigJCS.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "DataIntegrityProof", 3 | "cryptosuite": "eddsa-jcs-2022", 4 | "created": "2023-02-24T23:36:38Z", 5 | "verificationMethod": "did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2#z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2", 6 | "proofPurpose": "assertionMethod", 7 | "@context": [ 8 | "https://www.w3.org/ns/credentials/v2", 9 | "https://www.w3.org/ns/credentials/examples/v2" 10 | ] 11 | } -------------------------------------------------------------------------------- /TestVectors/eddsa-jcs-2022/proofHashJCS.txt: -------------------------------------------------------------------------------- 1 | 66ab154f5c2890a140cb8388a22a160454f80575f6eae09e5a097cabe539a1db -------------------------------------------------------------------------------- /TestVectors/eddsa-jcs-2022/sigBTC58JCS.txt: -------------------------------------------------------------------------------- 1 | z2HnFSSPPBzR36zdDgK8PbEHeXbR56YF24jwMpt3R1eHXQzJDMWS93FCzpvJpwTWd3GAVFuUfjoJdcnTMuVor51aX -------------------------------------------------------------------------------- /TestVectors/eddsa-jcs-2022/sigHexJCS.txt: -------------------------------------------------------------------------------- 1 | 407cd12654b33d718ecbb99179a1506daaa849450bf3fc523cce3e1c96f8b80351da3f253d725c6f00b07c9e5448d50b3ef78012b9ab54255116d069c6dd2808 -------------------------------------------------------------------------------- /TestVectors/eddsa-jcs-2022/signedJCS.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": [ 3 | "https://www.w3.org/ns/credentials/v2", 4 | "https://www.w3.org/ns/credentials/examples/v2" 5 | ], 6 | "id": "urn:uuid:58172aac-d8ba-11ed-83dd-0b3aef56cc33", 7 | "type": [ 8 | "VerifiableCredential", 9 | "AlumniCredential" 10 | ], 11 | "name": "Alumni Credential", 12 | "description": "A minimum viable example of an Alumni Credential.", 13 | "issuer": "https://vc.example/issuers/5678", 14 | "validFrom": "2023-01-01T00:00:00Z", 15 | "credentialSubject": { 16 | "id": "did:example:abcdefgh", 17 | "alumniOf": "The School of Examples" 18 | }, 19 | "proof": { 20 | "type": "DataIntegrityProof", 21 | "cryptosuite": "eddsa-jcs-2022", 22 | "created": "2023-02-24T23:36:38Z", 23 | "verificationMethod": "did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2#z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2", 24 | "proofPurpose": "assertionMethod", 25 | "@context": [ 26 | "https://www.w3.org/ns/credentials/v2", 27 | "https://www.w3.org/ns/credentials/examples/v2" 28 | ], 29 | "proofValue": "z2HnFSSPPBzR36zdDgK8PbEHeXbR56YF24jwMpt3R1eHXQzJDMWS93FCzpvJpwTWd3GAVFuUfjoJdcnTMuVor51aX" 30 | } 31 | } -------------------------------------------------------------------------------- /TestVectors/eddsa-rdfc-2022/canonDocDataInt.txt: -------------------------------------------------------------------------------- 1 | "The School of Examples" . 2 | . 3 | . 4 | "A minimum viable example of an Alumni Credential." . 5 | "Alumni Credential" . 6 | . 7 | . 8 | "2023-01-01T00:00:00Z"^^ . 9 | -------------------------------------------------------------------------------- /TestVectors/eddsa-rdfc-2022/combinedHashDataInt.txt: -------------------------------------------------------------------------------- 1 | bea7b7acfbad0126b135104024a5f1733e705108f42d59668b05c0c50004c6b0517744132ae165a5349155bef0bb0cf2258fff99dfe1dbd914b938d775a36017 -------------------------------------------------------------------------------- /TestVectors/eddsa-rdfc-2022/docHashDataInt.txt: -------------------------------------------------------------------------------- 1 | 517744132ae165a5349155bef0bb0cf2258fff99dfe1dbd914b938d775a36017 -------------------------------------------------------------------------------- /TestVectors/eddsa-rdfc-2022/employ/canonDocDataInt.txt: -------------------------------------------------------------------------------- 1 | . 2 | _:c14n0 . 3 | _:c14n0 . 4 | _:c14n0 "Example Employment Authorization Document." . 5 | _:c14n0 "Employment Authorization Document" . 6 | _:c14n0 _:c14n1 . 7 | _:c14n0 . 8 | _:c14n0 "2019-12-03T00:00:00Z"^^ . 9 | _:c14n0 "2029-12-03T00:00:00Z"^^ . 10 | _:c14n1 . 11 | _:c14n1 . 12 | _:c14n1 "JACOB" . 13 | _:c14n1 "1999-07-17"^^ . 14 | _:c14n1 "SMITH" . 15 | _:c14n1 "Male" . 16 | _:c14n1 "JOHN" . 17 | _:c14n1 . 18 | _:c14n1 "Bahamas" . 19 | _:c14n1 _:c14n2 . 20 | _:c14n1 "2015-01-01"^^ . 21 | _:c14n2 . 22 | _:c14n2 "83627465" . 23 | _:c14n2 "C09" . 24 | _:c14n2 "999-999-999" . 25 | -------------------------------------------------------------------------------- /TestVectors/eddsa-rdfc-2022/employ/combinedHashDataInt.txt: -------------------------------------------------------------------------------- 1 | bea7b7acfbad0126b135104024a5f1733e705108f42d59668b05c0c50004c6b003f59e5b04ab575b1172cb684f22eede72f0e9033e0b5c67d0e2506768d6ce11 -------------------------------------------------------------------------------- /TestVectors/eddsa-rdfc-2022/employ/docHashDataInt.txt: -------------------------------------------------------------------------------- 1 | 03f59e5b04ab575b1172cb684f22eede72f0e9033e0b5c67d0e2506768d6ce11 -------------------------------------------------------------------------------- /TestVectors/eddsa-rdfc-2022/employ/proofCanonDataInt.txt: -------------------------------------------------------------------------------- 1 | _:c14n0 "2023-02-24T23:36:38Z"^^ . 2 | _:c14n0 . 3 | _:c14n0 "eddsa-rdfc-2022"^^ . 4 | _:c14n0 . 5 | _:c14n0 . 6 | -------------------------------------------------------------------------------- /TestVectors/eddsa-rdfc-2022/employ/proofConfigDataInt.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "DataIntegrityProof", 3 | "cryptosuite": "eddsa-rdfc-2022", 4 | "created": "2023-02-24T23:36:38Z", 5 | "verificationMethod": "did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2#z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2", 6 | "proofPurpose": "assertionMethod", 7 | "@context": [ 8 | "https://www.w3.org/ns/credentials/v2", 9 | "https://w3id.org/citizenship/v4rc1" 10 | ] 11 | } -------------------------------------------------------------------------------- /TestVectors/eddsa-rdfc-2022/employ/proofHashDataInt.txt: -------------------------------------------------------------------------------- 1 | bea7b7acfbad0126b135104024a5f1733e705108f42d59668b05c0c50004c6b0 -------------------------------------------------------------------------------- /TestVectors/eddsa-rdfc-2022/employ/sigBTC58DataInt.txt: -------------------------------------------------------------------------------- 1 | zeuuS9pi2ZR8Q41bFFJKS9weSWkwa7pRcxHTHzxjDEHtVSZp3D9Rm3JdzT82EQpmXMb9wvfFJLuDPeSXZaRX1q1c -------------------------------------------------------------------------------- /TestVectors/eddsa-rdfc-2022/employ/sigHexDataInt.txt: -------------------------------------------------------------------------------- 1 | 20b1a944960b75ca69ba070af4820de6e6acae1afe827d8c566c0f7b932d1bd3abde3222b3095088051439a8b4e7a5356c7ba6d246774f875ebb6ddee1577003 -------------------------------------------------------------------------------- /TestVectors/eddsa-rdfc-2022/employ/signedDataInt.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": [ 3 | "https://www.w3.org/ns/credentials/v2", 4 | "https://w3id.org/citizenship/v4rc1" 5 | ], 6 | "type": [ 7 | "VerifiableCredential", 8 | "EmploymentAuthorizationDocumentCredential" 9 | ], 10 | "issuer": { 11 | "id": "did:key:zDnaegE6RR3atJtHKwTRTWHsJ3kNHqFwv7n9YjTgmU7TyfU76", 12 | "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQIW2NgUPr/HwADaAIhG61j/AAAAABJRU5ErkJggg==" 13 | }, 14 | "credentialSubject": { 15 | "type": [ 16 | "Person", 17 | "EmployablePerson" 18 | ], 19 | "givenName": "JOHN", 20 | "additionalName": "JACOB", 21 | "familyName": "SMITH", 22 | "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQIW2Ng+M/wHwAEAQH/7yMK/gAAAABJRU5ErkJggg==", 23 | "gender": "Male", 24 | "residentSince": "2015-01-01", 25 | "birthCountry": "Bahamas", 26 | "birthDate": "1999-07-17", 27 | "employmentAuthorizationDocument": { 28 | "type": "EmploymentAuthorizationDocument", 29 | "identifier": "83627465", 30 | "lprCategory": "C09", 31 | "lprNumber": "999-999-999" 32 | } 33 | }, 34 | "name": "Employment Authorization Document", 35 | "description": "Example Employment Authorization Document.", 36 | "validFrom": "2019-12-03T00:00:00Z", 37 | "validUntil": "2029-12-03T00:00:00Z", 38 | "proof": { 39 | "type": "DataIntegrityProof", 40 | "cryptosuite": "eddsa-rdfc-2022", 41 | "created": "2023-02-24T23:36:38Z", 42 | "verificationMethod": "did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2#z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2", 43 | "proofPurpose": "assertionMethod", 44 | "proofValue": "zeuuS9pi2ZR8Q41bFFJKS9weSWkwa7pRcxHTHzxjDEHtVSZp3D9Rm3JdzT82EQpmXMb9wvfFJLuDPeSXZaRX1q1c" 45 | } 46 | } -------------------------------------------------------------------------------- /TestVectors/eddsa-rdfc-2022/proofCanonDataInt.txt: -------------------------------------------------------------------------------- 1 | _:c14n0 "2023-02-24T23:36:38Z"^^ . 2 | _:c14n0 . 3 | _:c14n0 "eddsa-rdfc-2022"^^ . 4 | _:c14n0 . 5 | _:c14n0 . 6 | -------------------------------------------------------------------------------- /TestVectors/eddsa-rdfc-2022/proofConfigDataInt.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "DataIntegrityProof", 3 | "cryptosuite": "eddsa-rdfc-2022", 4 | "created": "2023-02-24T23:36:38Z", 5 | "verificationMethod": "did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2#z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2", 6 | "proofPurpose": "assertionMethod", 7 | "@context": [ 8 | "https://www.w3.org/ns/credentials/v2", 9 | "https://www.w3.org/ns/credentials/examples/v2" 10 | ] 11 | } -------------------------------------------------------------------------------- /TestVectors/eddsa-rdfc-2022/proofHashDataInt.txt: -------------------------------------------------------------------------------- 1 | bea7b7acfbad0126b135104024a5f1733e705108f42d59668b05c0c50004c6b0 -------------------------------------------------------------------------------- /TestVectors/eddsa-rdfc-2022/sigBTC58DataInt.txt: -------------------------------------------------------------------------------- 1 | z2YwC8z3ap7yx1nZYCg4L3j3ApHsF8kgPdSb5xoS1VR7vPG3F561B52hYnQF9iseabecm3ijx4K1FBTQsCZahKZme -------------------------------------------------------------------------------- /TestVectors/eddsa-rdfc-2022/sigHexDataInt.txt: -------------------------------------------------------------------------------- 1 | 4d8e53c2d5b3f2a7891753eb16ca993325bdb0d3cfc5be1093d0a18426f5ef8578cadc0fd4b5f4dd0d1ce0aefd15ab120b7a894d0eb094ffda4e6553cd1ed50d -------------------------------------------------------------------------------- /TestVectors/eddsa-rdfc-2022/signedDataInt.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": [ 3 | "https://www.w3.org/ns/credentials/v2", 4 | "https://www.w3.org/ns/credentials/examples/v2" 5 | ], 6 | "id": "urn:uuid:58172aac-d8ba-11ed-83dd-0b3aef56cc33", 7 | "type": [ 8 | "VerifiableCredential", 9 | "AlumniCredential" 10 | ], 11 | "name": "Alumni Credential", 12 | "description": "A minimum viable example of an Alumni Credential.", 13 | "issuer": "https://vc.example/issuers/5678", 14 | "validFrom": "2023-01-01T00:00:00Z", 15 | "credentialSubject": { 16 | "id": "did:example:abcdefgh", 17 | "alumniOf": "The School of Examples" 18 | }, 19 | "proof": { 20 | "type": "DataIntegrityProof", 21 | "cryptosuite": "eddsa-rdfc-2022", 22 | "created": "2023-02-24T23:36:38Z", 23 | "verificationMethod": "did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2#z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2", 24 | "proofPurpose": "assertionMethod", 25 | "proofValue": "z2YwC8z3ap7yx1nZYCg4L3j3ApHsF8kgPdSb5xoS1VR7vPG3F561B52hYnQF9iseabecm3ijx4K1FBTQsCZahKZme" 26 | } 27 | } -------------------------------------------------------------------------------- /TestVectors/employmentAuth.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": [ 3 | "https://www.w3.org/ns/credentials/v2", 4 | "https://w3id.org/citizenship/v4rc1" 5 | ], 6 | "type": [ 7 | "VerifiableCredential", 8 | "EmploymentAuthorizationDocumentCredential" 9 | ], 10 | "issuer": { 11 | "id": "did:key:zDnaegE6RR3atJtHKwTRTWHsJ3kNHqFwv7n9YjTgmU7TyfU76", 12 | "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQIW2NgUPr/HwADaAIhG61j/AAAAABJRU5ErkJggg==" 13 | }, 14 | "credentialSubject": { 15 | "type": [ 16 | "Person", 17 | "EmployablePerson" 18 | ], 19 | "givenName": "JOHN", 20 | "additionalName": "JACOB", 21 | "familyName": "SMITH", 22 | "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQIW2Ng+M/wHwAEAQH/7yMK/gAAAABJRU5ErkJggg==", 23 | "gender": "Male", 24 | "residentSince": "2015-01-01", 25 | "birthCountry": "Bahamas", 26 | "birthDate": "1999-07-17", 27 | "employmentAuthorizationDocument": { 28 | "type": "EmploymentAuthorizationDocument", 29 | "identifier": "83627465", 30 | "lprCategory": "C09", 31 | "lprNumber": "999-999-999" 32 | } 33 | }, 34 | "name": "Employment Authorization Document", 35 | "description": "Example Employment Authorization Document.", 36 | "validFrom": "2019-12-03T00:00:00Z", 37 | "validUntil": "2029-12-03T00:00:00Z" 38 | } -------------------------------------------------------------------------------- /TestVectors/keyPair.json: -------------------------------------------------------------------------------- 1 | { 2 | "publicKeyMultibase": "z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2", 3 | "privateKeyMultibase": "z3u2en7t5LR2WtQH5PfFqMqwVHBeXouLzo6haApm8XHqvjxq" 4 | } -------------------------------------------------------------------------------- /TestVectors/proof-set-chain/multiKeyPairs.json: -------------------------------------------------------------------------------- 1 | { 2 | "keyPair1": { 3 | "publicKeyMultibase": "z6MktgKTsu1QhX6QPbyqG6geXdw6FQCZBPq7uQpieWbiQiG7", 4 | "privateKeyMultibase": "z3u2W4YnTstS1nSSBAgZcYSJF43JuZ9uLV6bF38B1Bf8NugW" 5 | }, 6 | "keyPair2": { 7 | "publicKeyMultibase": "z6MkhWqdDBPojHA7cprTGTt5yHv5yUi1B8cnXn8ReLumkw6E", 8 | "privateKeyMultibase": "z3u2cfp4Q17kMGhNCh348a3yw3cUBiWK6RXRzyJE54sixMFn" 9 | }, 10 | "keyPair3": { 11 | "publicKeyMultibase": "z6MkmEq87wkHCYnWnNZkigeDMGTN7oUw1upkhzd77KuXERS1", 12 | "privateKeyMultibase": "z3u2Zr3tcDLBDQKGxVa9SRDFNLqNqPWsa8p9rWPvCEH6bADB" 13 | }, 14 | "keyPair4": { 15 | "publicKeyMultibase": "z6Mkm1S51iPHJvDEkJ9MRtxJmT8Pqo6wHipAFwBAjN83vntT", 16 | "privateKeyMultibase": "z3u2ZTWiFwM17veUR7sXniY66Gf14SqMdpMLy7SW9x4EDdmw" 17 | } 18 | } -------------------------------------------------------------------------------- /TestVectors/proof-set-chain/proofChainConfig1.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "DataIntegrityProof", 3 | "id": "urn:uuid:d94f792a-c546-4d06-b38a-da070ab56c23", 4 | "cryptosuite": "eddsa-rdfc-2022", 5 | "created": "2023-02-26T22:06:38Z", 6 | "verificationMethod": "did:key:z6MkmEq87wkHCYnWnNZkigeDMGTN7oUw1upkhzd77KuXERS1#z6MkmEq87wkHCYnWnNZkigeDMGTN7oUw1upkhzd77KuXERS1", 7 | "proofPurpose": "assertionMethod", 8 | "previousProof": [ 9 | "urn:uuid:26329423-bec9-4b2e-88cb-a7c7d9dc4544", 10 | "urn:uuid:8cc9022b-6b14-4cf3-8571-74972c5feb54" 11 | ] 12 | } -------------------------------------------------------------------------------- /TestVectors/proof-set-chain/proofChainConfig2.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "DataIntegrityProof", 3 | "cryptosuite": "eddsa-rdfc-2022", 4 | "created": "2023-02-26T22:16:38Z", 5 | "verificationMethod": "did:key:z6Mkm1S51iPHJvDEkJ9MRtxJmT8Pqo6wHipAFwBAjN83vntT#z6Mkm1S51iPHJvDEkJ9MRtxJmT8Pqo6wHipAFwBAjN83vntT", 6 | "proofPurpose": "assertionMethod", 7 | "previousProof": "urn:uuid:d94f792a-c546-4d06-b38a-da070ab56c23" 8 | } -------------------------------------------------------------------------------- /TestVectors/proof-set-chain/proofChainConfigSigned1.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "DataIntegrityProof", 3 | "id": "urn:uuid:d94f792a-c546-4d06-b38a-da070ab56c23", 4 | "cryptosuite": "eddsa-rdfc-2022", 5 | "created": "2023-02-26T22:06:38Z", 6 | "verificationMethod": "did:key:z6MkmEq87wkHCYnWnNZkigeDMGTN7oUw1upkhzd77KuXERS1#z6MkmEq87wkHCYnWnNZkigeDMGTN7oUw1upkhzd77KuXERS1", 7 | "proofPurpose": "assertionMethod", 8 | "previousProof": [ 9 | "urn:uuid:26329423-bec9-4b2e-88cb-a7c7d9dc4544", 10 | "urn:uuid:8cc9022b-6b14-4cf3-8571-74972c5feb54" 11 | ], 12 | "proofValue": "zWaPeEvBAkhQpNQj8pknuvg5STcKnt3cvM9t4kAYeJETFjvVMSXEEjadC4uxC9fKCn6JHbjt6fj2fhoaVNynBm6J" 13 | } -------------------------------------------------------------------------------- /TestVectors/proof-set-chain/proofChainConfigSigned2.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "DataIntegrityProof", 3 | "cryptosuite": "eddsa-rdfc-2022", 4 | "created": "2023-02-26T22:16:38Z", 5 | "verificationMethod": "did:key:z6Mkm1S51iPHJvDEkJ9MRtxJmT8Pqo6wHipAFwBAjN83vntT#z6Mkm1S51iPHJvDEkJ9MRtxJmT8Pqo6wHipAFwBAjN83vntT", 6 | "proofPurpose": "assertionMethod", 7 | "previousProof": "urn:uuid:d94f792a-c546-4d06-b38a-da070ab56c23", 8 | "proofValue": "z4b5uUtxNiV4E541LiR8qLvA21xM1Vt4Hfn6nLmmDePdFvLB3jFj3HyEEJyRMbpJzv4Gfdr8ABeuRTxAvZv6KWRRh" 9 | } -------------------------------------------------------------------------------- /TestVectors/proof-set-chain/proofChainTempDoc1.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": [ 3 | "https://www.w3.org/ns/credentials/v2", 4 | "https://www.w3.org/ns/credentials/examples/v2" 5 | ], 6 | "id": "urn:uuid:58172aac-d8ba-11ed-83dd-0b3aef56cc33", 7 | "type": [ 8 | "VerifiableCredential", 9 | "AlumniCredential" 10 | ], 11 | "name": "Alumni Credential", 12 | "description": "A minimum viable example of an Alumni Credential.", 13 | "issuer": "https://vc.example/issuers/5678", 14 | "validFrom": "2023-01-01T00:00:00Z", 15 | "credentialSubject": { 16 | "id": "did:example:abcdefgh", 17 | "alumniOf": "The School of Examples" 18 | }, 19 | "proof": [ 20 | { 21 | "type": "DataIntegrityProof", 22 | "id": "urn:uuid:26329423-bec9-4b2e-88cb-a7c7d9dc4544", 23 | "cryptosuite": "eddsa-rdfc-2022", 24 | "created": "2023-02-24T23:36:38Z", 25 | "verificationMethod": "did:key:z6MktgKTsu1QhX6QPbyqG6geXdw6FQCZBPq7uQpieWbiQiG7#z6MktgKTsu1QhX6QPbyqG6geXdw6FQCZBPq7uQpieWbiQiG7", 26 | "proofPurpose": "assertionMethod", 27 | "proofValue": "z66vWyqwAghu52WbpRkCwFRTu6Msn92ArtjpJ3gGMSVoU5RADwBfszoDt1QWY8owqLPz4nTj7hAwV7xFti1p93zdr" 28 | }, 29 | { 30 | "type": "DataIntegrityProof", 31 | "id": "urn:uuid:8cc9022b-6b14-4cf3-8571-74972c5feb54", 32 | "cryptosuite": "eddsa-rdfc-2022", 33 | "created": "2023-02-24T23:36:38Z", 34 | "verificationMethod": "did:key:z6MkhWqdDBPojHA7cprTGTt5yHv5yUi1B8cnXn8ReLumkw6E#z6MkhWqdDBPojHA7cprTGTt5yHv5yUi1B8cnXn8ReLumkw6E", 35 | "proofPurpose": "assertionMethod", 36 | "proofValue": "z2scr94SNNrGpP2bE7ajvKWeUHm7HJ2edDkxpARvFAQ8V3USzwEzibqrXKaLHBrWostswsfvg82twQR88BgtnsrXY" 37 | } 38 | ] 39 | } -------------------------------------------------------------------------------- /TestVectors/proof-set-chain/proofChainTempDoc2.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": [ 3 | "https://www.w3.org/ns/credentials/v2", 4 | "https://www.w3.org/ns/credentials/examples/v2" 5 | ], 6 | "id": "urn:uuid:58172aac-d8ba-11ed-83dd-0b3aef56cc33", 7 | "type": [ 8 | "VerifiableCredential", 9 | "AlumniCredential" 10 | ], 11 | "name": "Alumni Credential", 12 | "description": "A minimum viable example of an Alumni Credential.", 13 | "issuer": "https://vc.example/issuers/5678", 14 | "validFrom": "2023-01-01T00:00:00Z", 15 | "credentialSubject": { 16 | "id": "did:example:abcdefgh", 17 | "alumniOf": "The School of Examples" 18 | }, 19 | "proof": [ 20 | { 21 | "type": "DataIntegrityProof", 22 | "id": "urn:uuid:d94f792a-c546-4d06-b38a-da070ab56c23", 23 | "cryptosuite": "eddsa-rdfc-2022", 24 | "created": "2023-02-26T22:06:38Z", 25 | "verificationMethod": "did:key:z6MkmEq87wkHCYnWnNZkigeDMGTN7oUw1upkhzd77KuXERS1#z6MkmEq87wkHCYnWnNZkigeDMGTN7oUw1upkhzd77KuXERS1", 26 | "proofPurpose": "assertionMethod", 27 | "previousProof": [ 28 | "urn:uuid:26329423-bec9-4b2e-88cb-a7c7d9dc4544", 29 | "urn:uuid:8cc9022b-6b14-4cf3-8571-74972c5feb54" 30 | ], 31 | "proofValue": "zWaPeEvBAkhQpNQj8pknuvg5STcKnt3cvM9t4kAYeJETFjvVMSXEEjadC4uxC9fKCn6JHbjt6fj2fhoaVNynBm6J" 32 | } 33 | ] 34 | } -------------------------------------------------------------------------------- /TestVectors/proof-set-chain/proofSetConfig1.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "DataIntegrityProof", 3 | "id": "urn:uuid:26329423-bec9-4b2e-88cb-a7c7d9dc4544", 4 | "cryptosuite": "eddsa-rdfc-2022", 5 | "created": "2023-02-24T23:36:38Z", 6 | "verificationMethod": "did:key:z6MktgKTsu1QhX6QPbyqG6geXdw6FQCZBPq7uQpieWbiQiG7#z6MktgKTsu1QhX6QPbyqG6geXdw6FQCZBPq7uQpieWbiQiG7", 7 | "proofPurpose": "assertionMethod" 8 | } -------------------------------------------------------------------------------- /TestVectors/proof-set-chain/proofSetConfig2.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "DataIntegrityProof", 3 | "id": "urn:uuid:8cc9022b-6b14-4cf3-8571-74972c5feb54", 4 | "cryptosuite": "eddsa-rdfc-2022", 5 | "created": "2023-02-24T23:36:38Z", 6 | "verificationMethod": "did:key:z6MkhWqdDBPojHA7cprTGTt5yHv5yUi1B8cnXn8ReLumkw6E#z6MkhWqdDBPojHA7cprTGTt5yHv5yUi1B8cnXn8ReLumkw6E", 7 | "proofPurpose": "assertionMethod" 8 | } -------------------------------------------------------------------------------- /TestVectors/proof-set-chain/proofSetConfigSigned1.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "DataIntegrityProof", 3 | "id": "urn:uuid:26329423-bec9-4b2e-88cb-a7c7d9dc4544", 4 | "cryptosuite": "eddsa-rdfc-2022", 5 | "created": "2023-02-24T23:36:38Z", 6 | "verificationMethod": "did:key:z6MktgKTsu1QhX6QPbyqG6geXdw6FQCZBPq7uQpieWbiQiG7#z6MktgKTsu1QhX6QPbyqG6geXdw6FQCZBPq7uQpieWbiQiG7", 7 | "proofPurpose": "assertionMethod", 8 | "proofValue": "z66vWyqwAghu52WbpRkCwFRTu6Msn92ArtjpJ3gGMSVoU5RADwBfszoDt1QWY8owqLPz4nTj7hAwV7xFti1p93zdr" 9 | } -------------------------------------------------------------------------------- /TestVectors/proof-set-chain/proofSetConfigSigned2.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "DataIntegrityProof", 3 | "id": "urn:uuid:8cc9022b-6b14-4cf3-8571-74972c5feb54", 4 | "cryptosuite": "eddsa-rdfc-2022", 5 | "created": "2023-02-24T23:36:38Z", 6 | "verificationMethod": "did:key:z6MkhWqdDBPojHA7cprTGTt5yHv5yUi1B8cnXn8ReLumkw6E#z6MkhWqdDBPojHA7cprTGTt5yHv5yUi1B8cnXn8ReLumkw6E", 7 | "proofPurpose": "assertionMethod", 8 | "proofValue": "z2scr94SNNrGpP2bE7ajvKWeUHm7HJ2edDkxpARvFAQ8V3USzwEzibqrXKaLHBrWostswsfvg82twQR88BgtnsrXY" 9 | } -------------------------------------------------------------------------------- /TestVectors/proof-set-chain/signedProofChain1.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": [ 3 | "https://www.w3.org/ns/credentials/v2", 4 | "https://www.w3.org/ns/credentials/examples/v2" 5 | ], 6 | "id": "urn:uuid:58172aac-d8ba-11ed-83dd-0b3aef56cc33", 7 | "type": [ 8 | "VerifiableCredential", 9 | "AlumniCredential" 10 | ], 11 | "name": "Alumni Credential", 12 | "description": "A minimum viable example of an Alumni Credential.", 13 | "issuer": "https://vc.example/issuers/5678", 14 | "validFrom": "2023-01-01T00:00:00Z", 15 | "credentialSubject": { 16 | "id": "did:example:abcdefgh", 17 | "alumniOf": "The School of Examples" 18 | }, 19 | "proof": [ 20 | { 21 | "type": "DataIntegrityProof", 22 | "id": "urn:uuid:26329423-bec9-4b2e-88cb-a7c7d9dc4544", 23 | "cryptosuite": "eddsa-rdfc-2022", 24 | "created": "2023-02-24T23:36:38Z", 25 | "verificationMethod": "did:key:z6MktgKTsu1QhX6QPbyqG6geXdw6FQCZBPq7uQpieWbiQiG7#z6MktgKTsu1QhX6QPbyqG6geXdw6FQCZBPq7uQpieWbiQiG7", 26 | "proofPurpose": "assertionMethod", 27 | "proofValue": "z66vWyqwAghu52WbpRkCwFRTu6Msn92ArtjpJ3gGMSVoU5RADwBfszoDt1QWY8owqLPz4nTj7hAwV7xFti1p93zdr" 28 | }, 29 | { 30 | "type": "DataIntegrityProof", 31 | "id": "urn:uuid:8cc9022b-6b14-4cf3-8571-74972c5feb54", 32 | "cryptosuite": "eddsa-rdfc-2022", 33 | "created": "2023-02-24T23:36:38Z", 34 | "verificationMethod": "did:key:z6MkhWqdDBPojHA7cprTGTt5yHv5yUi1B8cnXn8ReLumkw6E#z6MkhWqdDBPojHA7cprTGTt5yHv5yUi1B8cnXn8ReLumkw6E", 35 | "proofPurpose": "assertionMethod", 36 | "proofValue": "z2scr94SNNrGpP2bE7ajvKWeUHm7HJ2edDkxpARvFAQ8V3USzwEzibqrXKaLHBrWostswsfvg82twQR88BgtnsrXY" 37 | }, 38 | { 39 | "type": "DataIntegrityProof", 40 | "id": "urn:uuid:d94f792a-c546-4d06-b38a-da070ab56c23", 41 | "cryptosuite": "eddsa-rdfc-2022", 42 | "created": "2023-02-26T22:06:38Z", 43 | "verificationMethod": "did:key:z6MkmEq87wkHCYnWnNZkigeDMGTN7oUw1upkhzd77KuXERS1#z6MkmEq87wkHCYnWnNZkigeDMGTN7oUw1upkhzd77KuXERS1", 44 | "proofPurpose": "assertionMethod", 45 | "previousProof": [ 46 | "urn:uuid:26329423-bec9-4b2e-88cb-a7c7d9dc4544", 47 | "urn:uuid:8cc9022b-6b14-4cf3-8571-74972c5feb54" 48 | ], 49 | "proofValue": "zWaPeEvBAkhQpNQj8pknuvg5STcKnt3cvM9t4kAYeJETFjvVMSXEEjadC4uxC9fKCn6JHbjt6fj2fhoaVNynBm6J" 50 | } 51 | ] 52 | } -------------------------------------------------------------------------------- /TestVectors/proof-set-chain/signedProofChain2.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": [ 3 | "https://www.w3.org/ns/credentials/v2", 4 | "https://www.w3.org/ns/credentials/examples/v2" 5 | ], 6 | "id": "urn:uuid:58172aac-d8ba-11ed-83dd-0b3aef56cc33", 7 | "type": [ 8 | "VerifiableCredential", 9 | "AlumniCredential" 10 | ], 11 | "name": "Alumni Credential", 12 | "description": "A minimum viable example of an Alumni Credential.", 13 | "issuer": "https://vc.example/issuers/5678", 14 | "validFrom": "2023-01-01T00:00:00Z", 15 | "credentialSubject": { 16 | "id": "did:example:abcdefgh", 17 | "alumniOf": "The School of Examples" 18 | }, 19 | "proof": [ 20 | { 21 | "type": "DataIntegrityProof", 22 | "id": "urn:uuid:26329423-bec9-4b2e-88cb-a7c7d9dc4544", 23 | "cryptosuite": "eddsa-rdfc-2022", 24 | "created": "2023-02-24T23:36:38Z", 25 | "verificationMethod": "did:key:z6MktgKTsu1QhX6QPbyqG6geXdw6FQCZBPq7uQpieWbiQiG7#z6MktgKTsu1QhX6QPbyqG6geXdw6FQCZBPq7uQpieWbiQiG7", 26 | "proofPurpose": "assertionMethod", 27 | "proofValue": "z66vWyqwAghu52WbpRkCwFRTu6Msn92ArtjpJ3gGMSVoU5RADwBfszoDt1QWY8owqLPz4nTj7hAwV7xFti1p93zdr" 28 | }, 29 | { 30 | "type": "DataIntegrityProof", 31 | "id": "urn:uuid:8cc9022b-6b14-4cf3-8571-74972c5feb54", 32 | "cryptosuite": "eddsa-rdfc-2022", 33 | "created": "2023-02-24T23:36:38Z", 34 | "verificationMethod": "did:key:z6MkhWqdDBPojHA7cprTGTt5yHv5yUi1B8cnXn8ReLumkw6E#z6MkhWqdDBPojHA7cprTGTt5yHv5yUi1B8cnXn8ReLumkw6E", 35 | "proofPurpose": "assertionMethod", 36 | "proofValue": "z2scr94SNNrGpP2bE7ajvKWeUHm7HJ2edDkxpARvFAQ8V3USzwEzibqrXKaLHBrWostswsfvg82twQR88BgtnsrXY" 37 | }, 38 | { 39 | "type": "DataIntegrityProof", 40 | "id": "urn:uuid:d94f792a-c546-4d06-b38a-da070ab56c23", 41 | "cryptosuite": "eddsa-rdfc-2022", 42 | "created": "2023-02-26T22:06:38Z", 43 | "verificationMethod": "did:key:z6MkmEq87wkHCYnWnNZkigeDMGTN7oUw1upkhzd77KuXERS1#z6MkmEq87wkHCYnWnNZkigeDMGTN7oUw1upkhzd77KuXERS1", 44 | "proofPurpose": "assertionMethod", 45 | "previousProof": [ 46 | "urn:uuid:26329423-bec9-4b2e-88cb-a7c7d9dc4544", 47 | "urn:uuid:8cc9022b-6b14-4cf3-8571-74972c5feb54" 48 | ], 49 | "proofValue": "zWaPeEvBAkhQpNQj8pknuvg5STcKnt3cvM9t4kAYeJETFjvVMSXEEjadC4uxC9fKCn6JHbjt6fj2fhoaVNynBm6J" 50 | }, 51 | { 52 | "type": "DataIntegrityProof", 53 | "cryptosuite": "eddsa-rdfc-2022", 54 | "created": "2023-02-26T22:16:38Z", 55 | "verificationMethod": "did:key:z6Mkm1S51iPHJvDEkJ9MRtxJmT8Pqo6wHipAFwBAjN83vntT#z6Mkm1S51iPHJvDEkJ9MRtxJmT8Pqo6wHipAFwBAjN83vntT", 56 | "proofPurpose": "assertionMethod", 57 | "previousProof": "urn:uuid:d94f792a-c546-4d06-b38a-da070ab56c23", 58 | "proofValue": "z4b5uUtxNiV4E541LiR8qLvA21xM1Vt4Hfn6nLmmDePdFvLB3jFj3HyEEJyRMbpJzv4Gfdr8ABeuRTxAvZv6KWRRh" 59 | } 60 | ] 61 | } -------------------------------------------------------------------------------- /TestVectors/proof-set-chain/signedProofSet1.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": [ 3 | "https://www.w3.org/ns/credentials/v2", 4 | "https://www.w3.org/ns/credentials/examples/v2" 5 | ], 6 | "id": "urn:uuid:58172aac-d8ba-11ed-83dd-0b3aef56cc33", 7 | "type": [ 8 | "VerifiableCredential", 9 | "AlumniCredential" 10 | ], 11 | "name": "Alumni Credential", 12 | "description": "A minimum viable example of an Alumni Credential.", 13 | "issuer": "https://vc.example/issuers/5678", 14 | "validFrom": "2023-01-01T00:00:00Z", 15 | "credentialSubject": { 16 | "id": "did:example:abcdefgh", 17 | "alumniOf": "The School of Examples" 18 | }, 19 | "proof": { 20 | "type": "DataIntegrityProof", 21 | "id": "urn:uuid:26329423-bec9-4b2e-88cb-a7c7d9dc4544", 22 | "cryptosuite": "eddsa-rdfc-2022", 23 | "created": "2023-02-24T23:36:38Z", 24 | "verificationMethod": "did:key:z6MktgKTsu1QhX6QPbyqG6geXdw6FQCZBPq7uQpieWbiQiG7#z6MktgKTsu1QhX6QPbyqG6geXdw6FQCZBPq7uQpieWbiQiG7", 25 | "proofPurpose": "assertionMethod", 26 | "proofValue": "z66vWyqwAghu52WbpRkCwFRTu6Msn92ArtjpJ3gGMSVoU5RADwBfszoDt1QWY8owqLPz4nTj7hAwV7xFti1p93zdr" 27 | } 28 | } -------------------------------------------------------------------------------- /TestVectors/proof-set-chain/signedProofSet2.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": [ 3 | "https://www.w3.org/ns/credentials/v2", 4 | "https://www.w3.org/ns/credentials/examples/v2" 5 | ], 6 | "id": "urn:uuid:58172aac-d8ba-11ed-83dd-0b3aef56cc33", 7 | "type": [ 8 | "VerifiableCredential", 9 | "AlumniCredential" 10 | ], 11 | "name": "Alumni Credential", 12 | "description": "A minimum viable example of an Alumni Credential.", 13 | "issuer": "https://vc.example/issuers/5678", 14 | "validFrom": "2023-01-01T00:00:00Z", 15 | "credentialSubject": { 16 | "id": "did:example:abcdefgh", 17 | "alumniOf": "The School of Examples" 18 | }, 19 | "proof": [ 20 | { 21 | "type": "DataIntegrityProof", 22 | "id": "urn:uuid:26329423-bec9-4b2e-88cb-a7c7d9dc4544", 23 | "cryptosuite": "eddsa-rdfc-2022", 24 | "created": "2023-02-24T23:36:38Z", 25 | "verificationMethod": "did:key:z6MktgKTsu1QhX6QPbyqG6geXdw6FQCZBPq7uQpieWbiQiG7#z6MktgKTsu1QhX6QPbyqG6geXdw6FQCZBPq7uQpieWbiQiG7", 26 | "proofPurpose": "assertionMethod", 27 | "proofValue": "z66vWyqwAghu52WbpRkCwFRTu6Msn92ArtjpJ3gGMSVoU5RADwBfszoDt1QWY8owqLPz4nTj7hAwV7xFti1p93zdr" 28 | }, 29 | { 30 | "type": "DataIntegrityProof", 31 | "id": "urn:uuid:8cc9022b-6b14-4cf3-8571-74972c5feb54", 32 | "cryptosuite": "eddsa-rdfc-2022", 33 | "created": "2023-02-24T23:36:38Z", 34 | "verificationMethod": "did:key:z6MkhWqdDBPojHA7cprTGTt5yHv5yUi1B8cnXn8ReLumkw6E#z6MkhWqdDBPojHA7cprTGTt5yHv5yUi1B8cnXn8ReLumkw6E", 35 | "proofPurpose": "assertionMethod", 36 | "proofValue": "z2scr94SNNrGpP2bE7ajvKWeUHm7HJ2edDkxpARvFAQ8V3USzwEzibqrXKaLHBrWostswsfvg82twQR88BgtnsrXY" 37 | } 38 | ] 39 | } -------------------------------------------------------------------------------- /TestVectors/proof-set-chain/unsigned.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": [ 3 | "https://www.w3.org/ns/credentials/v2", 4 | "https://www.w3.org/ns/credentials/examples/v2" 5 | ], 6 | "id": "urn:uuid:58172aac-d8ba-11ed-83dd-0b3aef56cc33", 7 | "type": ["VerifiableCredential", "AlumniCredential"], 8 | "name": "Alumni Credential", 9 | "description": "A minimum viable example of an Alumni Credential.", 10 | "issuer": "https://vc.example/issuers/5678", 11 | "validFrom": "2023-01-01T00:00:00Z", 12 | "credentialSubject": { 13 | "id": "did:example:abcdefgh", 14 | "alumniOf": "The School of Examples" 15 | } 16 | } -------------------------------------------------------------------------------- /TestVectors/unsigned.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": [ 3 | "https://www.w3.org/ns/credentials/v2", 4 | "https://www.w3.org/ns/credentials/examples/v2" 5 | ], 6 | "id": "urn:uuid:58172aac-d8ba-11ed-83dd-0b3aef56cc33", 7 | "type": ["VerifiableCredential", "AlumniCredential"], 8 | "name": "Alumni Credential", 9 | "description": "A minimum viable example of an Alumni Credential.", 10 | "issuer": "https://vc.example/issuers/5678", 11 | "validFrom": "2023-01-01T00:00:00Z", 12 | "credentialSubject": { 13 | "id": "did:example:abcdefgh", 14 | "alumniOf": "The School of Examples" 15 | } 16 | } -------------------------------------------------------------------------------- /contexts/lds-ed25519-2020-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": { 3 | "@protected": true, 4 | "id": "@id", 5 | "type": "@type", 6 | "Ed25519VerificationKey2020": { 7 | "@id": "https://w3id.org/security#Ed25519VerificationKey2020", 8 | "@context": { 9 | "publicKeyMultibase": "https://w3id.org/security#publicKeyMultibase" 10 | } 11 | }, 12 | "Ed25519Signature2020": { 13 | "@id": "https://w3id.org/security#Ed25519Signature2020", 14 | "@context": { 15 | "verificationMethod": { 16 | "@id": "https://w3id.org/security#verificationMethod", 17 | "@type": "@id" 18 | }, 19 | "proofPurpose": { 20 | "@id": "https://w3id.org/security#proofPurpose", 21 | "@type": "@vocab", 22 | "@context": { 23 | "assertionMethod": { 24 | "@id": "https://w3id.org/security#assertionMethod", 25 | "@type": "@id", 26 | "@container": "@set" 27 | }, 28 | "authentication": { 29 | "@id": "https://w3id.org/security#authenticationMethod", 30 | "@type": "@id", 31 | "@container": "@set" 32 | } 33 | } 34 | }, 35 | "domain": "https://w3id.org/security#domain", 36 | "challenge": "https://w3id.org/security#challenge", 37 | "nonce": "https://w3id.org/security#nonce", 38 | "created": { 39 | "@id": "http://purl.org/dc/terms/created", 40 | "@type": "http://www.w3.org/2001/XMLSchema#dateTime" 41 | }, 42 | "signature": { 43 | "@id": "https://w3id.org/security#proofValue" 44 | }, 45 | "proofValue": { 46 | "@id": "https://w3id.org/security#proofValue", 47 | "@type": "https://w3id.org/security#multibase" 48 | } 49 | } 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /errata.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | Open Errata for the Data Integrity EdDSA Cryptosuites v1.0 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 22 | 23 | 24 |
25 | 26 |
27 |

Open Errata for the Data Integrity EdDSA Cryptosuites v1.0

28 |
29 |
Latest errata update:
30 |
31 |
Number of recorded errata:
32 |
33 |
Link to all errata:
34 |
35 |
36 | 37 |
38 |

How to Submit an Erratum?

39 |

Errata are introduced and stored in the issue list of the group‘s GitHub repository. The workflow to add a new erratum is as follows:

40 |
    41 |
  • An issue is raised for a possible erratum. The label of the issue SHOULD be set to “PossibleErratum”. One erratum might have several labels.
  • 42 |
  • The community discusses the issue. If it is accepted as a genuine erratum, the label “Errata” is added to the entry and the “PossibleErratum” label should be removed. Additionally, a new comment on the issue MAY be added, beginning with the word "Summary:" (if such a summary is useful based on the discussion).
  • 43 |
  • Issues labeled as “Errata” are displayed below.
  • 44 |
  • If the community rejects the issue as an erratum, the issue should be closed (but they will not be removed from the listing below, to ensure a historical record).
  • 45 |
  • Each errata may also be labelled as “Editorial”; editorial errata are listed separately from the substantive ones.
  • 46 |
  • ALL substantive errata are generally expected to have corresponding test(s), either in the form of new tests or modifications to existing tests, or must include the rationale for why test updates are not required for the erratum.
  • 47 |
48 | 49 |

This report contains a reference to all open issues with the label Errata.

50 | 51 |

If you have problems following this process, but you want nevertheless to report an error, you can also contact the staff contact of the Working Group, ivan.

52 |
53 |
54 | 55 |
56 | 57 |
58 | 59 |
60 |

Open Errata on the “Data Integrity EdDSA Cryptosuites v1.0”

61 |
62 |
Latest Published Version:
63 |
https://www.w3.org/TR/vc-di-eddsa/
64 |
Editor’s draft:
65 |
https://w3c.github.io/vc-di-eddsa/
66 |
Latest Publication Date:
67 |
15 May 2025
68 |
69 |
70 |

Substantive Issues

71 |
72 |
73 |

Editorial Issues

74 |
75 |
76 |
77 | 78 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /transitions/2022/CGFR/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 14 | 27 | 47 | 48 | EdDSA Cryptosuite v2020 49 | 50 | 51 | 52 | 112 | 113 | 114 | 142 | 143 | 150 | 151 | 165 | 172 | 275 | 276 |
277 | 278 |

EdDSA Cryptosuite v2020

279 |

280 | Final Community Group Report 281 | 282 |

283 |
284 |
This version:
285 | https://www.w3.org/community/reports/credentials/CG-FINAL-di-eddsa-2020-20220725/ 286 |
287 |
Latest published version:
288 | https://www.w3.org/community/reports/credentials/CG-FINAL-di-eddsa-2020-20220724/ 289 |
290 |
Latest editor's draft:
https://w3c-ccg.github.io/di-eddsa-2020/
291 | 292 | 293 | 294 | 295 |
Editors:
296 | Orie Steele (Transmute) 297 |
298 | Manu Sporny (Digital Bazaar) 299 |
300 | Tobias Looker (MATTR) 301 |
302 | 303 | 304 |
Feedback:
305 | GitHub w3c-ccg/di-eddsa-2020 306 | (pull requests, 307 | new issue, 308 | open issues) 309 |
public-credentials@w3.org with subject line [di-eddsa-2020] … message topic … (archives)
310 |
311 | 312 | 325 |
326 |
327 |

Abstract

328 |

329 | This specification describes a Data Integrity Cryptosuite for use when 330 | creating or verifying a digital signature using the twisted Edwards 331 | Curve Digital Signature Algorithm (EdDSA) and Curve25519 (ed25519). The 332 | approach is accepted by the U.S. National Institute of Standards in the 333 | latest FIPS 186-5 draft and, after ratification, is expected to meet 334 | U.S. Federal Information Processing requirements when using cryptography 335 | to secure digital information. 336 |

337 |
338 | 339 |

Status of This Document

340 | This specification was published by the 341 | Credentials Community Group. It is not a W3C Standard nor is it 342 | on the W3C Standards Track. 343 | 344 | Please note that under the 345 | W3C Community Final Specification Agreement (FSA) 346 | other conditions apply. 347 | 348 | Learn more about 349 | W3C Community and Business Groups. 350 |

351 |

352 | This is an experimental specification and is undergoing regular 353 | revisions. It is not fit for production deployment. 354 |

355 |

356 | GitHub Issues are preferred for 357 | discussion of this specification. 358 | 359 | Alternatively, you can send comments to our mailing list. 360 | Please send them to 361 | public-credentials@w3.org 362 | (subscribe, 363 | archives). 364 | 365 |

366 | 367 |

1. Introduction

368 | 369 |

370 | This specification defines a cryptographic suite for the purpose of 371 | creating, verifying proofs for Ed25519 EdDSA signatures in conformance 372 | with the Linked Data Proofs [LD-PROOFS] specification. 373 |

374 |

375 | In general the suites uses the RDF Dataset Normalization Algorithm 376 | [RDF-DATASET-NORMALIZATION] to transform an input document into its 377 | canonical form. The cannonical representation is then hashed and signed 378 | with a detached signature algorithm. 379 |

380 |
381 | 382 |

2. Terminology

383 | 384 |

385 | The following terms are used to describe concepts involved in the 386 | generation and verification of the Linked Data Proof 387 | signature suite. 388 |

389 | 390 |
391 |
signature suite
392 |
393 | A specified set of cryptographic primitives typically consisting of a 394 | canonicalization algorithm, a message digest algorithm, and a 395 | signature algorithm that are bundled together by cryptographers for 396 | developers for the purposes of safety and convenience. 397 |
398 |
canonicalization algorithm
399 |
400 | An algorithm that takes an input document that has more than one 401 | possible representation and always transforms it into a 402 | canonical form. This process is sometimes also called 403 | normalization. 404 |
405 |
406 | message digest algorithm 407 |
408 |
409 | An algorithm that takes a message, prefferably in some 410 | canonical form and produces a cryptographic output called a 411 | digest that is often many orders of magnitude smaller than the input 412 | message. These algorithms are often 1) very fast, 2) non-reversible, 413 | 3) cause the output to change significantly when even one bit of the 414 | input message changes, and 4) make it infeasible to find two different 415 | inputs for the same output. 416 |
417 |
canonical form
418 |
419 | The output of applying a canonicalization algorithm to an input 420 | document. 421 |
422 |
signature algorithm
423 |
424 | An algorithm that takes an input message and produces an output value 425 | where the receiver of the message can mathematically verify that the 426 | message has not been modified in transit and came from someone 427 | possessing a particular secret. 428 |
429 |
Ed25519VerificationKey2020
430 |
431 | The type of the verification method for the signature 432 | suite Ed25519Signature2020. 433 |
434 | 435 |
Ed25519Signature2020
436 |
437 | The type of the linked data proof for the signature suite 438 | Ed25519Signature2020. 439 |
440 |
441 |
442 | 443 |

3. Suite Definition

444 | 445 | 446 |

447 | The Ed25519 signature suite 2020 MUST be used in conjunction with 448 | the signing and verification algorithms in the Linked Data Proofs 449 | [LD-PROOFS] specification. The suite consists of the following 450 | algorithms: 451 |

452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 |
ParameterValueSpecification
canonicalization algorithmhttps://w3id.org/security#URDNA2015[RDF-DATASET-NORMALIZATION]
message digest algorithmSHA-256[RFC6234]
signature algorithmEdwards-Curve Digital Signature Algorithm (EdDSA)[RFC8032]
477 | 478 |

3.1 Verification Method

479 | 480 |

481 | The cryptographic material used to verify a linked data proof is 482 | called the verification method. 483 |

484 | 485 |

486 | This suite relies on public key material represented using 487 | [MULTIBASE] and [MULTICODEC]. 488 |

489 | 490 |

491 | This suite supports public key use for both digital signature 492 | verification, according to [RFC8032]. 493 |

494 | 495 |

496 | This suite MAY be used to verify linked data proofs produced by key 497 | material in any representation that can be converted to 498 | publicKeyMultibase>, however it is RECOMMENDED that this 499 | suite be used with verification method's of type 500 | Ed25519VerificationKey2020. 501 |

502 | 503 |

3.1.1 Ed25519VerificationKey2020

504 | 505 | 506 |

507 | The id of the verification method SHOULD be the JWK 508 | thumbprint calculated from the 509 | publicKeyMultibase property value according to 510 | [MULTIBASE]. 511 |

512 |

513 | The type of the verification method SHOULD be 514 | Ed25519VerificationKey2020. 515 |

516 |

517 | The controller of the verification method SHOULD be a 518 | URI. 519 |

520 | 521 |

522 | The publicKeyMultibase property of the verification 523 | method MUST be a public key encoded according to [MULTICODEC] and 524 | formatted according to [MULTIBASE]. The multicodec encoding of 525 | a Ed25519 public key is the two-byte prefix 0xed01 526 | followed by the 32-byte public key data. 527 |

528 | 529 |

530 | Be careful not to accidentally publish a representation of a private 531 | key. 532 |

533 | 534 |
535 |
536 | Example 1 537 |
{
 538 |   "id": "https://example.com/issuer/123#key-0",
 539 |   "type": "Ed25519VerificationKey2020",
 540 |   "controller": "https://example.com/issuer/123",
 541 |   "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
 542 | }
543 |
544 | 545 |
546 |
547 | Example 2: Example in DID Document. 548 |
{
 549 |   "@context": [
 550 |     "https://www.w3.org/ns/did/v1",
 551 |     {
 552 |       "@base": "did:example:123"
 553 |     }
 554 |   ],
 555 |   "id": "did:example:123",
 556 |   "publicKey": [
 557 |     {
 558 |       "id": "#key-0",
 559 |       "type": "Ed25519VerificationKey2020",
 560 |       "controller": "did:example:123",
 561 |       "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
 562 |     }
 563 |   ],
 564 |   "authentication": [
 565 |     "#key-0"
 566 |   ],
 567 |   "assertionMethod": [
 568 |     "#key-0"
 569 |   ],
 570 |   "capabilityDelegation": [
 571 |     "#key-0"
 572 |   ],
 573 |   "capabilityInvocation": [
 574 |     "#key-0"
 575 |   ]
 576 | }
577 |
578 |
579 |
580 | 581 |

3.2 Proof Representation

582 | 583 |

584 | The cryptographic material used to represent a linked data proof is 585 | called the proof type. 586 |

587 | 588 |

589 | This suite relies on detached digital signatures represented using 590 | [MULTIBASE] and [MULTICODEC]. 591 |

592 | 593 |

3.2.1 Ed25519 Signature 2020

594 | 595 | 596 |

597 | The verificationMethod property of the proof SHOULD be 598 | a URI. Dereferencing the verificationMethod SHOULD 599 | result in an object of type 600 | Ed25519VerificationKey2020. 601 |

602 |

603 | The type property of the proof MUST be 604 | Ed25519Signature2020. 605 |

606 |

607 | The created property of the proof MUST be an 608 | [ISO_8601] formated date string. 609 |

610 |

611 | The proofPurpose property of the proof MUST be a 612 | string, and SHOULD match the verification relationship expressed by 613 | the verification method controller. 614 |

615 |

616 | The proofValue property of the proof MUST be a detached 617 | EdDSA produced according to [RFC8032], encoded according to 618 | [MULTIBASE]. 619 |

620 |
621 |
622 |
623 | 624 |

4. Test Vectors

625 | 626 |

627 | The following test vectors are provided to assist with implementers. 628 |

629 | 630 |
631 |
632 | Example 3 633 |
{
 634 |   "seed_0": "9b937b81322d816cfab9d5a3baacc9b2a5febe4b149f126b3630f93a29527017"
 635 | }
636 |
637 |
638 |
639 | Example 4 640 |
{
 641 |   "keypair_0": {
 642 |     "id": "https://example.com/issuer/123#key-0",
 643 |     "type": "Ed25519VerificationKey2018",
 644 |     "controller": "https://example.com/issuer/123",
 645 |     "publicKeyBase58": "dbDmZLTWuEYYZNHFLKLoRkEX4sZykkSLNQLXvMUyMB1",
 646 |     "privateKeyBase58": "47QbyJEDqmHTzsdg8xzqXD8gqKuLufYRrKWTmB7eAaWHG2EAsQ2GUyqRqWWYT15dGuag52Sf3j4hs2mu7w52mgps"
 647 |   },
 648 |   "keypair_1": {
 649 |     "id": "https://example.com/issuer/123#key-0",
 650 |     "type": "Ed25519KeyPair2020",
 651 |     "controller": "https://example.com/issuer/123",
 652 |     "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP",
 653 |     "privateKeyMultibase": "zrv3kJcnBP1RpYmvNZ9jcYpKBZg41iSobWxSg3ix2U7Cp59kjwQFCT4SZTgLSL3HP8iGMdJs3nedjqYgNn6ZJmsmjRm"
 654 |   }
 655 | }
656 |
657 | 658 |
659 |
660 | Example 5 661 |
{
 662 |   "issuer_0": {
 663 |     "@context": [
 664 |       "https://www.w3.org/ns/did/v1",
 665 |       "https://w3id.org/security/suites/ed25519-2020/v1",
 666 |       {
 667 |         "@base": "https://example.com/issuer/123"
 668 |       }
 669 |     ],
 670 |     "id": "https://example.com/issuer/123",
 671 |     "verificationMethod": [
 672 |       {
 673 |         "id": "#key-0",
 674 |         "type": "Ed25519VerificationKey2020",
 675 |         "controller": "https://example.com/issuer/123",
 676 |         "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
 677 |       }
 678 |     ],
 679 |     "assertionMethod": ["#key-0"],
 680 |     "authentication": ["#key-0"]
 681 |   }
 682 | }
683 |
684 | 685 |
686 |
687 | Example 6 688 |
{
 689 |   "vc_template_0": {
 690 |     "@context": [
 691 |       "https://www.w3.org/2018/credentials/v1",
 692 |       "https://www.w3.org/2018/credentials/examples/v1",
 693 |       "https://w3id.org/security/suites/ed25519-2020/v1",
 694 |     ],
 695 |     "id": "http://example.gov/credentials/3732",
 696 |     "type": ["VerifiableCredential", "UniversityDegreeCredential"],
 697 |     "issuer": "https://example.com/issuer/123",
 698 |     "issuanceDate": "2020-03-10T04:24:12.164Z",
 699 |     "credentialSubject": {
 700 |       "id": "did:example:456",
 701 |       "degree": {
 702 |         "type": "BachelorDegree",
 703 |         "name": "Bachelor of Science and Arts"
 704 |       }
 705 |     }
 706 |   },
 707 |   "vc_0": {
 708 |     "@context": [
 709 |       "https://www.w3.org/2018/credentials/v1",
 710 |       "https://www.w3.org/2018/credentials/examples/v1",
 711 |       "https://w3id.org/security/suites/ed25519-2020/v1"
 712 |     ],
 713 |     "id": "http://example.gov/credentials/3732",
 714 |     "type": ["VerifiableCredential", "UniversityDegreeCredential"],
 715 |     "issuer": "https://example.com/issuer/123",
 716 |     "issuanceDate": "2020-03-10T04:24:12.164Z",
 717 |     "credentialSubject": {
 718 |       "id": "did:example:456",
 719 |       "degree": {
 720 |         "type": "BachelorDegree",
 721 |         "name": "Bachelor of Science and Arts"
 722 |       }
 723 |     },
 724 |     "proof": {
 725 |       "type": "Ed25519Signature2020",
 726 |       "created": "2019-12-11T03:50:55Z",
 727 |       "proofValue": "z5SpZtDGGz5a89PJbQT2sgbRUiyyAGhhgjcf86aJHfYcfvPjxn6vej5na6kUzmw1jMAR9PJU9mowshQFFdGmDN14D",
 728 |       "proofPurpose": "assertionMethod",
 729 |       "verificationMethod": "https://example.com/issuer/123#key-0"
 730 |     }
 731 |   },
 732 |   "vp_0": {
 733 |     "@context": [
 734 |       "https://www.w3.org/2018/credentials/v1",
 735 |       "https://w3id.org/security/suites/ed25519-2020/v1"
 736 |     ],
 737 |     "type": ["VerifiablePresentation"],
 738 |     "verifiableCredential": [
 739 |       {
 740 |         "@context": [
 741 |           "https://www.w3.org/2018/credentials/v1",
 742 |           "https://www.w3.org/2018/credentials/examples/v1",
 743 |           "https://w3id.org/security/suites/ed25519-2020/v1"
 744 |         ],
 745 |         "id": "http://example.gov/credentials/3732",
 746 |         "type": ["VerifiableCredential", "UniversityDegreeCredential"],
 747 |         "issuer": "https://example.com/issuer/123",
 748 |         "issuanceDate": "2020-03-10T04:24:12.164Z",
 749 |         "credentialSubject": {
 750 |           "id": "did:example:456",
 751 |           "degree": {
 752 |             "type": "BachelorDegree",
 753 |             "name": "Bachelor of Science and Arts"
 754 |           }
 755 |         },
 756 |         "proof": {
 757 |           "type": "Ed25519Signature2020",
 758 |           "created": "2019-12-11T03:50:55Z",
 759 |           "proofValue": "z5SpZtDGGz5a89PJbQT2sgbRUiyyAGhhgjcf86aJHfYcfvPjxn6vej5na6kUzmw1jMAR9PJU9mowshQFFdGmDN14D",
 760 |           "proofPurpose": "assertionMethod",
 761 |           "verificationMethod": "https://example.com/issuer/123#key-0"
 762 |         }
 763 |       }
 764 |     ],
 765 |     "id": "urn:uuid:83895ddf-52ee-4408-8796-51a1856dbbec",
 766 |     "holder": "did:ex:12345",
 767 |     "proof": {
 768 |       "type": "Ed25519Signature2020",
 769 |       "created": "2021-06-04T20:50:09Z",
 770 |       "verificationMethod": "https://example.com/issuer/123#key-0",
 771 |       "proofPurpose": "authentication",
 772 |       "challenge": "123",
 773 |       "proofValue": "z2y3UBXAiToXLzQqeMnHiMozJ3hKxcMgLm7p8GRQA92F6JSYu49RxHQf6k1CMKnMdpj3BLRSH69b9qA9cfjE3oS7q"
 774 |     }
 775 |   }
 776 | }
777 |
778 |
779 | 780 |

5. Conformance

As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.

781 | The key words MAY, MUST, RECOMMENDED, and SHOULD in this document 782 | are to be interpreted as described in 783 | BCP 14 784 | [RFC2119] [RFC8174] 785 | when, and only when, they appear in all capitals, as shown here. 786 |

787 |

788 | A conforming document is any concrete expression of the data 789 | model that complies with the normative statements in this specification. 790 | Specifically, all relevant normative statements in Sections 791 | 2. Terminology and 3. Suite Definition 792 | of this document MUST be enforced. 793 |

794 | 795 |

796 | A conforming processor is any algorithm 797 | realized as software and/or hardware that generates or consumes a 798 | conforming document. Conforming processors MUST produce errors 799 | when non-conforming documents are consumed. 800 |

801 |

802 | This document also contains examples that contain JSON and JSON-LD 803 | content. Some of these examples contain characters that are invalid 804 | JSON, such as inline comments (//) and the use of ellipsis 805 | (...) to denote information that adds little value to the 806 | example. Implementers are cautioned to remove this content if they 807 | desire to use the information as valid JSON or JSON-LD. 808 |

809 |
810 | 811 |

6. Security Considerations

812 | 813 |

814 | The following section describes security considerations that developers 815 | implementing this specification should be aware of in order to create 816 | secure software. 817 |

818 | 819 |
Note

820 | This specification relies on URDNA2015, please review 821 | [RDF-DATASET-NORMALIZATION]. 822 |

823 | 824 |
Note

825 | This specification relies on [MULTIBASE], [MULTICODEC] and 826 | [RFC8032]. 827 |

828 | 829 |
Issue 1
830 | TODO: We need to add a complete list of security considerations. 831 |
832 |
833 | 834 | 835 |

A. References

A.1 Normative references

836 | 837 |
[ISO_8601]
838 | ISO_8601. URL: https://en.wikipedia.org/wiki/ISO_8601 839 |
[LD-PROOFS]
840 | Linked Data Proofs 1.0. David Longley; Manu Sporny. Web Payments Community Group. CGDRAFT. URL: https://w3c-ccg.github.io/ld-proofs 841 |
[MULTIBASE]
842 | Multibase. URL: https://tools.ietf.org/html/draft-multiformats-multibase-01 843 |
[MULTICODEC]
844 | Multicodec. URL: https://github.com/multiformats/multicodec/ 845 |
[RDF-DATASET-NORMALIZATION]
846 | RDF Dataset Normalization 1.0. David Longley; Manu Sporny. JSON-LD Community Group. CGDRAFT. URL: http://json-ld.github.io/normalization/spec/ 847 |
[RFC2119]
848 | Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. March 1997. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119 849 |
[RFC6234]
850 | US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF). D. Eastlake 3rd; T. Hansen. IETF. May 2011. Informational. URL: https://www.rfc-editor.org/rfc/rfc6234 851 |
[RFC8032]
852 | Edwards-Curve Digital Signature Algorithm (EdDSA). S. Josefsson; I. Liusvaara. IETF. January 2017. Informational. URL: https://www.rfc-editor.org/rfc/rfc8032 853 |
[RFC8174]
854 | Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. May 2017. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc8174 855 |
856 |
-------------------------------------------------------------------------------- /w3c.json: -------------------------------------------------------------------------------- 1 | { 2 | "group": [ 3 | "98922" 4 | ], 5 | "contacts": [ 6 | "iherman" 7 | ], 8 | "shortName": "vc-di-eddsa", 9 | "repo-type": "rec-track" 10 | } 11 | --------------------------------------------------------------------------------