/pki

Nibyou Public Key Server

Primary LanguageJavaScriptGNU Affero General Public License v3.0AGPL-3.0

Nibyou Logo

Nibyou Public Key Infrastructure

This is a NodeJS/Cloudflare Worker implementation of an RSA-Public Key Service.

Keys have to be sent along with a JSON Web Token authenticating the user.

Getting keys just requires a users UUID, no authentication is needed.

API Documentation

GET /getKey/:uuid

Returns the public key of the user with the given UUID.
Returns a 404 if the user does not exist.

POST /setKey

Parameters (body):

  • token: JSON Web Token authenticating the user
  • key: public key of the user

Returns the payload if the key was successfully set.
Returns a 403 if the user already has a key.

Explanation of the parameter acquisition:

  • token: acquired from the nibyou/auth API
  • key: public part of a generated RSA-PSS keypair (in SPKI format):
const {publicKey, privateKey} = await crypto.subtle.generateKey({
    name: 'RSA-PSS',
    modulusLength: 2048,
    publicExponent: new Uint8Array([0x01, 0x00, 0x01]),
    hash:'SHA-256',
},true,["verify","sign"])

const exportPuK = btoa(await crypto.subtle.exportKey("spki",publicKey))