diff options
author | NIIBE Yutaka <gniibe@fsij.org> | 2019-07-18 03:59:29 +0200 |
---|---|---|
committer | NIIBE Yutaka <gniibe@fsij.org> | 2019-07-18 04:02:34 +0200 |
commit | 44be675b759d27bac310c2de8bae1b7882a26b65 (patch) | |
tree | 5713852e465da439d445547b41ac987e99d9ef56 /g10 | |
parent | doc: Fix description of the field 11. (diff) | |
download | gnupg2-44be675b759d27bac310c2de8bae1b7882a26b65.tar.xz gnupg2-44be675b759d27bac310c2de8bae1b7882a26b65.zip |
gpg: More check for symmetric key encryption.
* g10/dek.h (DEK): Use debugger friendly type of unsigned int.
* g10/mainproc.c (symkey_decrypt_seskey): Add another check.
Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
Diffstat (limited to 'g10')
-rw-r--r-- | g10/dek.h | 6 | ||||
-rw-r--r-- | g10/mainproc.c | 3 |
2 files changed, 5 insertions, 4 deletions
@@ -30,16 +30,16 @@ typedef struct /* Whether we've already printed information about this key. This * is currently only used in decrypt_data() and only if we are in * verbose mode. */ - int algo_info_printed : 1; + unsigned int algo_info_printed : 1; /* AEAD shall be used. The value is the AEAD algo. */ int use_aead : 4; /* MDC shall be used. */ - int use_mdc : 1; + unsigned int use_mdc : 1; /* This key was read from a SK-ESK packet (see proc_symkey_enc). */ - int symmetric : 1; + unsigned int symmetric : 1; /* This is the largest used keylen (256 bit). */ byte key[32]; diff --git a/g10/mainproc.c b/g10/mainproc.c index 8a9005c21..e98d1f89c 100644 --- a/g10/mainproc.c +++ b/g10/mainproc.c @@ -325,7 +325,8 @@ symkey_decrypt_seskey (DEK *dek, byte *seskey, size_t slen) * the gnupg < 2.2 bug compatible case which would terminate the * process on GPG_ERR_CIPHER_ALGO. Note that with AEAD (above) * we will have a reliable test here. */ - if (openpgp_cipher_test_algo (seskey[0])) + if (openpgp_cipher_test_algo (seskey[0]) + || openpgp_cipher_get_algo_keylen (seskey[0]) != slen - 1) { err = gpg_error (GPG_ERR_CHECKSUM); goto leave; |