DID Controller Keypair

Creating a keypair used to control a DID method
Create a new DID controller keypair using openssl. In this example, we use Ed25519, but other algorithms are also supported (see specification).
Make sure you have openssl & GNU coreutils installed and avalible on command line (e.g. brew install coreutils on macOS)
openssl genpkey -algorithm ed25519 -outform DER >privkey
openssl pkey -in privkey -pubout -out pubkey -inform DER -outform DER
This creates two files, pubkey and privkey.
Depending on the method, the public key is encoded in either
  • Base64 URL (base64url)
  • Base58 (base58)


How do I install base58 app (on macOS).

There are two ways to install it. If one app doesn't work, try the other one.
# using howbrew
brew install base58
# using cargo (requires rust tooling to be installed)
cargo install bs58-cli
## hint latter works best by symlinking: ln -s source_path target_in_path/base58

How to install & use openssl 3 (on macOS).

Some newer features are only available in the latest version of openssl, version 3. To install it
brew install openssl@3
It is not automatically added to the path as macOS uses LibreSSL. Therefore you can use the absolute path.