agent: Fix import of OpenPGP EdDSA keys.
authorWerner Koch <wk@gnupg.org>
Tue, 2 Sep 2014 09:22:07 +0000 (11:22 +0200)
committerWerner Koch <wk@gnupg.org>
Tue, 2 Sep 2014 09:22:07 +0000 (11:22 +0200)
commitafe85582ddc2ebc285728bf6417f8929fd0b3281
tree856a9d8a9f7606742f1db3b8938e7d14df66b86e
parent4054d86abcb7ad953ed9e988b1765cb9266faefd
agent: Fix import of OpenPGP EdDSA keys.

* agent/cvt-openpgp.c (get_keygrip): Special case EdDSA.
(convert_secret_key): Ditto.
(convert_transfer_key): Ditto.
(apply_protection): Handle opaque MPIs.

(do_unprotect): Check FLAG_OPAQUE instead of FLAG_USER1 before
unpacking an opaque mpi.
--

The key transfer protocol between gpg and gpg-agent uses gcrypt
algorithm numbers which merge all ECC algorithms into one.  Thus it is
not possible to use the algorithm number to determine the EdDSA
algorithm.  We need to known that because Libgcrypt requires the
"eddsa" flag with the curve "Ed25519" to actually use the Ed25519
signature specification.

The last fix is for correctness; the first case won't be used anyway.
agent/cvt-openpgp.c