Skip to content

transmute-industries/did-jwk-pqc

Repository files navigation

@transmute/did-jwk-pqc

CI Branches Functions Lines Statements Jest coverage NPM

🚧 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.

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
const { DID, JWK, JWS } = require('@transmute/did-jwk-pqc')
const key = await JWK.generateKeyPair('CRYDI5')

See the tests for additional usage.

Development

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
# 🐍🌱🦉