blob: 18f1bdff3c5ab7b5f951a342a5863446dc479bb4 [file] [log] [blame]
simon7d4386c2022-10-26 17:47:59 -04001#!/bin/sh
2
3set -e
4
5if ! command -v dotenv; then
6 printf 'Missing "dotenv". Please run "npm install"\n' >&2 && exit 1
7fi
8
9if [ "$(dotenv -p PRIVATE_KEY)" ] && [ "$(dotenv -p PUBLIC_KEY)" ]; then
10 printf 'Public and private keys are already defined. Exiting...\n' >&2 && exit 0
11fi
12
13# Generate PEM-encoded PKCS#8 private key and PEM-encoded SPKI public key
14
15if command -v openssl; then
16 # -algorithm RSA -pkeyopt rsa_keygen_bits:2048
17 # ES256: -algorithm EC -pkeyopt ec_paramgen_curve:P-256
18 gen_pkcs8() { openssl genpkey -algorithm ed25519; }
19 pkcs8_to_spki() { openssl pkey -pubout; }
20else
21 printf 'No tools known\n' >&2 && exit 1
22fi
23
24private_key=$(gen_pkcs8)
25public_key=$(echo "${private_key}" | pkcs8_to_spki)
26
27echo "PRIVATE_KEY=\"${private_key}\"" >> .env
28echo "PUBLIC_KEY=\"${public_key}\"" >> .env