{"id":25944993,"url":"https://github.com/path-check/eddsa-jxt-sdk.js","last_synced_at":"2026-06-18T21:31:15.273Z","repository":{"id":104022501,"uuid":"375182558","full_name":"Path-Check/eddsa-jxt-sdk.js","owner":"Path-Check","description":"Verifiable QR SDK for W3C Vaccination Credentials with EDDSA Signatures and JSONXT","archived":false,"fork":false,"pushed_at":"2021-06-14T20:58:59.000Z","size":145,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-08-25T02:40:54.814Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Path-Check.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-06-09T00:44:07.000Z","updated_at":"2023-07-13T03:37:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"e4056d5f-6c97-4927-b6a2-7047150dc182","html_url":"https://github.com/Path-Check/eddsa-jxt-sdk.js","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Path-Check/eddsa-jxt-sdk.js","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Path-Check%2Feddsa-jxt-sdk.js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Path-Check%2Feddsa-jxt-sdk.js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Path-Check%2Feddsa-jxt-sdk.js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Path-Check%2Feddsa-jxt-sdk.js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Path-Check","download_url":"https://codeload.github.com/Path-Check/eddsa-jxt-sdk.js/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Path-Check%2Feddsa-jxt-sdk.js/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34508862,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-18T02:00:06.871Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-04T08:20:33.689Z","updated_at":"2026-06-18T21:31:15.263Z","avatar_url":"https://github.com/Path-Check.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Verifiable QR SDK for EDDSA on JSON-XT Credentials\n\nJavaScript Implementation of W3C Verifiable QR Credentials with EDDSA and minimization to a QR code with [JSON-XT](https://jsonxt.io/). \n\n# Install\n\n```sh\nnpm install @pathcheck/eddsa-jxt-sdk --save\n```\n\n# Usage\n\n## 1. Generating Keys\n\nGenerate private and public keys with the provided script: \n\n```js\nnpm explore @pathcheck/eddsa-jxt-sdk -- npm run-script keys \u003cYOUR_DOMAIN\u003e \u003cYOUR_KEY_NAME\u003e \u003cYOUR_CONTROLLER_NAME\u003e\n```\n\nExample: \n```js\nnpm explore @pathcheck/eddsa-jxt-sdk -- npm run-script keys PCF.PW 1A12 WEB1\n```\nReturns: \n```js\n/*******************************************************************************\nHere are your SECRET keys. Key this private and use it to sign new packages.\n*******************************************************************************/\n{\n  '@context': [\n    'https://www.w3.org/ns/did/v1',\n    'https://w3id.org/security/suites/ed25519-2020/v1'\n  ],\n  id: 'did:web:PCF.PW:1A12#WEB',\n  controller: 'did:web:PCF.PW:1A12',\n  type: 'Ed25519VerificationKey2020',\n  privateKeyMultibase: 'z4SnSYUVkioEPtzbeZ8wr8QJumzoLztf1gukRAFf7e4SrH3xWYj4mvFLQK1V6rDqHhFoyj2yA3ZSAcgZqYEmdNNKr',\n  publicKeyMultibase: 'zEzZ1wbzTHS232pKov6nfz38g5tkdtZ5d9ndCoaf9yG8G'\n}\n\n\n/***************************************************************************************************\nHere are your PUBLIC DID document. Save this part as a .json and upload it to PCF.PW/1A10/did.json\n****************************************************************************************************/\n{\n  '@context': [\n    'https://www.w3.org/ns/did/v1',\n    'https://w3id.org/security/suites/ed25519-2020/v1'\n  ],\n  id: 'did:web:PCF.PW:1A12',\n  type: 'Ed25519VerificationKey2020',\n  verificationMethod: [\n    {\n      '@context': [\n        \"https://www.w3.org/ns/did/v1\",\n        \"https://w3id.org/security/suites/ed25519-2020/v1\"\n      ],\n      id: 'did:web:PCF.PW:1A12#WEB',\n      type: 'Ed25519VerificationKey2020',\n      controller: 'did:web:PCF.PW:1A12',\n      publicKeyMultibase: 'zEzZ1wbzTHS232pKov6nfz38g5tkdtZ5d9ndCoaf9yG8G'\n    }\n  ],\n  authentication: [ 'did:web:PCF.PW:1A12#WEB' ],\n  assertionMethod: [ 'did:web:PCF.PW:1A12#WEB' ],\n  capabilityDelegation: [ 'did:web:PCF.PW:1A12#WEB' ],\n  capabilityInvocation: [ 'did:web:PCF.PW:1A12#WEB' ]\n}\n```\n\n## 2. Uploading Public Keys\n\nCopy the second segment (PUBLIC DID DOCUMENT) as a JSON file to your `domain/controllerName/did.json`\n\n```json\n{\n  \"@context\": [\n    \"https://www.w3.org/ns/did/v1\",\n    \"https://w3id.org/security/suites/ed25519-2020/v1\"\n  ],\n  \"id\": \"did:web:PCF.PW:1A12\",\n  \"type\": \"Ed25519VerificationKey2020\",\n  \"verificationMethod\": [\n    {\n      \"@context\": [\n        \"https://www.w3.org/ns/did/v1\",\n        \"https://w3id.org/security/suites/ed25519-2020/v1\"\n      ],\n      \"id\": \"did:web:PCF.PW:1A12#WEB\",\n      \"type\": \"Ed25519VerificationKey2020\",\n      \"controller\": \"did:web:PCF.PW:1A12\",\n      \"publicKeyMultibase\": \"zEzZ1wbzTHS232pKov6nfz38g5tkdtZ5d9ndCoaf9yG8G\"\n    }\n  ],\n  \"authentication\": [ \"did:web:PCF.PW:1A12#WEB\" ],\n  \"assertionMethod\": [ \"did:web:PCF.PW:1A12#WEB\" ],\n  \"capabilityDelegation\": [ \"did:web:PCF.PW:1A12#WEB\" ],\n  \"capabilityInvocation\": [ \"did:web:PCF.PW:1A12#WEB\" ]\n}\n```\n\nThe DID:WEB Resolver will point to that address (e.g. [`http://pcf.pw/1A12/did.json`](http://pcf.pw/1A12/did.json)) to download your public keys and verify the package. \n\n## 3. Preparing to Sign\n\n\nWith the keys: \n\n```js\nconst keyPair = {\n  '@context': [\n    'https://www.w3.org/ns/did/v1',\n    'https://w3id.org/security/suites/ed25519-2020/v1'\n  ],\n  id: 'did:web:PCF.PW:1A12#WEB',\n  controller: 'did:web:PCF.PW:1A12',\n  type: 'Ed25519VerificationKey2020',\n  privateKeyMultibase: 'z4SnSYUVkioEPtzbeZ8wr8QJumzoLztf1gukRAFf7e4SrH3xWYj4mvFLQK1V6rDqHhFoyj2yA3ZSAcgZqYEmdNNKr',\n  publicKeyMultibase: 'zEzZ1wbzTHS232pKov6nfz38g5tkdtZ5d9ndCoaf9yG8G'\n};\n```\n\nAnd a JSON-LD Payload (We are using EU's Digital COVID Certificate, version 1.2.0, as an example)\n\n```js\nconst TEST_PAYLOAD = {\n  \"@context\": [\n    \"https://www.w3.org/2018/credentials/v1\",\n    \"https://w3id.org/dgc/v1\",\n  ],\n  type: [\"VerifiableCredential\"],\n  issuer: \"did:web:PCF.PW:1A12\",\n  issuanceDate: \"2021-05-18T16:06:06Z\",\n  credentialSubject: {\n    \"@context\": [\"https://w3id.org/dgc/v1\"],\n    type: \"DGCCertificate\",\n    personalInformation: {\n      \"@context\": [\"https://w3id.org/dgc/v1\"],\n      type: \"DGCSubject\",\n      familyName: \"d'Arsøns - van Halen\",\n      givenName: \"François-Joan\",\n      stdFamilyName: \"DARSONS\u003cVAN\u003cHALEN\",\n      stdGivenName: \"FRANCOIS\u003cJOAN\",\n      birthDate: \"2009-02-28\",\n    },\n    proofOfRecovery: [\n      {\n        \"@context\": [\"https://w3id.org/dgc/v1\"],\n        type: \"DGCProofOfRecovery\",\n        id: \"urn:uvci:01:NL:LSP/REC/1289821\",\n        issuerName: \"Ministry of VWS\",\n        countryOfTest: \"NL\",\n        infectionInformation: {\n          \"@context\": [\"https://w3id.org/dgc/v1\"],\n          type: \"DGCInfectionInformation\",\n          diseaseRecoveredFrom: \"840539006\",\n          dateFirstPositive: \"2021-04-21\",\n          validFrom: \"2021-05-01\",\n          validUntil: \"2021-10-21\",\n        },\n      },\n    ],\n    proofOfVaccination: [\n      {\n        \"@context\": [\"https://w3id.org/dgc/v1\"],\n        type: \"DGCProofOfVaccination\",\n        id: \"urn:uvci:01:NL:PlA8UWS60Z4RZXVALl6GAZ\",\n        issuerName: \"Ministry of VWS\",\n        countryOfVaccination: \"NL\",\n        vaccinationInformation: {\n          \"@context\": [\"https://w3id.org/dgc/v1\"],\n          type: \"DGCVaccinationInformation\",\n          diseaseProtectedFrom: \"840539006\",\n          prophylaxis: \"1119349007\",\n          dateOfVaccination: \"2021-05-05\",\n          dose: 1,\n          totalDoses: 2,\n          marketingAuthHolder: \"ORG-100030215\",\n          medicinalProductName: \"EU/1/20/1528\",\n        },\n      },\n      {\n        \"@context\": [\"https://w3id.org/dgc/v1\"],\n        type: \"DGCProofOfVaccination\",\n        id: \"urn:uvci:01:NL:ATS342XDYS358FDFH3GTK5\",\n        issuerName: \"Ministry of VWS\",\n        countryOfVaccination: \"NL\",\n        vaccinationInformation: {\n          \"@context\": [\"https://w3id.org/dgc/v1\"],\n          type: \"DGCVaccinationInformation\",\n          diseaseProtectedFrom: \"840539006\",\n          prophylaxis: \"1119349007\",\n          dateOfVaccination: \"2021-05-25\",\n          dose: 2,\n          totalDoses: 2,\n          marketingAuthHolder: \"ORG-100030215\",\n          medicinalProductName: \"EU/1/20/1528\",\n        },\n      },\n    ],\n    proofOfCovidTest: [\n      {\n        \"@context\": [\"https://w3id.org/dgc/v1\"],\n        type: \"DGCProofOfCovidTest\",\n        id: \"urn:uvci:01:NL:GGD/81AAH16AZ\",\n        issuerName: \"Ministry of VWS\",\n        countryOfTestAdminstration: \"NL\",\n        testInformation: {\n          \"@context\": [\"https://w3id.org/dgc/v1\"],\n          type: \"DGCTestInformation\",\n          diseaseTestedFrom: \"840539006\",\n          testName: \"COVID PCR\",\n          testManufacturer: \"1232\",\n          testType: \"LP217198-3\",\n          sampleCollectionDateTime: \"2021-02-13T14:20:00Z\",\n          testResult: \"260415000\",\n          testCenter: \"GGD Fryslân, L-Heliconweg\",\n        },\n      },\n      {\n        \"@context\": [\"https://w3id.org/dgc/v1\"],\n        type: \"DGCProofOfCovidTest\",\n        id: \"urn:uvci:01:NL:GGD/23BBS36BC\",\n        issuerName: \"Ministry of VWS\",\n        countryOfTestAdminstration: \"NL\",\n        testInformation: {\n          \"@context\": [\"https://w3id.org/dgc/v1\"],\n          type: \"DGCTestInformation\",\n          diseaseTestedFrom: \"840539006\",\n          testName: \"NAAT TEST\",\n          testManufacturer: \"1343\",\n          testType: \"LP6464-4\",\n          sampleCollectionDateTime: \"2021-04-13T14:20:00Z\",\n          testResult: \"260373001\",\n          testCenter: \"GGD Fryslân, L-Heliconweg\",\n        },\n      },\n    ],\n  },\n};\n```\n\nCall the signAndPack function to create the URI for the QR Code: \n\n```js\nconst {signAndPack, unpackAndVerify} = require('@pathcheck/eddsa-jxt-sdk');\n\nconst qrUri = await signAndPack(TEST_PAYLOAD, keyPair);\n```\n\nAnd call the unpack and verify to convert the URI into the payload: \n\n```js\nconst jsonld = await unpackAndVerify(qrUri);\n```\n\n# Development\n\n```sh\nnpm install\n``` \n\n# Test\n\n```sh\nnpm test\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpath-check%2Feddsa-jxt-sdk.js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpath-check%2Feddsa-jxt-sdk.js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpath-check%2Feddsa-jxt-sdk.js/lists"}