blob: 18f1bdff3c5ab7b5f951a342a5863446dc479bb4 [file] [log] [blame]
#!/bin/sh
set -e
if ! command -v dotenv; then
printf 'Missing "dotenv". Please run "npm install"\n' >&2 && exit 1
fi
if [ "$(dotenv -p PRIVATE_KEY)" ] && [ "$(dotenv -p PUBLIC_KEY)" ]; then
printf 'Public and private keys are already defined. Exiting...\n' >&2 && exit 0
fi
# Generate PEM-encoded PKCS#8 private key and PEM-encoded SPKI public key
if command -v openssl; then
# -algorithm RSA -pkeyopt rsa_keygen_bits:2048
# ES256: -algorithm EC -pkeyopt ec_paramgen_curve:P-256
gen_pkcs8() { openssl genpkey -algorithm ed25519; }
pkcs8_to_spki() { openssl pkey -pubout; }
else
printf 'No tools known\n' >&2 && exit 1
fi
private_key=$(gen_pkcs8)
public_key=$(echo "${private_key}" | pkcs8_to_spki)
echo "PRIVATE_KEY=\"${private_key}\"" >> .env
echo "PUBLIC_KEY=\"${public_key}\"" >> .env