gpg: Add option and preference framework for AEAD.
authorWerner Koch <wk@gnupg.org>
Wed, 10 Jan 2018 10:42:38 +0000 (11:42 +0100)
committerWerner Koch <wk@gnupg.org>
Wed, 10 Jan 2018 10:51:03 +0000 (11:51 +0100)
commit8217cd49364b9f81b390f7ca6a608dd946f93efc
treecd6d10a7d9d9db4af692c9d67ec359cabff5a6b9
parent945381c4c26ffa5a9b1b0781294d0440e55d2ade
gpg: Add option and preference framework for AEAD.

* common/openpgpdefs.h (aead_algo_t): New.
(SIGSUBPKT_PREF_AEAD): New.
* g10/gpg.c (oAEADAlgo, oPersonalAEADPreferences): New.
(opts): New options --aead-algo and --personal-aead-preferences.
(set_compliance_option): Clar aead algo.
(main): Parse and check the new options
* g10/options.h (struct opt): Add fields def_aead_algo and
personal_aead_prefs.
* g10/packet.h (PREFTYPE_AEAD): New enum value.
(PKT_user_id): Add field flags.aead.
(PKT_public_key): Add field flags.aead.
* g10/pkclist.c (select_algo_from_prefs): Support PREFTYPE_AEAD.
* g10/getkey.c (fixup_uidnode): Set AEAD flag.
(merge_selfsigs): Ditto.
* g10/kbnode.c (dump_kbnode): Show aead flag.
* g10/keyedit.c (show_prefs): Ditto.
(show_key_with_all_names_colon): Ditto.
* g10/keygen.c (aead_presf, n_aead_prefs): New vars.
(set_one_pref): Suppport PREFTYPE_AEAD.
(keygen_set_std_prefs): Parse AEAD preferences.
(keygen_get_std_prefs): Ditto.
(add_feature_aead): New.
(keygen_upd_std_prefs): Call that and build AEAD pref  packet.
* g10/main.h (DEFAULT_AEAD_ALGO): New const.
* g10/misc.c (openpgp_aead_test_algo): New.
(openpgp_aead_algo_name): New.
(string_to_aead_algo): New.
(default_aead_algo): New.
--

This is only used in --rfc4880bis mode and not really tested.

Signed-off-by: Werner Koch <wk@gnupg.org>
common/openpgpdefs.h
g10/getkey.c
g10/gpg.c
g10/kbnode.c
g10/keyedit.c
g10/keygen.c
g10/main.h
g10/misc.c
g10/options.h
g10/packet.h
g10/pkclist.c