{"_id":"@digitalcredentials/sign-and-verify","_rev":"12-4d13e62605ecccbe0226bafc6dd042aa","name":"@digitalcredentials/sign-and-verify","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"@digitalcredentials/sign-and-verify","version":"0.0.1","keywords":[],"author":{"name":"Kim Hamilton Duffy"},"license":"MIT","_id":"@digitalcredentials/sign-and-verify@0.0.1","maintainers":[{"name":"kimhd","email":"kimdhamilton@gmail.com"}],"homepage":"https://github.com/digitalcredentials/sign-and-verify#readme","bugs":{"url":"https://github.com/digitalcredentials/sign-and-verify/issues"},"dist":{"shasum":"8b666eb40863b5e6b78e69626dba2a3b1d9f7715","tarball":"https://registry.npmjs.org/@digitalcredentials/sign-and-verify/-/sign-and-verify-0.0.1.tgz","fileCount":21,"integrity":"sha512-XrO/RlNnutzaQ8wOPXr6uThdGtjRBwZ4wED97ITl4Bxyh37uyQFra9rYG6k24lcu7lZXmA3i5H9h83kFcZuYHw==","signatures":[{"sig":"MEYCIQDOItxptjDeLFDbrMZ04fzPrndOp8A//oRmwZ7muDwUcwIhAPrDKVXokE3s0BYwawLR4oLEnXDDyriimMOq5b9m61sV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":96272,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfp1yeCRA9TVsSAnZWagAAntgQAJ6WyQIoZShqJ4HfLujg\ngQ9rO8TVJtqfEOXPMxKQY6dwPWMu+PiaSmSOrddtoi36PQdaJFlynsFG8OP/\n86CCN4Xns5TqQKWz1OkvcSk7DYxoKSWSHekzEe6ZMvDpl8dHgerfWtwrxpd3\n/UBO90twx/geOX400+bwDvlXEk5Tibhi7FQO0PO9+aDWxGS3k6HVHfb/dPRJ\n8q6VMJTI7BeylD7YiczjyXJpX3OMXBddtdhfy06rHCtgTqWbEABJXOiD5wC9\nKMa/iUArSyW14Jwhi8OBo60KC7ef5O82EPrwjCI2wvhRQeoih/+MWsYr5J1F\nZtgD3E4nJ+u5qR9JMXbe9Dj7oww9p13usPzkgt1fm3/WTWV0A480aXvX5JsJ\nqmfydea2t2cmxXHp/lEcm+U2JPTSYyU++kNA8CgYf62eShQ+qLtadBZKFXdu\nNESdV4YM1SbUcY/VGt32yfnrCNbQNsPqRni5/jOALijsiDsAji96cDDiKVNb\n1yXTnmt/VhQvMXZfa4Th7MNz6Ppe0hlN/67FdEBB3d0wzBc4sAaWusasZtcV\nuI+m8gK/woFoXtCqewTen+2MVHZIIyJ9ohqmB4I8fsaXp+BQ9+tRU8VK16MA\nhFHiHLOp9aCWXQL4GEsPMHyyhYfvdbfb068o+rZJ6HqpYT5fN/fBXTsJBRGK\nSrO+\r\n=DQbF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"64583d7def17d0055588572a68ce149480c08166","scripts":{"test":"mocha -r ts-node/register src/**/*.spec.ts","build":"tsc -p tsconfig.json","start":"node --require dotenv/config dist/index.js","postbuild":"npm run copy-files","copy-files":"copyfiles -u 1 src/**/*.yaml dist/"},"_npmUser":{"name":"kimhd","email":"kimdhamilton@gmail.com"},"repository":{"url":"git+ssh://git@github.com/digitalcredentials/sign-and-verify.git","type":"git"},"_npmVersion":"6.14.8","description":"Basic demo of signing functionality using vc-js and lds-jws2020","directories":{},"_nodeVersion":"14.8.0","dependencies":{"jose":"^1.27.2","uuid":"^8.3.1","vc-js":"^0.6.4","dotenv":"^8.2.0","jsonld":"^3.1.1","fastify":"^3.2.0","fastify-cors":"^4.1.0","fastify-swagger":"^3.4.0","jsonld-signatures":"^5.1.0","@transmute/json-web-key-2020":"^1.0.0","@transmute/json-web-signature-2020":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","mocha":"^8.1.1","sinon":"^9.1.0","ts-node":"^8.10.2","copyfiles":"^2.4.0","typescript":"^3.9.7","@types/chai":"^4.2.12","@types/node":"^14.11.2","@types/uuid":"^8.3.0","fastify-log":"^1.2.1","@types/mocha":"^8.0.1","@types/sinon":"^9.0.8"},"_npmOperationalInternal":{"tmp":"tmp/sign-and-verify_0.0.1_1604803741697_0.190581039897177","host":"s3://npm-registry-packages"}}},"time":{"created":"2020-11-08T02:49:01.435Z","modified":"2026-09-30T17:46:25.374Z","0.0.1":"2020-11-08T02:49:01.867Z"},"bugs":{"url":"https://github.com/digitalcredentials/sign-and-verify/issues"},"author":{"name":"Kim Hamilton Duffy"},"license":"MIT","homepage":"https://github.com/digitalcredentials/sign-and-verify#readme","keywords":[],"repository":{"url":"git+ssh://git@github.com/digitalcredentials/sign-and-verify.git","type":"git"},"description":"Basic demo of signing functionality using vc-js and lds-jws2020","maintainers":[{"email":"dzagidulin@gmail.com","name":"codenamedmitri"},{"email":"jc.chartrand@gmail.com","name":"jchartrand"},{"email":"kerri@dccommons.org","name":"klemoie"},{"email":"nate.otto@dccommons.org","name":"nateotto.dcc"}],"readme":"# sign-and-verify\n\nThis repo currently contains signing and verification functionality and a minimal REST service that demonstrates the functionality. It may be broken up into separate repos or converted to a monorepo in the future.\n\nThe REST service implements a subset of the W3C CCG [vc-http-api draft standard](https://w3c-ccg.github.io/vc-http-api/).\n\n# Getting started\n\n## Configuration\n\nThe service can be configured with the following environment variables:\n\n- `UNLOCKED_DID` - a base64 encoded DID json blob (required)\n- `PORT` - the port the web service will bind to (optional, default: `5000`)\n\nLocally, you need to copy `.env.example` to `.env`, which `npm run start` will pick up, to test these values.\n\nNOTE: the `UNLOCKED_DID` included as an example is just for your reference. Do not check in unlocked dids, private keys, or the equivalent.\n\n## Install\n\n```\nnpm run install\n```\n\n## Build\n\n```\nnpm run build\n```\n\n## Run\n\n```\nnpm run start\n```\n\n## Test\n\n```\nnpm run test\n```\n\n# Basic Concepts\n\nThis assumes familiarity with the basics of the [W3C Verifiable Credentials Data Model](https://www.w3.org/TR/vc-data-model/). Two key concepts are:\n\n- [Verifiable Credential](https://www.w3.org/TR/vc-data-model/#credentials)\n- [Verifiable Presentation](https://www.w3.org/TR/vc-data-model/#presentations)\n\nThe REST API exposed by this service implements a subset of the [vc-http-api](https://w3c-ccg.github.io/vc-http-api/vc-http-api) draft standard and also includes some non-standard convenience endpoints. \n\nThe vc-http-api can be confusing when getting started, partly because it contains APIs for issuer, holders, and verifiers. Actual deployments would involve different endpoints for differely roles; or, put differently, a single instance of this service is not intended to be used by issuers, holders, and verifiers. The vc-http-api currently lacks high-level documentation, so this README provides verbose descriptions about what these APIs are used for. But these APIs ultimately (should eventually) comply with [vc-http-api](https://w3c-ccg.github.io/vc-http-api/).\n\n# API Docs\n\n## Issue Credential\n\nFor issuers when signing a Verifiable Credential. \n\n### General Format\n\n```\ncurl --header \"Content-Type: application/json\" \\\n  --request POST \\\n  --data '{\"credential\": <Verifiable Credential To Sign> \\\n          \"options\": <Signing Options>' \\\n  <sign-and-verify-service>/issue/credentials\n```\n\n### Example\n\nRequest:\n\n```\ncurl --header \"Content-Type: application/json\" \\\n  --request POST \n  --data '{\"credential\": {\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://www.w3.org/2018/credentials/examples/v1\"],\"id\":\"http://example.gov/credentials/3732\",\"type\":[\"VerifiableCredential\",\"UniversityDegreeCredential\"],\"issuer\":\"did:web:digitalcredentials.github.io\",\"issuanceDate\":\"2020-03-10T04:24:12.164Z\",\"credentialSubject\":{\"id\":\"did:elem:ropsten:EiBJJPdo-ONF0jxqt8mZYEj9Z7FbdC87m2xvN0_HAbcoEg\",\"degree\":{\"type\":\"BachelorDegree\",\"name\":\"Bachelor of Science and Arts\"}}}, \"options\": {\"verificationMethod\": \"did:web:digitalcredentials.github.io#96K4BSIWAkhcclKssb8yTWMQSz4QzPWBy-JsAFlwoIs\"}}' \\\n  http://127.0.0.1:5000/issue/credentials\n```\n\nResponse Codes:\n- 201: success (with signed Verifiable Credential)\n- 400: invalid input\n- 500: error\n\n[Reference: vc-http-api /issue/credentials](https://w3c-ccg.github.io/vc-http-api/#/Issuer/issueCredential)\n\n\n## Verify Presentation\n\nFor verifiers to verify (check the proof) of a Verifiable Presentation (VP). \n\nCurrent DCC implementations also use this endpoint for a special case of VP verification, to implement a lightweight version of DID auth. The  learner's wallet generates a VP proving control over the DID (it's a VP without a VC), and the issuer checks the proof.\n\nAdditional implementation details are [Overview of Credential Request Flow](#Overview-of-Credential-Request-Flow)\n\n### General Format\n\n```\ncurl --header \"Content-Type: application/json\" \\\n  --request POST \\\n  --data '{\"verifiablePresentation\": <Verifiable Presentation> \\\n            \"options\": <Verification Options>' \\\n    <sign-and-verify-service>/verify/presentations\n```\n\n### Example\n\nRequest:\n\n```\ncurl --header \"Content-Type: application/json\" \\\n  --request POST \\\n  --data '{\"verifiablePresentation\": {\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"type\":[\"VerifiablePresentation\"],\"id\":\"456\",\"holder\":\"did:web:digitalcredentials.github.io\",\"proof\":{\"type\":\"/JsonWebSignature2020\",\"http://purl.org/dc/terms/created\":{\"type\":\"http://www.w3.org/2001/XMLSchema#dateTime\",\"@value\":\"2020-10-12T17:06:49.767Z\"},\"https://w3id.org/security#challenge\":\"123\",\"https://w3id.org/security#jws\":\"eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..4OiWb5EGPmXhtMNhmVXwyYhUI2BLbgcP0o-GNQaXBsMARfEGMTZi28BDiXmkdsCWvx2xmFD-cROvyIr-qMpeCQ\",\"https://w3id.org/security#proofPurpose\":{\"id\":\"https://w3id.org/security#authenticationMethod\"},\"https://w3id.org/security#verificationMethod\":{\"id\":\"did:web:digitalcredentials.github.io#96K4BSIWAkhcclKssb8yTWMQSz4QzPWBy-JsAFlwoIs\"}}}, \"options\": {\"verificationMethod\": \"did:web:digitalcredentials.github.io#96K4BSIWAkhcclKssb8yTWMQSz4QzPWBy-JsAFlwoIs\", \"challenge\":\"123\"}}' \\\n  http://127.0.0.1:5000/verify/presentations\n```\n\nResponse Codes:\n\n- 200: success\n    - Specifically, it means the API request was successful AND the VP was verified \n    - VerificationResult details below\n- 400: invalid input\n- 500: error\n\nNote: VerificationResult from vc-http-api isn't especially helpful at the moment, so we pass along non-standard verification metadata. Response code 200 means it's successfully verified. Additionally, in case of success, we return the non-standard `holder` field for convenience. In this example, the VerificationResult is:\n\n```\n{\n   holder : did:web:digitalcredentials.github.io\n}\n```\n\n[Reference: vc-http-api /verify/presentations](https://w3c-ccg.github.io/vc-http-api/#/Verifier/verifyPresentation)\n\n\n## Generate proof of control\n> non-standard\n\nThis is used by the learner's wallet (as a library) to generate proof of control over a DID. This is a special case of `/prove/presentations` (which this also implements), but customizes for this use case.\n\n### General Format\n\n```\ncurl --header \"Content-Type: application/json\" \\\n  --request POST \\\n  --data '<PROOF OPTIONS>' \\\n    <sign-and-verify-service>/generate/controlproof\n```\n\n\nPROOF_OPTIONS look like this:\n```\n{\n  \"presentationId\": \"<optional; provided by the wallet>\",\n  \"holder\": \"<did proving control over>\",\n  \"verificationMethod\": \"did:web:digitalcredentials.github.io#96K4BSIWAkhcclKssb8yTWMQSz4QzPWBy-JsAFlwoIs\",\n  \"challenge\": \"<challenge provided by issuer and passed through from wallet; should match>\"\n}\n```\n\n### Example\n\nRequest\n\n```\ncurl --header \"Content-Type: application/json\" \\\n  --request POST  \\\n  --data '{\"presentationId\": \"456\", \"holder\": \"did:web:digitalcredentials.github.io\", \"verificationMethod\": \"did:web:digitalcredentials.github.io#96K4BSIWAkhcclKssb8yTWMQSz4QzPWBy-JsAFlwoIs\", \"challenge\": \"123\"}' \\\n  http://127.0.0.1:5000/generate/controlproof\n```\n\nResponse Codes:\n- 201: success, with VP demonstrating proof of control (see response for this example below)\n- 400: invalid input\n- 500: error\n\n\nResponse:\n```\n{\n  \"@context\": [\n    \"https://www.w3.org/2018/credentials/v1\"\n  ],\n  \"type\": [\n    \"VerifiablePresentation\"\n  ],\n  \"id\": \"456\",\n  \"holder\": \"did:web:digitalcredentials.github.io\",\n  \"proof\": {\n    \"type\": \"/JsonWebSignature2020\",\n    \"http://purl.org/dc/terms/created\": {\n      \"type\": \"http://www.w3.org/2001/XMLSchema#dateTime\",\n      \"@value\": \"2020-10-30T00:40:59.674Z\"\n    },\n    \"https://w3id.org/security#challenge\": \"123\",\n    \"https://w3id.org/security#jws\": \"eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..vRfVoA-8hyh5tS5wb-3EoiSni9W1fHyvLTmumEE80v1Z3486LYdG6etRF6sjNmhrTCIyQiIOh0QwnkZ6W69sAQ\",\n    \"https://w3id.org/security#proofPurpose\": {\n      \"id\": \"https://w3id.org/security#authenticationMethod\"\n    },\n    \"https://w3id.org/security#verificationMethod\": {\n      \"id\": \"did:web:digitalcredentials.github.io#96K4BSIWAkhcclKssb8yTWMQSz4QzPWBy-JsAFlwoIs\"\n    }\n  }\n}\n```\n\n\n## Verify Credential\n\nUsed to verify a Verifable Credential.\n\n### General Format\n\n```\ncurl --header \"Content-Type: application/json\" \\\n  --request POST \\\n  --data '{\"verifiableCredential\": <Verifiable Credential> \\\n            \"options\": <Verification Options>' \\\n    <sign-and-verify-service>/verify/credentials\n```\n\n\n### Example\n\nRequest:\n\n```\ncurl --header \"Content-Type: application/json\" \\\n  --request POST \\\n  --data '{\"verifiableCredential\": {\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://www.w3.org/2018/credentials/examples/v1\"],\"id\":\"http://example.gov/credentials/3732\",\"type\":[\"VerifiableCredential\",\"UniversityDegreeCredential\"],\"issuer\":\"did:web:digitalcredentials.github.io\",\"issuanceDate\":\"2020-03-10T04:24:12.164Z\",\"credentialSubject\":{\"id\":\"did:elem:ropsten:EiBJJPdo-ONF0jxqt8mZYEj9Z7FbdC87m2xvN0_HAbcoEg\",\"degree\":{\"type\":\"BachelorDegree\",\"name\":\"Bachelor of Science and Arts\"}},\"proof\":{\"type\":\"/JsonWebSignature2020\",\"dct:created\":{\"type\":\"xsd:dateTime\",\"@value\":\"2020-10-12T16:59:13.588Z\"},\"https://w3id.org/security#jws\":\"eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..uEcrIAdPZfUdsP3uQmq-LE0PuSLlvXQLPpZiuH7JXss7phCOEHzw8z1MgG6Bf5J3AxYXmrkzPHkr2iUi-TVaBg\",\"https://w3id.org/security#proofPurpose\":{\"id\":\"https://w3id.org/security#assertionMethod\"},\"https://w3id.org/security#verificationMethod\":{\"id\":\"did:web:digitalcredentials.github.io#96K4BSIWAkhcclKssb8yTWMQSz4QzPWBy-JsAFlwoIs\"}}}, \"options\": {\"verificationMethod\": \"did:web:digitalcredentials.github.io#96K4BSIWAkhcclKssb8yTWMQSz4QzPWBy-JsAFlwoIs\"}}' \\\n  http://127.0.0.1:5000/verify/credentials\n```\n\nResponse Codes:\n- 200: success, and Verifiable Credential successfully verified.\n- 400: invalid input\n- 500: error\n\nNote: VerificationResult from vc-http-api isn't especially helpful at the moment, so we pass along verification metadata. But response code 200 means it's successfully verified.\n\n\n## Request a Demo Credential \n\nWith proof of control of DID. `<REQUEST_PAYLOAD>` is a Verifiable Presentation proving control of the did. See details below.\n\n### Example\n```\ncurl --header \"Content-Type: application/json\" \\\n  --request POST \\\n  --data <REQUEST_PAYLOAD> \\\n  http://127.0.0.1:5000/request/democredential\n``` \n\n\nWithout proof of control of DID\n\n### Example\n```\ncurl --header \"Content-Type: application/json\" \\\n  --request POST \\\n  --data '{\"holder\": \"did:example:me\"}' \\\n  http://127.0.0.1:5000/request/democredential/nodidproof\n```  \n\n# Overview of Credential Request Flow\n\nThe vc-http-api standard doesn't include specific methods related to credential request. Similarly, the credential request protocol is not overly-specified by DCC, to allow issuers flexibility to adapt it to their processes. But there are certain request/response elements expected by the DCC wallet, which this service can help with. This section describes how the DCC credential request flow relates to sign-and-verify\n\n## Request Structure\n\nA credential request coming from the DCC wallet will be of the form:\n\n```\ncurl --header \"Content-Type: application/json\" \\\n  --header \"Authorization: Bearer <TOKEN>\" \\\n  --request POST \\\n  --data <REQUEST_PAYLOAD> \\\n   <request_endpoint>\n```\n\n`request_endpoint` is provided by the issuer as part of the [DEEP_LINK](https://github.com/digitalcredentials/docs/blob/main/request/credential_request.md#request-credential-initial-state) to the DCC wallet. The DCC wallet will parse it from the DEEP_LINK and call it during the credential request.\n\n`REQUEST_PAYLOAD` has structure described by the [generate proof of control response](#Generate-proof-of-control). It's recommended that issuers verify several aspects of payload; relevant fields are highlighted below.\n\n```\n{\n    \"@context\": [\"https://www.w3.org/2018/credentials/v1\"],\n    ...\n    \"type\": [\"VerifiablePresentation\"],\n    \"holder\": <HOLDER_DID>,\n    \"proof\": {\n      \"challenge\": \"<Expected 1-time challenge>\",\n      \"verificationMethod\": {\n        \"id\": <Used for VP verification options>\n      }\n      ...\n    }\n}\n```\n\nAbout `REQUEST_PAYLOAD`:\n- `HOLDER_DID` is the subject DID the issuer would issue the credential to\n- `challenge` is expected to match the challenge the issuer previously provided in the links\n- `proof.verificationMethod.id` will be used as an argument when verifying the VP\n\n\n## DID (Proof of Control) Verification\n\nIt's recommended that the issuer verify the `REQUEST_PAYLOAD` provided by the learner's DCC wallet before issuing the credential\n\nIssuers can use the `/verify/presentations` endpoint described above to verify the DID contained in the subject's credential request. \n\nThe general structure of a `/verify/presentations` call looks like this:\n\n```\ncurl --header \"Content-Type: application/json\"  \\\n    --request POST \\\n    --data '{ verifiablePresentation: \"<REQUEST_PAYLOAD>\", \\\n      options: { \\\n      verificationMethod: \"<REQUEST_PAYLOAD.proof.verificationMethod.id>\", \\ \n      challenge: \"<Expected 1-time challenge>\" }' \\\n    <sign-and-verify-endpoint>/verify/presentations\n```\n\nAs described in [Verify Presentation](#Verify-Presentation), response code 200 means it's successfully verified. Additionally, in case of success, we return the non-standard `holder` field for convenience. In this example, the VerificationResult is:\n\n```\n{\n   holder : did:web:digitalcredentials.github.io\n}\n```\n\n\n### Example\n\nAssumptions:\n- sign-and-verify is running locally on port 5000\n- subject DID is `did:web:digitalcredentials.github.io` in this example\n\nExperimental code (partially) demonstrating this: https://github.com/digitalcredentials/issuer-demo\n\n#### CURL command to verify VP\n\n```\ncurl --header \"Content-Type: application/json\" --request POST --data '{\"verifiablePresentation\": {\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"type\":[\"VerifiablePresentation\"],\"id\":\"456\",\"holder\":\"did:web:digitalcredentials.github.io\",\"proof\":{\"type\":\"/JsonWebSignature2020\",\"http://purl.org/dc/terms/created\":{\"type\":\"http://www.w3.org/2001/XMLSchema#dateTime\",\"@value\":\"2020-10-12T17:06:49.767Z\"},\"https://w3id.org/security#challenge\":\"123\",\"https://w3id.org/security#jws\":\"eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..4OiWb5EGPmXhtMNhmVXwyYhUI2BLbgcP0o-GNQaXBsMARfEGMTZi28BDiXmkdsCWvx2xmFD-cROvyIr-qMpeCQ\",\"https://w3id.org/security#proofPurpose\":{\"id\":\"https://w3id.org/security#authenticationMethod\"},\"https://w3id.org/security#verificationMethod\":{\"id\":\"did:web:digitalcredentials.github.io#96K4BSIWAkhcclKssb8yTWMQSz4QzPWBy-JsAFlwoIs\"}}}, \"options\": {\"verificationMethod\": \"did:web:digitalcredentials.github.io#96K4BSIWAkhcclKssb8yTWMQSz4QzPWBy-JsAFlwoIs\", \"challenge\":\"123\"}}' http://127.0.0.1:5000/verify/presentations\n```\n\n\n##### Verifiable Presentation (formatted):\nFormatted for clarity and security-context normalized. This payload is passed through from subject (`REQUEST_PAYLOAD`):\n```\n{\n    \"@context\": [\n      \"https://www.w3.org/2018/credentials/v1\"\n    ],\n    \"type\": [\n      \"VerifiablePresentation\"\n    ],\n    \"id\": \"456\",\n    \"holder\": \"did:web:digitalcredentials.github.io\",\n    \"proof\": {\n      \"type\": \"/JsonWebSignature2020\",\n      \"created\": {\n        \"type\": \"http://www.w3.org/2001/XMLSchema#dateTime\",\n        \"@value\": \"2020-10-12T17:06:49.767Z\"\n      },\n      \"challenge\": \"123\",\n      \"jws\": \"eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..4OiWb5EGPmXhtMNhmVXwyYhUI2BLbgcP0o-GNQaXBsMARfEGMTZi28BDiXmkdsCWvx2xmFD-cROvyIr-qMpeCQ\",\n      \"proofPurpose\": {\n        \"id\": \"https://w3id.org/security#authenticationMethod\"\n      },\n      \"verificationMethod\": {\n        \"id\": \"did:web:digitalcredentials.github.io#96K4BSIWAkhcclKssb8yTWMQSz4QzPWBy-JsAFlwoIs\"\n      }\n    }\n}\n```\n\n##### Options (formatted):\n\nFormatted for clarity. \n\n```\n{\n  \"verificationMethod\": \"did:web:digitalcredentials.github.io#96K4BSIWAkhcclKssb8yTWMQSz4QzPWBy-JsAFlwoIs\",\n  \"challenge\": \"123\"\n}\n```\n\n","readmeFilename":"README.md"}