A chave privada é uma semente (32 bytes no Ed25519, 57 no Ed448). O hash dela produz um escalar secreto s e um prefixo; ao assinar, calcula-se o nonce r = H(prefix ‖ M), R = r·B, o desafio k = H(R ‖ A ‖ M) e S = (r + k·s) mod L, e a assinatura é R ‖ S (64 bytes no Ed25519, 114 no Ed448; RFC 8032 §5.1.6 e §5.2.6). O nonce é função da chave e da mensagem, então o EdDSA não precisa de aleatoriedade para assinar e não pode repetir um nonce para mensagens diferentes.
O PureEdDSA (Ed25519, Ed448) assina a própria mensagem e a lê duas vezes; o HashEdDSA (Ed25519ph, Ed448ph) assina, em vez dela, um digest SHA-512 ou SHAKE256; o Ed25519ctx e o Ed448 aceitam uma string de contexto de até 255 bytes para separação de domínio. O FIPS 186-5 §7 aprova o EdDSA e o HashEdDSA (§7.8).
A verificação é menos uniforme que a assinatura. A RFC 8032 §5.1.7 exige que S seja menor que a ordem do grupo L e permite tanto a equação com cofator [8][S]B = [8]R + [8][k]A' quanto a sem cofator, e as bibliotecas divergem em pontos de ordem pequena e codificações fora da forma canônica. Por isso, os sistemas de consenso fixam um único conjunto de regras, por exemplo a ZIP 215 do Zcash.
Identificadores: OIDs X.509 1.3.101.112 (Ed25519) e 1.3.101.113 (Ed448), da RFC 8410; valores alg do JOSE Ed25519 e Ed448, da RFC 9864, que torna obsoleto o polimórfico EdDSA da RFC 8037; COSE −19 e −53 (e o antigo −8); TLS 1.3 ed25519 (0x0807) e ed448 (0x0808); SSH ssh-ed25519. O NIST IR 8547 (rascunho) propõe proibir o EdDSA depois de 2035.