From 60243b6d7cceadd11d42cec4b19329b8247201a0 Mon Sep 17 00:00:00 2001 From: Heiko Schaefer Date: Thu, 1 Jul 2021 22:45:35 +0200 Subject: [PATCH] Add handling of unknown Algorithms/OIDs in algo_info::parse --- openpgp-card/src/parse/algo_info.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/openpgp-card/src/parse/algo_info.rs b/openpgp-card/src/parse/algo_info.rs index 88ab2ee..cd61872 100644 --- a/openpgp-card/src/parse/algo_info.rs +++ b/openpgp-card/src/parse/algo_info.rs @@ -36,13 +36,17 @@ fn key_type(input: &[u8]) -> nom::IResult<&[u8], KeyType> { ))(input) } +fn unknown(input: &[u8]) -> nom::IResult<&[u8], Algo> { + Ok((&[], Algo::Unknown(input.to_vec()))) +} + fn parse_one(input: &[u8]) -> nom::IResult<&[u8], Algo> { - let (x, a) = combinator::map( + let (input, a) = combinator::map( combinator::flat_map(crate::tlv::length::length, bytes::take), - |i| combinator::all_consuming(algo_attrs::parse)(i), + |i| alt((combinator::all_consuming(algo_attrs::parse), unknown))(i), )(input)?; - Ok((x, a?.1)) + Ok((input, a?.1)) } fn parse_list(input: &[u8]) -> nom::IResult<&[u8], Vec<(KeyType, Algo)>> {