Decline to generate v5 keys

gpg 2.4.x will generate "v5" keys (from the LibrePGP spec) in at least the following circumstances:

  • gpg --quick-gen-key "$USERID" ed25519/v5
  • gpg --quick-gen-key "$USERID" ed448
  • gpg --quick-add-key "$FPR" cv25519/v5
  • gpg --quick-add-key "$FPR" cv448
  • printf 'Key-Type: eddsa\nKey-Curve: ed448\nName-Real: %s\n" "$USERID" | gpg --batch --generate-key

Interestingly, the final approach above (called "Unattended Key Generation" in gpg(1)) accepts but ignores an undocumented Key-Version option, in read_parameter_file in g10/keygen.c:

        if ((keywords[i].key == pVERSION
             || keywords[i].key == pSUBVERSION))
          ; /* Ignore version.  */

Note that the ed448 and cv448 variants are not specified in any OpenPGP documents -- GnuPG forces them into v5 by default.

i think FreePG should decline to generate v5 key material, even if the user appears to be asking for it. It should treat a request for v5 keys in the same way it treats a request for a key with algorithm fubar (it aborts the key generation process and indicates that the algorithm is not supported).