Skip to main content
Version: 0.1.25

Ed25519

Ed25519 digital signatures (RFC 8032). Header: pkc/ed25519/noxtls_ed25519.h.

Algorithm overview

Ed25519 is an EdDSA signature scheme over Curve25519. It is designed for high speed, deterministic signing, and strong security properties with compact keys/signatures.

Pros and cons

Pros

  • Very fast verification/signing with small keys and signatures.
  • Deterministic signing avoids many nonce-generation failure classes.
  • Widely adopted across modern protocols and tooling.

Cons

  • Signature algorithm only (not key agreement).
  • Compatibility with legacy RSA/ECDSA-only systems can be limited.
  • Requires careful domain separation/protocol framing, like all signature schemes.

When to use

  • Strong default for modern software signing and identity/authentication.
  • Good choice when performance and compact signatures matter.
  • Prefer when interoperability targets support Ed25519 natively.

Constants

  • NOXTLS_ED25519_PRIVATE_KEY_SIZE = 32
  • NOXTLS_ED25519_PUBLIC_KEY_SIZE = 32
  • NOXTLS_ED25519_SIGNATURE_SIZE = 64

API

noxtls_ed25519_generate_key

noxtls_return_t noxtls_ed25519_generate_key(uint8_t private_key[32], uint8_t public_key[32]);

Generate private/public key pair.

noxtls_ed25519_public_key

noxtls_return_t noxtls_ed25519_public_key(const uint8_t private_key[32], uint8_t public_key[32]);

Derive public key from private key seed.

noxtls_ed25519_sign

noxtls_return_t noxtls_ed25519_sign(const uint8_t private_key[32],
const uint8_t *message,
uint32_t message_len,
uint8_t signature[64]);

Sign message with Ed25519.

noxtls_ed25519_verify

noxtls_return_t noxtls_ed25519_verify(const uint8_t public_key[32],
const uint8_t *message,
uint32_t message_len,
const uint8_t signature[64]);

Verify Ed25519 signature.