mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-22 10:19:57 +01:00
gpg: Support EAX if for latest Libgcrypt.
* g10/cipher-aead.c (MY_GCRY_CIPHER_MODE_EAX): New. (write_header): Use it. * g10/decrypt-data.c (MY_GCRY_CIPHER_MODE_EAX): New. (decrypt_data): Use it. * g10/misc.c (openpgp_aead_test_algo): Allow EAX. -- This allows the use of EAX when the latest Libgcrypt master is used. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
3f4ca85cb0
commit
7356d6ec50
@ -33,6 +33,11 @@
|
|||||||
#include "options.h"
|
#include "options.h"
|
||||||
#include "main.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
|
/* The size of the buffer we allocate to encrypt the data. This must
|
||||||
* be a multiple of the OCB blocksize (16 byte). */
|
* be a multiple of the OCB blocksize (16 byte). */
|
||||||
#define AEAD_ENC_BUFFER_SIZE (64*1024)
|
#define AEAD_ENC_BUFFER_SIZE (64*1024)
|
||||||
@ -151,6 +156,11 @@ write_header (cipher_filter_context_t *cfx, iobuf_t a)
|
|||||||
startivlen = 15;
|
startivlen = 15;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case AEAD_ALGO_EAX:
|
||||||
|
ciphermode = MY_GCRY_CIPHER_MODE_EAX;
|
||||||
|
startivlen = 16;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
log_error ("unsupported AEAD algo %d\n", cfx->dek->use_aead);
|
log_error ("unsupported AEAD algo %d\n", cfx->dek->use_aead);
|
||||||
err = gpg_error (GPG_ERR_NOT_IMPLEMENTED);
|
err = gpg_error (GPG_ERR_NOT_IMPLEMENTED);
|
||||||
|
@ -31,6 +31,10 @@
|
|||||||
#include "../common/status.h"
|
#include "../common/status.h"
|
||||||
#include "../common/compliance.h"
|
#include "../common/compliance.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
|
||||||
|
|
||||||
|
|
||||||
static int aead_decode_filter (void *opaque, int control, iobuf_t a,
|
static int aead_decode_filter (void *opaque, int control, iobuf_t a,
|
||||||
byte *buf, size_t *ret_len);
|
byte *buf, size_t *ret_len);
|
||||||
@ -278,9 +282,8 @@ decrypt_data (ctrl_t ctrl, void *procctx, PKT_encrypted *ed, DEK *dek)
|
|||||||
break;
|
break;
|
||||||
case AEAD_ALGO_EAX:
|
case AEAD_ALGO_EAX:
|
||||||
startivlen = 16;
|
startivlen = 16;
|
||||||
log_error ("unsupported AEAD algo %d\n", ed->aead_algo);
|
ciphermode = MY_GCRY_CIPHER_MODE_EAX;
|
||||||
rc = gpg_error (GPG_ERR_NOT_IMPLEMENTED);
|
break;
|
||||||
goto leave;
|
|
||||||
default:
|
default:
|
||||||
log_error ("unknown AEAD algo %d\n", ed->aead_algo);
|
log_error ("unknown AEAD algo %d\n", ed->aead_algo);
|
||||||
rc = gpg_error (GPG_ERR_INV_CIPHER_MODE);
|
rc = gpg_error (GPG_ERR_INV_CIPHER_MODE);
|
||||||
|
@ -591,7 +591,6 @@ openpgp_aead_test_algo (aead_algo_t algo)
|
|||||||
case AEAD_ALGO_NONE:
|
case AEAD_ALGO_NONE:
|
||||||
break;
|
break;
|
||||||
case AEAD_ALGO_EAX:
|
case AEAD_ALGO_EAX:
|
||||||
return gpg_error (GPG_ERR_NOT_SUPPORTED);
|
|
||||||
case AEAD_ALGO_OCB:
|
case AEAD_ALGO_OCB:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user