diff options
author | Justus Winter <justus@sequoia-pgp.org> | 2020-09-21 13:19:58 +0200 |
---|---|---|
committer | Justus Winter <justus@sequoia-pgp.org> | 2020-09-21 13:39:09 +0200 |
commit | a67908ab81151cfd69f71c20cd2975507e0a3b5a (patch) | |
tree | abe8c5f06e1457d48932eb6932057da81a6f66eb | |
parent | 1151aee5b90eefb2525ff363948a332da9443c43 (diff) |
openpgp: Refuse to parse ECDH public keys with unknown magic value.
- ECDH public fields have a mechanism for future extensions.
Currently, this field has to be set to 1. Enforce this at parse
time.
- Fixes #561.
-rw-r--r-- | openpgp/src/parse/mpis.rs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/openpgp/src/parse/mpis.rs b/openpgp/src/parse/mpis.rs index 9dd7d31a..b1af3c22 100644 --- a/openpgp/src/parse/mpis.rs +++ b/openpgp/src/parse/mpis.rs @@ -118,7 +118,12 @@ impl mpi::PublicKey { "wrong kdf length".into()).into()); } - let _reserved = php.parse_u8("kdf_reserved")?; + let reserved = php.parse_u8("kdf_reserved")?; + if reserved != 1 { + return Err(Error::MalformedPacket( + format!("Reserved kdf field must be 0x01, \ + got 0x{:x}", reserved)).into()); + } let hash: HashAlgorithm = php.parse_u8("kdf_hash")?.into(); let sym: SymmetricAlgorithm = php.parse_u8("kek_symm")?.into(); |