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.
npm i -g @transmute/did-jwk-pqc@latest
did-jwk-pqc generate-key CRYDI5
npm i @transmute/did-jwk-pqc@latest --save
const { DID, JWK, JWS } = require('@transmute/did-jwk-pqc')
const key = await JWK.generateKeyPair('CRYDI5')
See the tests for additional usage.
npm i
npm t
# to test the cli.
npm i -g .
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 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 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 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 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 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 a cute DID.
npm run did-jwk-pqc cute ./cli-examples/CRYDI5.jwk.json --silent
# 🐍🌱🦉