gpg: Factor common code out of the AEAD decryption function.
authorWerner Koch <wk@gnupg.org>
Tue, 27 Feb 2018 18:50:54 +0000 (19:50 +0100)
committerWerner Koch <wk@gnupg.org>
Tue, 27 Feb 2018 19:19:32 +0000 (20:19 +0100)
commitad989373f1a46139ed0fbc4d4a91069b78617ad9
tree65caeb2a5a2cb019efe02a8812cc8329e0f6f61f
parentb703ba725dadca8298a0c69365225f9a7ff60ae2
gpg: Factor common code out of the AEAD decryption function.

* g10/decrypt-data.c (aead_underflow): Factor reading and checking
code code out to ...
(fill_buffer, aead_checktag): new functions.
--

Here is a simple test script to check against a set of encrypted files
with naming convention like "symenc-aead-eax-c6-56.asc"

# ------------------------ >8 ------------------------
set -e
GPG=../g10/gpg
for file in "$@"; do
  echo "${file##*/}" | ( IFS=- read dummy1 dummy2 mode cbyte len rest
  len="${len%.*}"
  cbyte="${cbyte#c}"
  [ "$dummy1" != "symenc" -o "$dummy2" != "aead" ] && continue
  echo "checking mode=$mode chunkbyte=$cbyte length=$len"
  if ! $GPG --no-options --rfc4880bis --batch --passphrase "abc" \
             -d < $file >tmp.plain 2>/dev/null; then
      echo "Decryption failed for $file" >&2
      exit 2
  fi
  plainlen=$(wc -c <tmp.plain)
  if [ $plainlen -ne $len ]; then
      echo "Plaintext length mismatch for $file (want=$len have=$plainlen)" >&2
      exit 2
  fi

  )
done
echo "all files are okay" >&2
# ------------------------ 8< ------------------------

Signed-off-by: Werner Koch <wk@gnupg.org>
g10/decrypt-data.c