aboutsummaryrefslogtreecommitdiffstats
path: root/g10/parse-packet.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/parse-packet.c')
-rw-r--r--g10/parse-packet.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/g10/parse-packet.c b/g10/parse-packet.c
index 7e1c8f959..2f4f003ad 100644
--- a/g10/parse-packet.c
+++ b/g10/parse-packet.c
@@ -3525,7 +3525,22 @@ parse_encrypted (IOBUF inp, int pkttype, unsigned long pktlen,
version = iobuf_get_noeof (inp);
if (orig_pktlen)
pktlen--;
- if (version != 1)
+ if (version == 1)
+ ed->mdc_method = DIGEST_ALGO_SHA1;
+ else if (version == 2)
+ {
+ ed->mdc_method = 0xff; /* SEIPDv2 */
+ ed->cipher_algo = iobuf_get_noeof (inp);
+ if (orig_pktlen)
+ pktlen--;
+ ed->aead_algo = iobuf_get_noeof (inp);
+ if (orig_pktlen)
+ pktlen--;
+ ed->chunkbyte = iobuf_get_noeof (inp);
+ if (orig_pktlen)
+ pktlen--;
+ }
+ else
{
log_error ("encrypted_mdc packet with unknown version %d\n",
version);
@@ -3535,7 +3550,6 @@ parse_encrypted (IOBUF inp, int pkttype, unsigned long pktlen,
rc = gpg_error (GPG_ERR_INV_PACKET);
goto leave;
}
- ed->mdc_method = DIGEST_ALGO_SHA1;
}
else
ed->mdc_method = 0;