Skip to content

Commit 3114b7d

Browse files
committed
pss, pkcs1v15: check that invalid signatures fail verification
Add tests for pkcs1v15 and pss signature verification functions to check that verifying invalid signatures returns an error. Signed-off-by: Dmitry Baryshkov <[email protected]>
1 parent de20c7a commit 3114b7d

File tree

2 files changed

+56
-24
lines changed

2 files changed

+56
-24
lines changed

src/pkcs1v15.rs

+30-14
Original file line numberDiff line numberDiff line change
@@ -352,25 +352,41 @@ mod tests {
352352
fn test_verify_pkcs1v15() {
353353
let priv_key = get_private_key();
354354

355-
let tests = [(
356-
"Test.\n",
357-
hex!(
358-
"a4f3fa6ea93bcdd0c57be020c1193ecbfd6f200a3d95c409769b029578fa0e33"
359-
"6ad9a347600e40d3ae823b8c7e6bad88cc07c1d54c3a1523cbbb6d58efc362ae"
355+
let tests = [
356+
(
357+
"Test.\n",
358+
hex!(
359+
"a4f3fa6ea93bcdd0c57be020c1193ecbfd6f200a3d95c409769b029578fa0e33"
360+
"6ad9a347600e40d3ae823b8c7e6bad88cc07c1d54c3a1523cbbb6d58efc362ae"
361+
),
362+
true,
360363
),
361-
)];
364+
(
365+
"Test.\n",
366+
hex!(
367+
"a4f3fa6ea93bcdd0c57be020c1193ecbfd6f200a3d95c409769b029578fa0e33"
368+
"6ad9a347600e40d3ae823b8c7e6bad88cc07c1d54c3a1523cbbb6d58efc362af"
369+
),
370+
false,
371+
),
372+
];
362373
let pub_key: RsaPublicKey = priv_key.into();
363374

364-
for (text, sig) in &tests {
375+
for (text, sig, expected) in &tests {
365376
let digest = Sha1::digest(text.as_bytes()).to_vec();
366377

367-
pub_key
368-
.verify(
369-
PaddingScheme::new_pkcs1v15_sign(Some(Hash::SHA1)),
370-
&digest,
371-
sig,
372-
)
373-
.expect("failed to verify");
378+
let result = pub_key.verify(
379+
PaddingScheme::new_pkcs1v15_sign(Some(Hash::SHA1)),
380+
&digest,
381+
sig,
382+
);
383+
match expected {
384+
true => result.expect("failed to verify"),
385+
false => {
386+
result.expect_err("expected verifying error");
387+
()
388+
}
389+
}
374390
}
375391
}
376392

src/pss.rs

+26-10
Original file line numberDiff line numberDiff line change
@@ -272,21 +272,37 @@ mod test {
272272
fn test_verify_pss() {
273273
let priv_key = get_private_key();
274274

275-
let tests = [(
276-
"test\n",
277-
hex!(
278-
"6f86f26b14372b2279f79fb6807c49889835c204f71e38249b4c5601462da8ae"
279-
"30f26ffdd9c13f1c75eee172bebe7b7c89f2f1526c722833b9737d6c172a962f"
275+
let tests = [
276+
(
277+
"test\n",
278+
hex!(
279+
"6f86f26b14372b2279f79fb6807c49889835c204f71e38249b4c5601462da8ae"
280+
"30f26ffdd9c13f1c75eee172bebe7b7c89f2f1526c722833b9737d6c172a962f"
281+
),
282+
true,
280283
),
281-
)];
284+
(
285+
"test\n",
286+
hex!(
287+
"6f86f26b14372b2279f79fb6807c49889835c204f71e38249b4c5601462da8ae"
288+
"30f26ffdd9c13f1c75eee172bebe7b7c89f2f1526c722833b9737d6c172a962e"
289+
),
290+
false,
291+
),
292+
];
282293
let pub_key: RsaPublicKey = priv_key.into();
283294

284-
for (text, sig) in &tests {
295+
for (text, sig, expected) in &tests {
285296
let digest = Sha1::digest(text.as_bytes()).to_vec();
286297
let rng = ChaCha8Rng::from_seed([42; 32]);
287-
pub_key
288-
.verify(PaddingScheme::new_pss::<Sha1, _>(rng), &digest, sig)
289-
.expect("failed to verify");
298+
let result = pub_key.verify(PaddingScheme::new_pss::<Sha1, _>(rng), &digest, sig);
299+
match expected {
300+
true => result.expect("failed to verify"),
301+
false => {
302+
result.expect_err("expected verifying error");
303+
()
304+
}
305+
}
290306
}
291307
}
292308

0 commit comments

Comments
 (0)