From 7888b0fb91fd160758b64cca073fbc1bb3272380 Mon Sep 17 00:00:00 2001 From: Christopher Patton Date: Tue, 10 Feb 2026 07:44:59 -0800 Subject: [PATCH] symm: Add regression test for cipher NIDs --- boring/src/symm.rs | 101 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 99 insertions(+), 2 deletions(-) diff --git a/boring/src/symm.rs b/boring/src/symm.rs index 1604b70b..1c6cdbb0 100644 --- a/boring/src/symm.rs +++ b/boring/src/symm.rs @@ -1061,7 +1061,8 @@ mod tests { Cipher::des_cbc(), Cipher::rc4(), ] { - assert_eq!(Cipher::from_nid(cipher.nid()), Some(cipher)); + let name = cipher.nid().short_name().unwrap_or("unknown"); + assert_eq!(Cipher::from_nid(cipher.nid()), Some(cipher), "{}", name); } for cipher in [ @@ -1070,7 +1071,103 @@ mod tests { Cipher::aes_256_gcm(), Cipher::des_ede3(), ] { - assert_eq!(Cipher::from_nid(cipher.nid()), None); + let name = cipher.nid().short_name().unwrap_or("unknown"); + assert_eq!(Cipher::from_nid(cipher.nid()), None, "{}", name); + } + } + + // Make sure the NIDs don't actually change upstream. + #[test] + fn test_nid_regression() { + struct TestCase { + cipher: Cipher, + nid: c_int, + } + + for t in [ + TestCase { + cipher: Cipher::aes_128_ecb(), + nid: 418, + }, + TestCase { + cipher: Cipher::aes_128_cbc(), + nid: 419, + }, + TestCase { + cipher: Cipher::aes_128_ctr(), + nid: 904, + }, + TestCase { + cipher: Cipher::aes_128_gcm(), + nid: 895, + }, + TestCase { + cipher: Cipher::aes_128_ofb(), + nid: 420, + }, + TestCase { + cipher: Cipher::aes_192_ecb(), + nid: 422, + }, + TestCase { + cipher: Cipher::aes_192_cbc(), + nid: 423, + }, + TestCase { + cipher: Cipher::aes_192_ctr(), + nid: 905, + }, + TestCase { + cipher: Cipher::aes_192_gcm(), + nid: 898, + }, + TestCase { + cipher: Cipher::aes_192_ofb(), + nid: 424, + }, + TestCase { + cipher: Cipher::aes_256_ecb(), + nid: 426, + }, + TestCase { + cipher: Cipher::aes_256_cbc(), + nid: 427, + }, + TestCase { + cipher: Cipher::aes_256_ctr(), + nid: 906, + }, + TestCase { + cipher: Cipher::aes_256_gcm(), + nid: 901, + }, + TestCase { + cipher: Cipher::aes_256_ofb(), + nid: 428, + }, + TestCase { + cipher: Cipher::des_ecb(), + nid: 29, + }, + TestCase { + cipher: Cipher::des_ede3_cbc(), + nid: 44, + }, + TestCase { + cipher: Cipher::des_cbc(), + nid: 31, + }, + TestCase { + cipher: Cipher::rc4(), + nid: 5, + }, + TestCase { + cipher: Cipher::des_ede3(), + nid: 33, + }, + ] { + let name = t.cipher.nid().short_name().unwrap_or("unknown"); + assert_eq!(t.cipher.nid().as_raw(), t.nid, "{}", name); } } }