diff options
Diffstat (limited to 'g10/parse-packet.c')
-rw-r--r-- | g10/parse-packet.c | 18 |
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; |