From 885207adf19f73a35add00ca3ecbe076ed040c63 Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Tue, 4 May 2021 18:55:31 +0800 Subject: [PATCH] feat: calc rsa bit length --- src/x509.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/x509.rs b/src/x509.rs index 8bb8381..4b24789 100644 --- a/src/x509.rs +++ b/src/x509.rs @@ -68,12 +68,18 @@ impl X509PublicKeyAlgo { println!("{:?}", d); println!("{:?}", d.as_ref().unwrap().1.content); if let BerObjectContent::Sequence(seq) = &d.as_ref().unwrap().1.content { - println!("||| {:?}", &seq[0].content); - if let BerObjectContent::Integer(int) = seq[0].content { - println!(">>> {:?}", int); - println!(">>> {:?}", int.len()); - println!(">>> {:?}", int.len() * 8); + let mut rsa_n_len = 0; + if let BerObjectContent::Integer(n) = seq[0].content { + rsa_n_len = n.len() - (if n[0] == 0 { 1 } else { 0 }); } + let rsa_bit_length = || -> Option { + for bit_len in &[1024, 2048, 3072, 4096] { + if i32::abs(bit_len - (rsa_n_len as i32 * 8)) <= 16 { + return Some(*bit_len); + } + } + None + }; } Ok(Self::Rsa) } else {