From c5854a95b75895cc68d837bedc510709934a412f Mon Sep 17 00:00:00 2001 From: Arthur Gautier Date: Fri, 18 Apr 2025 17:49:39 +0000 Subject: [PATCH] dsa: capture error --- Cargo.lock | 12 ++++++------ ecdsa/Cargo.toml | 2 +- ecdsa/src/der.rs | 27 +++++++++------------------ 3 files changed, 16 insertions(+), 25 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ee95a7cb..f31fd764 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -307,9 +307,9 @@ dependencies = [ [[package]] name = "der" -version = "0.8.0-rc.1" +version = "0.8.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82db698b33305f0134faf590b9d1259dc171b5481ac41d5c8146c3b3ee7d4319" +checksum = "a348a791b3df164315b6733835b128f52f99bd76bc3b19adbd574bde4a1be2e7" dependencies = [ "const-oid", "der_derive", @@ -319,9 +319,9 @@ dependencies = [ [[package]] name = "der_derive" -version = "0.8.0-rc.1" +version = "0.8.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "211bea8bb45f5f61bc857104606913ef8ac8b5ec698143aa2aa96a7ffdc94991" +checksum = "9ea0c03fbeccba0997b8f476094bab403aa02013f8eb901eb23a6a7a11b80fe7" dependencies = [ "proc-macro2", "quote", @@ -747,9 +747,9 @@ dependencies = [ [[package]] name = "pkcs8" -version = "0.11.0-rc.2" +version = "0.11.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f22636de7c995e997ed3d8d2949b7414d4faba3efa7312a6c0e75d875a14bdd4" +checksum = "eb59d311663eb310da092cb3b4525dac863f3fff825898db1a5a2f46420c5e84" dependencies = [ "der", "spki", diff --git a/ecdsa/Cargo.toml b/ecdsa/Cargo.toml index 2b28d907..49271415 100644 --- a/ecdsa/Cargo.toml +++ b/ecdsa/Cargo.toml @@ -21,7 +21,7 @@ elliptic-curve = { version = "0.14.0-rc.1", default-features = false, features = signature = { version = "=3.0.0-pre", default-features = false, features = ["rand_core"] } # optional dependencies -der = { version = "0.8.0-rc.1", optional = true } +der = { version = "0.8.0-rc.2", optional = true } digest = { version = "=0.11.0-pre.10", optional = true, default-features = false, features = ["oid"] } rfc6979 = { version = "=0.5.0-pre.4", optional = true } serdect = { version = "0.3", optional = true, default-features = false, features = ["alloc"] } diff --git a/ecdsa/src/der.rs b/ecdsa/src/der.rs index 9b2b7c2c..3da220f0 100644 --- a/ecdsa/src/der.rs +++ b/ecdsa/src/der.rs @@ -420,18 +420,9 @@ mod tests { #[test] fn test_asn1_too_short_signature() { assert!(Signature::from_der(&[]).is_err()); - assert!(Signature::from_der(&[der::Tag::Sequence.into()]).is_err()); - assert!(Signature::from_der(&[der::Tag::Sequence.into(), 0x00]).is_err()); - assert!( - Signature::from_der(&[ - der::Tag::Sequence.into(), - 0x03, - der::Tag::Integer.into(), - 0x01, - 0x01 - ]) - .is_err() - ); + assert!(Signature::from_der(&[0x30]).is_err()); + assert!(Signature::from_der(&[0x30, 0x00]).is_err()); + assert!(Signature::from_der(&[0x30, 0x03, 0x02, 0x01, 0x01]).is_err()); } #[test] @@ -439,12 +430,12 @@ mod tests { // A minimal 8-byte ASN.1 signature parses OK. assert!( Signature::from_der(&[ - der::Tag::Sequence.into(), + 0x30, // Tag::Sequence, 0x06, // length of below - der::Tag::Integer.into(), + 0x02, // Tag::Integer, 0x01, // length of value 0x01, // value=1 - der::Tag::Integer.into(), + 0x02, // Tag::Integer, 0x01, // length of value 0x01, // value=1 ]) @@ -456,13 +447,13 @@ mod tests { // https://github.com/google/wycheproof/blob/2196000605e4/testvectors/ecdsa_secp256k1_sha256_test.json#L57-L66 assert!( Signature::from_der(&[ - der::Tag::Sequence.into(), + 0x30, // Tag::Sequence 0x81, // extended length: 1 length byte to come 0x06, // length of below - der::Tag::Integer.into(), + 0x02, // Tag::Integer 0x01, // length of value 0x01, // value=1 - der::Tag::Integer.into(), + 0x02, // Tag::Integer 0x01, // length of value 0x01, // value=1 ])