Sou usuário do Fedora, mas me ouça os fãs do Ubuntu. Eu estava lutando com o mesmo problema, então aqui está minha solução que funciona para o Fedora 25 com o GnuPG 2.1.13, e certamente no Ubuntu. É uma modificação da resposta de Thomas. Defina o tipo de chave e o tipo de subchave da seguinte forma (estou usando nistp256, mas use qualquer curva que seu sistema suporte):
Tipo de chave: ECDSA
Curva-chave: nistp256
Comprimento-chave: 256
Tipo de subchave: ECDH
Curva de subchave: nistp256
Comprimento da subchave: 256
Se você usar o ECC como tipo de chave e tipo de subchave, o gpg gerará erros como este, e a chave pública será ECDH, não ECDSA.
gpg: erro ao ler o resto do pacote: argumento inválido
gpg: erro lendo o restante do pacote: argumento inválido
gpg: não é possível codificar um MD de 256 bits em um quadro de 72 bits, algo = 8
gpg: não é possível codificar um MD de 256 bits em um frame de 72 bits, algo = 8
Além disso, observe que no GnuPG v2.1 e posterior, as opções % pubring e % secring são ignoradas ( link ) então não use-os.
E, finalmente, verifique isso link é uma boa leitura sobre quais curvas para usar. Na verdade, para mim, v2.1.13 está listando apenas o seguinte, durante o comando manual:
$ gpg2 --expert --full-gen-key
...
(3) NIST P-256
(4) NIST P-384
(5) NIST P-521