Skip to main content
Skip table of contents

EdDSA Keys and Signatures

The Edwards-curve Digital Signature Algorithm (EdDSA) scheme uses a variant of the Schnorr signature based on twisted Edwards curves. EdDSA is designed to be faster than existing digital signature schemes without sacrificing security. For more information, refer to RFC 8032: Edwards-Curve Digital Signature Algorithm (EdDSA).

EJBCA supports EdDSA signature keys and you can create a Certificate Authority (CA) using EdDSA keys both using the EJBCA Admin UI and the CLI (bin/ejbca.sh ca init). For more information, see Managing CAs.

The following provides information on EdDSA Keys and Signatures.

Generated Keys and Certificates

When generating a CA in EJBCA, up to three keys and certificates are generated:

  • A CA signing keypair and certificate
  • An encryption keypair, used for encrypting key recovery information
  • An OCSP signer keypair and certificate

When using EdDSA keys, the CA signing keypair and the OCSP signer keypair will be the EdDSA keytype you select when creating the CA. The CA signing and OCSP signing certificate will be signed using your selected signature algorithm. The encryption keypair will always be RSA, using 1024 or 2048 bit key length. It uses the key length set in the CA UI or 2048 bit by default using the CLI.

Using EdDSA with an HSM

ENTERPRISE

HSM support for EdDSA is fairly new. PKCS#11 did not standardize support for EdDSA until PKCS#11v3, while most HSMs still (October 2020) are still on PKCS#11v2.40. Many HSMs however support EdDSA, extending PKCS#11v2 with EdDSA support similar to PKCS#11v3 (with various differences). EJBCA supports EdDSA on HSMs using the P11-NG PKCS#11 provider. The implementation can differ between different HSMs, and not all HSMs are necessarily supported by EJBCA.

  • The keyEncryptKey cannot be EdDSA, but should be an RSA key. An HSM must therefore support both EdDSA and RSA keys.
  • Most HSMs (and all tested HSMs) only support Ed25519 and not Ed448 yet.

EdDSA Algorithms

EJBCA supports the following EdDSA algorithms, also supported by BouncyCastle.

EdDSA keysEdDSA signature algorithm

Ed25519

Ed25519

Ed448Ed448

Creating Client Certificates

You can also issue normal requests for client certificates using EdDSA keys.

All certificates signed by an EdDSA CA will naturally use EdDSA signatures, regardless of the client keys are RSA, ECDSA, or EdDSA.

When batch generating client keys using the CLI command bin/ejbca.sh batch, you configure the type of client keys that will be generated in the file conf/batchtool.properties. The possible parameters are described in the properties file.

Example CSR Generation

To generate a valid sample CSR for your clients, OpenSSL can be used.

BASH
openssl genpkey -algorithm ED25519 -out ed25519.key.pem
openssl req -new -key ed25519.key.pem -out ed25519.csr.pem
openssl req -in ed25519.csr.pem -text
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.