mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
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>
This commit is contained in:
parent
0131d4369a
commit
da3015e3c0
8 changed files with 63 additions and 66 deletions
33
g10/misc.c
33
g10/misc.c
|
@ -70,6 +70,11 @@
|
|||
#include "../common/zb32.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
|
||||
|
||||
|
||||
#ifdef ENABLE_SELINUX_HACKS
|
||||
/* A object and a global variable to keep track of files marked as
|
||||
secured. */
|
||||
|
@ -616,6 +621,34 @@ openpgp_aead_algo_name (aead_algo_t algo)
|
|||
}
|
||||
|
||||
|
||||
/* Return information for the AEAD algorithm ALGO. The corresponding
|
||||
* Libgcrypt ciphermode is stored at R_MODE and the required number of
|
||||
* octets for the nonce at R_NONCELEN. On error and error code is
|
||||
* returned. Note that the taglen is always 128 bits. */
|
||||
gpg_error_t
|
||||
openpgp_aead_algo_info (aead_algo_t algo, enum gcry_cipher_modes *r_mode,
|
||||
unsigned int *r_noncelen)
|
||||
{
|
||||
switch (algo)
|
||||
{
|
||||
case AEAD_ALGO_OCB:
|
||||
*r_mode = GCRY_CIPHER_MODE_OCB;
|
||||
*r_noncelen = 15;
|
||||
break;
|
||||
|
||||
case AEAD_ALGO_EAX:
|
||||
*r_mode = MY_GCRY_CIPHER_MODE_EAX;
|
||||
*r_noncelen = 16;
|
||||
break;
|
||||
|
||||
default:
|
||||
log_error ("unsupported AEAD algo %d\n", algo);
|
||||
return gpg_error (GPG_ERR_INV_CIPHER_MODE);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* Return 0 if ALGO is a supported OpenPGP public key algorithm. */
|
||||
int
|
||||
openpgp_pk_test_algo (pubkey_algo_t algo)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue