@transmute/did-jwk-pqc

October 22, 2022 ยท View on GitHub

CI Branches Functions Lines Statements Jest coverage NPM

Questions? Contact Transmute

๐Ÿšง 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
# ๐Ÿ๐ŸŒฑ๐Ÿฆ‰