Skip to content

Commit e7a22ba

Browse files
authored
fix: RSA signature/verify tests only run on non-fips (#684)
1 parent ed2dfaf commit e7a22ba

3 files changed

Lines changed: 18 additions & 5 deletions

File tree

.github/workflows/main.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ name: CI
33

44
on:
55
push:
6+
branches:
7+
- develop
8+
- main
69
tags:
710
- '**'
811
workflow_dispatch:

crate/crypto/src/crypto/rsa/sign.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ pub fn sign_rsa_with_pkey(request: &Sign, private_key: &PKey<Private>) -> Crypto
146146
#[allow(unsafe_code)]
147147
ctx.set_rsa_mgf1_md(unsafe { &*(digest.as_ptr().cast::<openssl::md::MdRef>()) })?;
148148
}
149-
//Tell OpenSSL what the hash type is
149+
// Tell OpenSSL what the hash type is
150150
#[allow(unsafe_code)]
151151
ctx.set_signature_md(unsafe { &*(digest.as_ptr().cast::<openssl::md::MdRef>()) })?;
152152

@@ -313,6 +313,7 @@ mod tests {
313313
}
314314

315315
#[test]
316+
#[cfg(feature = "non-fips")]
316317
fn rsa_pss_sign_prehashed_and_verify() {
317318
// Generate RSA key
318319
let rsa = Rsa::generate(2048).unwrap_or_else(|e| panic!("rsa gen: {e}"));
@@ -354,6 +355,7 @@ mod tests {
354355
}
355356

356357
#[test]
358+
#[cfg(feature = "non-fips")]
357359
fn rsa_pss_sign_raw_digest_verify() {
358360
// Generate RSA key
359361
let rsa = Rsa::generate(2048).unwrap_or_else(|e| panic!("rsa gen: {e}"));

crate/crypto/src/crypto/rsa/verify.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,11 +131,19 @@ pub fn rsa_verify(
131131
if primary {
132132
true
133133
} else {
134-
let mgf1_sha1 = MessageDigest::sha1();
135-
if mgf1_sha1 == mgf1_digest {
134+
#[cfg(not(feature = "non-fips"))]
135+
{
136+
// In FIPS mode, don't attempt SHA-1 fallback
136137
false
137-
} else {
138-
try_verify(mgf1_sha1)?
138+
}
139+
#[cfg(feature = "non-fips")]
140+
{
141+
let mgf1_sha1 = MessageDigest::sha1();
142+
if mgf1_sha1 == mgf1_digest {
143+
false
144+
} else {
145+
try_verify(mgf1_sha1)?
146+
}
139147
}
140148
}
141149
} else {

0 commit comments

Comments
 (0)