Skip to content

Commit 7b5e206

Browse files
committed
der error handling fixups
Companion PR to RustCrypto/formats#1889
1 parent 6950d7d commit 7b5e206

File tree

7 files changed

+26
-26
lines changed

7 files changed

+26
-26
lines changed

Cargo.lock

Lines changed: 4 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,9 @@ lms-signature = { path = "./lms" }
2525
ml-dsa = { path = "./ml-dsa" }
2626
rfc6979 = { path = "./rfc6979" }
2727
slh-dsa = { path = "./slh-dsa" }
28+
29+
der = { git = "https://github.com/RustCrypto/formats.git" }
30+
pkcs8 = { git = "https://github.com/RustCrypto/formats.git" }
31+
sec1 = { git = "https://github.com/RustCrypto/formats.git" }
32+
33+
elliptic-curve = { git = "https://github.com/RustCrypto/traits.git" }

dsa/src/components.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ impl<'a> DecodeValue<'a> for Components {
9595
let q = BoxedUint::from_be_slice_vartime(q.as_bytes());
9696
let g = BoxedUint::from_be_slice_vartime(g.as_bytes());
9797

98-
Self::from_components(p, q, g).map_err(|_| Tag::Integer.value_error())
98+
Self::from_components(p, q, g).map_err(|_| reader.error(Tag::Integer.value_error()))
9999
}
100100
}
101101

dsa/src/lib.rs

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -117,18 +117,16 @@ impl Signature {
117117
impl<'a> DecodeValue<'a> for Signature {
118118
type Error = der::Error;
119119

120-
fn decode_value<R: Reader<'a>>(reader: &mut R, header: Header) -> der::Result<Self> {
121-
reader.read_nested(header.length, |reader| {
122-
let r = UintRef::decode(reader)?;
123-
let s = UintRef::decode(reader)?;
124-
125-
let r = BoxedUint::from_be_slice(r.as_bytes(), r.as_bytes().len() as u32 * 8)
126-
.map_err(|_| UintRef::TAG.value_error())?;
127-
let s = BoxedUint::from_be_slice(s.as_bytes(), s.as_bytes().len() as u32 * 8)
128-
.map_err(|_| UintRef::TAG.value_error())?;
129-
130-
Self::from_components(r, s).ok_or_else(|| UintRef::TAG.value_error())
131-
})
120+
fn decode_value<R: Reader<'a>>(reader: &mut R, _header: Header) -> der::Result<Self> {
121+
let r = UintRef::decode(reader)?;
122+
let s = UintRef::decode(reader)?;
123+
124+
let r = BoxedUint::from_be_slice(r.as_bytes(), r.as_bytes().len() as u32 * 8)
125+
.map_err(|_| UintRef::TAG.value_error())?;
126+
let s = BoxedUint::from_be_slice(s.as_bytes(), s.as_bytes().len() as u32 * 8)
127+
.map_err(|_| UintRef::TAG.value_error())?;
128+
129+
Self::from_components(r, s).ok_or_else(|| reader.error(UintRef::TAG.value_error()))
132130
}
133131
}
134132

ecdsa/src/der.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ where
121121

122122
sig.encode_to_slice(&mut bytes)?
123123
.try_into()
124-
.map_err(|_| Tag::Sequence.value_error())
124+
.map_err(|_| Tag::Sequence.value_error().into())
125125
}
126126

127127
/// Borrow this signature as a byte slice
@@ -210,10 +210,10 @@ where
210210
let len = (header.encoded_len()? + header.length)?;
211211
let slice = buf
212212
.get_mut(..usize::try_from(len)?)
213-
.ok_or_else(|| reader.error(Tag::Sequence.length_error().kind()))?;
213+
.ok_or_else(|| reader.error(Tag::Sequence.length_error()))?;
214214

215215
reader.read_into(slice)?;
216-
Self::from_bytes(slice).map_err(|_| Tag::Integer.value_error())
216+
Self::from_bytes(slice).map_err(|_| reader.error(Tag::Integer.value_error()))
217217
}
218218
}
219219

ml-dsa/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -734,7 +734,7 @@ where
734734
&EncodedVerifyingKey::<P>::try_from(
735735
spki.subject_public_key
736736
.as_bytes()
737-
.ok_or_else(|| der::Tag::BitString.value_error())?,
737+
.ok_or_else(|| der::Tag::BitString.value_error().to_error())?,
738738
)
739739
.map_err(|_| pkcs8::Error::KeyMalformed)?,
740740
))

slh-dsa/src/verifying_key.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ impl<P: ParameterSet> TryFrom<pkcs8::SubjectPublicKeyInfoRef<'_>> for VerifyingK
206206
Ok(Self::try_from(
207207
spki.subject_public_key
208208
.as_bytes()
209-
.ok_or_else(|| der::Tag::BitString.value_error())?,
209+
.ok_or_else(|| der::Tag::BitString.value_error().to_error())?,
210210
)
211211
.map_err(|_| pkcs8::Error::KeyMalformed)?)
212212
}

0 commit comments

Comments
 (0)