La generación de claves calcula el hash SHA-512 de una semilla de 32 bytes: la primera mitad, tras el ajuste (clamping), es el escalar secreto, y la segunda, el prefijo del nonce. La clave pública es la codificación little-endian de 32 bytes de la coordenada y de un punto, con el signo de x en el bit más alto, y una firma es R ‖ S, de 64 bytes. Las API no coinciden en qué significa «clave privada»: la semilla de 32 bytes (RFC 8032, y PKCS #8 según el RFC 8410) o 64 bytes de semilla seguidos de la clave pública (NaCl, libsodium, ed25519.PrivateKey de Go), una fuente frecuente de errores de conversión.
Identificadores: OID 1.3.101.112 sin parámetros de algoritmo (RFC 8410); en JOSE, kty OKP, crv Ed25519 (RFC 8037) y alg Ed25519 (RFC 9864, que sustituye al polimórfico EdDSA); en COSE, −19 (y el antiguo −8); en TLS 1.3, ed25519 (0x0807); en SSH, ssh-ed25519 (RFC 8709); claves nativas de OpenPGP v6 (RFC 9580). WebCrypto lo admite a partir de Firefox 129, Safari 17 y Chrome 137.
En un núcleo de un Apple M4 Max, OpenSSL 3.6.5 hace unas 59.800 firmas Ed25519 y 24.900 verificaciones por segundo. FIPS 186-5 aprueba Ed25519. Las bibliotecas difieren en los casos límite construidos por un adversario (puntos de orden pequeño, codificaciones que no están en forma canónica, comprobaciones con cofactor o sin cofactor), lo que solo importa cuando muchas partes deben coincidir en qué es válido.
Frente a ECDSA, no necesita aleatoriedad al firmar, no tiene variante high-S y usa fórmulas de suma completas. Su principal carencia es el hardware: el Secure Enclave de Apple y muchas tarjetas inteligentes y HSM solo ofrecen P-256, y por eso las llaves de acceso y las claves vinculadas al dispositivo son sobre todo ECDSA.