https://github.com/transmute-industries/did-jwk-pqc
Post Quantum Decentralized Identifiers for Json Web Keys
https://github.com/transmute-industries/did-jwk-pqc
did jose jwk postquantum verifiable-credentials
Last synced: 5 months ago
JSON representation
Post Quantum Decentralized Identifiers for Json Web Keys
- Host: GitHub
- URL: https://github.com/transmute-industries/did-jwk-pqc
- Owner: transmute-industries
- License: apache-2.0
- Created: 2022-10-22T13:16:35.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-10-22T16:37:33.000Z (over 2 years ago)
- Last Synced: 2024-05-21T11:44:07.760Z (11 months ago)
- Topics: did, jose, jwk, postquantum, verifiable-credentials
- Language: JavaScript
- Homepage: https://github.com/transmute-industries/did-jwk-pqc
- Size: 2.61 MB
- Stars: 3
- Watchers: 4
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# @transmute/did-jwk-pqc
[](https://github.com/transmute-industries/did-jwk-pqc/actions/workflows/ci.yml)





[](https://npmjs.org/package/@transmute/did-jwk-pqc)
#### [Questions? Contact Transmute](https://transmute.typeform.com/to/RshfIw?typeform-source=did-jwk-pqc)
#### 🚧 Warning Experimental 🔥
This project contains experimental and not yet adopted JOSE kty and alg values for post quantum keys and signatures.
See [DRAFT IETF COSE Post Quantum Signatures](https://datatracker.ietf.org/doc/draft-prorock-cose-post-quantum-signatures/).
## Use
### CLI
```
npm i -g @transmute/did-jwk-pqc@latest
did-jwk-pqc generate-key CRYDI5
```### Library
```
npm i @transmute/did-jwk-pqc@latest --save
``````js
const { DID, JWK, JWS } = require('@transmute/did-jwk-pqc')
const key = await JWK.generateKeyPair('CRYDI5')
```[See the tests for additional usage.](./src/sanity.spec.js)
## Development
```bash
npm i
npm t# to test the cli.
npm i -g .
```### CLI
### Generate Key
Create a private key
```
npm run did-jwk-pqc generate-key CRYDI5 --silent > ./cli-examples/CRYDI5.jwk.json
npm run did-jwk-pqc generate-key FALCON512 --silent > ./cli-examples/FALCON512.jwk.json
npm run did-jwk-pqc generate-key SPHINCS+-SHAKE-256s-robust --silent > ./cli-examples/SPHINCS.jwk.json
```### Create DID
Create a DID.
```
npm run did-jwk-pqc create ./cli-examples/CRYDI5.jwk.json --silent > ./cli-examples/CRYDI5.id.json
npm run did-jwk-pqc create ./cli-examples/FALCON512.jwk.json --silent > ./cli-examples/FALCON512.id.json
npm run did-jwk-pqc create ./cli-examples/SPHINCS.jwk.json --silent > ./cli-examples/SPHINCS.id.json
```### Resolve DID
Resolve a DID
```
npm run did-jwk-pqc resolve `cat ./cli-examples/CRYDI5.id.json | jq '.id'` --silent > ./cli-examples/CRYDI5.resolution.json
npm run did-jwk-pqc resolve `cat ./cli-examples/FALCON512.id.json | jq '.id'` --silent > ./cli-examples/FALCON512.resolution.json
npm run did-jwk-pqc resolve `cat ./cli-examples/SPHINCS.id.json | jq '.id'` --silent > ./cli-examples/SPHINCS.resolution.json
```### Dereference DID
Dereference a DID.
```
npm run did-jwk-pqc dereference `cat ./cli-examples/CRYDI5.id.json | jq '.id'`#0 --silent > ./cli-examples/CRYDI5.dereference.json
npm run did-jwk-pqc dereference `cat ./cli-examples/FALCON512.id.json | jq '.id'`#0 --silent > ./cli-examples/FALCON512.dereference.json
npm run did-jwk-pqc dereference `cat ./cli-examples/SPHINCS.id.json | jq '.id'`#0 --silent > ./cli-examples/SPHINCS.dereference.json
```### Sign
Sign as a DID
```
npm run did-jwk-pqc sign ./cli-examples/CRYDI5.jwk.json ./cli-examples/message.json --silent > ./cli-examples/CRYDI5.message.signed.json
npm run did-jwk-pqc sign ./cli-examples/FALCON512.jwk.json ./cli-examples/message.json --silent > ./cli-examples/FALCON512.message.signed.json
npm run did-jwk-pqc sign ./cli-examples/SPHINCS.jwk.json ./cli-examples/message.json --silent > ./cli-examples/SPHINCS.message.signed.json
```### Verify
Verify with a DID
```
npm run did-jwk-pqc verify ./cli-examples/CRYDI5.message.signed.json --silent > ./cli-examples/CRYDI5.message.verified.json
npm run did-jwk-pqc verify ./cli-examples/FALCON512.message.signed.json --silent > ./cli-examples/FALCON512.message.verified.json
npm run did-jwk-pqc verify ./cli-examples/SPHINCS.message.signed.json --silent > ./cli-examples/SPHINCS.message.verified.json
```Verify and decode
```
npm run did-jwk-pqc verify ./cli-examples/CRYDI5.message.signed.json --silent -- --decode
npm run did-jwk-pqc verify ./cli-examples/FALCON512.message.signed.json --silent -- --decode
npm run did-jwk-pqc verify ./cli-examples/SPHINCS.message.signed.json --silent -- --decode
```### Create Cute DID
Create a cute DID.
```
npm run did-jwk-pqc cute ./cli-examples/CRYDI5.jwk.json --silent
# 🐍🌱🦉
```