Skip to main content
Version: 0.1.25

X448

Curve448 key agreement (RFC 7748). Header: pkc/x448/noxtls_x448.h.

Algorithm overview

X448 is the higher-security sibling of X25519 for elliptic-curve Diffie-Hellman key agreement. It works similarly (public key exchange + shared secret derivation), but on Curve448 for a larger security margin.

Pros and cons

Pros

  • Higher security margin than X25519 (roughly ~224-bit class).
  • Strong choice for long-lived systems with conservative cryptographic policy.
  • Also defined in RFC 7748 with straightforward API model.

Cons

  • Slower than X25519 and uses larger keys.
  • Less broadly deployed/interoperable in common protocol stacks.
  • Still key-agreement only; authentication and KDF are required around it.

When to use

  • Use when policy requires stronger-than-X25519 margins.
  • Useful for high-assurance environments where performance is secondary.
  • For broad interoperability, X25519 is usually the first choice.

Constants

  • NOXTLS_X448_KEY_SIZE = 56

API

noxtls_x448_clamp_scalar

void noxtls_x448_clamp_scalar(uint8_t k[56]);

Clamp X448 private scalar in place.

noxtls_x448_public_key

noxtls_return_t noxtls_x448_public_key(const uint8_t private_key[56], uint8_t public_key[56]);

Derive public key from private key.

noxtls_x448_shared_secret

noxtls_return_t noxtls_x448_shared_secret(const uint8_t private_key[56],
const uint8_t peer_public_key[56],
uint8_t shared_secret[56]);

Compute shared secret with peer public key.

noxtls_x448_generate_key

noxtls_return_t noxtls_x448_generate_key(uint8_t private_key[56], uint8_t public_key[56]);

Generate X448 private/public key pair.