GnuPG implementa OpenPGP para firmar y cifrar archivos y correo electrónico, para la firma de paquetes en muchas distribuciones Linux y para la firma de commits de git. Los datos de esta página se comprobaron con el paquete de Alpine 3.24.2, GnuPG 2.4.9 con libgcrypt 1.12.2. gpg --quick-gen-key con solo un ID de usuario crea una clave principal Ed25519 para firma y certificación más una subclave de cifrado Curve25519 (cv25519), ambas como claves de versión 4, y la clave principal caduca a los 1095 días —tres años— salvo que se indique una caducidad. Inspecciona claves y firmas con el inspector de OpenPGP.
Se pueden crear claves ECDSA en P-256, P-384, P-521, secp256k1 y las tres curvas Brainpool r1; nistp224 falla con «Unknown elliptic curve». El paquete de firma lleva r y s como dos MPI de OpenPGP, ni DER ni r‖s de ancho fijo. Las firmas P-256 usan SHA-256 por defecto; pedir SHA-256 con una clave P-384 falla con «signing failed: Invalid length», mientras que SHA-512 con una clave P-256 se acepta.
Los nonces son deterministas: con el reloj congelado (--faked-system-time), dos firmas de un mismo archivo fueron idénticas byte a byte, y r coincidió con una implementación independiente de RFC 6979, así que firmar dos veces los mismos datos no reutiliza un nonce de forma peligrosa. s no se normaliza, y una firma con s sustituido por n − s se verificó como correcta, algo relevante allí donde se espera que las firmas sean únicas.
Las firmas Ed25519 usan el formato EdDSA heredado (algoritmo 22): R y S son MPI, y lo que firma Ed25519 es el resumen SHA-512 del archivo y de los campos de la firma incluidos en el hash, no el archivo en sí. Rellenados por la izquierda a 32 bytes cada uno, R‖S se verificó con OpenSSL contra ese resumen y falló contra el archivo: verificar firmas de gpg con una biblioteca Ed25519 de uso general exige calcular primero el resumen OpenPGP. Las claves Ed448 se crean como paquetes de clave de versión 5, el formato del borrador LibrePGP que sigue GnuPG, mientras que la clave predeterminada y las claves ECDSA y Ed25519 comprobadas eran todas de versión 4; asegúrate de que la otra parte lea la versión 5 antes de elegir Ed448. Esta versión no tiene ningún algoritmo poscuántico: la lista de algoritmos de clave pública es RSA, ELG, DSA, ECDH, ECDSA y EDDSA, y ky768_cv25519 se rechaza como curva desconocida.
En scripts, lee la salida legible por máquina de --status-fd en lugar del texto: una firma válida dio GOODSIG y VALIDSIG con código de salida 0, una firma sobre otros datos, BADSIG con código de salida 1, y un paquete truncado, NODATA con código de salida 2. gpg --export-ssh-key con una huella digital y ! escribe una línea de clave pública OpenSSH para claves ECDSA y Ed25519, mientras que --export y --export-secret-keys escriben paquetes OpenPGP.