diff options
author | Werner Koch <wk@gnupg.org> | 2018-01-22 16:23:02 +0100 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2018-01-22 16:50:21 +0100 |
commit | da3015e3c05030fe709c8f922486e73d06d1d16a (patch) | |
tree | da4271c073ce4051ee7ae7a1b07af89d0d354425 /g10/cipher-aead.c | |
parent | gpg: Refactor function encrypt_seskey. (diff) | |
download | gnupg2-da3015e3c05030fe709c8f922486e73d06d1d16a.tar.xz gnupg2-da3015e3c05030fe709c8f922486e73d06d1d16a.zip |
gpg: Unify AEAD parameter retrieval.
* g10/pkclist.c (select_aead_from_pklist): Return the AEAD_algo.
* g10/encrypt.c (use_aead): Return the AEAD algo.
(encrypt_simple): Adjust for this change.
(encrypt_crypt): Ditto.
(encrypt_filter): Ditto.
* g10/sign.c (sign_symencrypt_file): Ditto.
* g10/misc.c (MY_GCRY_CIPHER_MODE_EAX): New.
(openpgp_aead_algo_info): New.
* g10/cipher-aead.c (MY_GCRY_CIPHER_MODE_EAX): Remove.
(write_header): Use new fucntion.
* g10/decrypt-data.c (MY_GCRY_CIPHER_MODE_EAX): Remove.
(decrypt_data): Use new function. Also allow for chunkbytes other
than 10.
--
Note that other chunk bytes than 10 and in particular 0 (64 byte
chunks) have not yet been tested.
Signed-off-by: Werner Koch <wk@gnupg.org>
Diffstat (limited to 'g10/cipher-aead.c')
-rw-r--r-- | g10/cipher-aead.c | 24 |
1 files changed, 3 insertions, 21 deletions
diff --git a/g10/cipher-aead.c b/g10/cipher-aead.c index 1d7263419..637bd71a7 100644 --- a/g10/cipher-aead.c +++ b/g10/cipher-aead.c @@ -33,10 +33,6 @@ #include "options.h" #include "main.h" -/* FIXME: Libgcrypt 1.9 will support EAX. Until we kame this a - * requirement we hardwire the enum used for EAX. */ -#define MY_GCRY_CIPHER_MODE_EAX 14 - /* The size of the buffer we allocate to encrypt the data. This must * be a multiple of the OCB blocksize (16 byte). */ @@ -149,23 +145,9 @@ write_header (cipher_filter_context_t *cfx, iobuf_t a) if (blocksize != 16 ) log_fatal ("unsupported blocksize %u for AEAD\n", blocksize); - switch (cfx->dek->use_aead) - { - case AEAD_ALGO_OCB: - ciphermode = GCRY_CIPHER_MODE_OCB; - startivlen = 15; - break; - - case AEAD_ALGO_EAX: - ciphermode = MY_GCRY_CIPHER_MODE_EAX; - startivlen = 16; - break; - - default: - log_error ("unsupported AEAD algo %d\n", cfx->dek->use_aead); - err = gpg_error (GPG_ERR_NOT_IMPLEMENTED); - goto leave; - } + err = openpgp_aead_algo_info (cfx->dek->use_aead, &ciphermode, &startivlen); + if (err) + goto leave; cfx->chunkbyte = 10; cfx->chunksize = (uint64_t)1 << (cfx->chunkbyte + 6); |