From f3ef8b0dcaede1c85da0dff8eeceda6a994f0b28 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 23 Jan 2018 19:08:16 +0100 Subject: gpg: New option --chunk-size. * g10/gpg.c (opts): New option --chunk-size. (oChunkSize): New const. (build_list_aead_test_algo, build_list_aead_algo_name): New. (my_strusage): List AEAD algos. (main): Implement --chunk-size.. * g10/options.h (struct opt): Add field 'chunk_size'. (DBG_IPC): Remove duplicated macro. * g10/main.h (DEFAULT_AEAD_ALGO): Depend on Libgcrypt version. * g10/misc.c (openpgp_aead_test_algo): Ditto. * g10/cipher-aead.c: Silence if not in debug mode. * g10/decrypt-data.c: Ditto. -- And that new option immediatley revealed bugs in our chunking code :-(. --- g10/misc.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'g10/misc.c') diff --git a/g10/misc.c b/g10/misc.c index 36d3bdc36..8c54793ed 100644 --- a/g10/misc.c +++ b/g10/misc.c @@ -591,11 +591,23 @@ openpgp_cipher_algo_name (cipher_algo_t algo) gpg_error_t openpgp_aead_test_algo (aead_algo_t algo) { + /* FIXME: We currently have no easy way to test whether libgcrypt + * implements a mode. The only way we can do this is to open a + * cipher context with that mode and close it immediately. That is + * a bit costly. So we look at the libgcrypt version and assume + * nothing has been patched out. */ switch (algo) { case AEAD_ALGO_NONE: break; + case AEAD_ALGO_EAX: +#if GCRYPT_VERSION_NUMBER < 0x010900 + break; +#else + return 0; +#endif + case AEAD_ALGO_OCB: return 0; } -- cgit v1.2.3