O GnuPG implementa o OpenPGP para assinatura e criptografia de arquivos e e-mails, assinatura de pacotes em muitas distribuições Linux e assinatura de commits do git. Os fatos desta página foram verificados no pacote do Alpine 3.24.2, GnuPG 2.4.9 com libgcrypt 1.12.2. gpg --quick-gen-key só com um ID de usuário cria uma chave primária Ed25519 para assinatura e certificação, mais uma subchave de criptografia Curve25519 (cv25519), ambas como chaves da versão 4, e a chave primária expira após 1.095 dias — três anos — a menos que você informe outra expiração. Inspecione chaves e assinaturas com o inspetor de OpenPGP.
É possível criar chaves ECDSA na P-256, P-384, P-521, secp256k1 e nas três curvas Brainpool r1; nistp224 falha com “Unknown elliptic curve”. O pacote de assinatura traz r e s como dois MPIs do OpenPGP, nem DER nem r‖s de largura fixa. As assinaturas P-256 usam SHA-256 por padrão; pedir SHA-256 com uma chave P-384 falha com “signing failed: Invalid length”, enquanto SHA-512 com uma chave P-256 é aceito.
Os nonces são determinísticos: com o relógio congelado (--faked-system-time), duas assinaturas de um mesmo arquivo ficaram idênticas byte a byte, e o r coincidiu com uma implementação independente da RFC 6979; portanto, assinar os mesmos dados duas vezes não reutiliza um nonce de forma perigosa. O s não é normalizado, e uma assinatura com s substituído por n − s foi verificada como válida — algo relevante sempre que se espera que as assinaturas sejam únicas.
As assinaturas Ed25519 usam o formato EdDSA legado (algoritmo 22): R e S são MPIs, e o que o Ed25519 assina é o digest SHA-512 do arquivo e dos campos da assinatura incluídos no hash, não o próprio arquivo. Com R e S preenchidos à esquerda até 32 bytes cada, o R‖S foi verificado com o OpenSSL contra esse digest e falhou contra o arquivo — verificar assinaturas do gpg com uma biblioteca Ed25519 de uso geral exige calcular antes o digest OpenPGP. As chaves Ed448 são criadas como pacotes de chave da versão 5, o formato do rascunho LibrePGP que o GnuPG segue, enquanto as chaves padrão, ECDSA e Ed25519 testadas eram todas da versão 4; confirme que o outro lado lê a versão 5 antes de escolher Ed448. Esta versão não tem nenhum algoritmo pós-quântico: a lista de algoritmos de chave pública é RSA, ELG, DSA, ECDH, ECDSA e EDDSA, e ky768_cv25519 é rejeitado como curva desconhecida.
Em scripts, leia a saída legível por máquina de --status-fd em vez do texto: uma assinatura válida gerou GOODSIG e VALIDSIG com código de saída 0; uma assinatura sobre outros dados, BADSIG com código de saída 1; e um pacote truncado, NODATA com código de saída 2. gpg --export-ssh-key com uma impressão digital e ! grava uma linha de chave pública OpenSSH para chaves ECDSA e Ed25519, enquanto --export e --export-secret-keys gravam pacotes OpenPGP.