Extract encrypted payload

This commit is contained in:
Pierre HUBERT 2025-03-07 16:42:10 +01:00
parent 69e4b75f3f
commit dd6df30d5c

View File

@ -11,7 +11,7 @@ pub struct SCEPRequest {
#[derive(Debug, Default)]
pub struct SCEPResponse {
encrypted_data_len: usize,
}
/// Parse asn1 content
@ -103,7 +103,33 @@ pub fn decode_response(openssl: &str, res: &[u8]) -> anyhow::Result<SCEPResponse
let pkcs7_data = hex::decode(byte_string.trim()).context("Decode PKCS7")?;
let pkcs7_decoded = parse_asn1(openssl, &pkcs7_data)?;
println!("{}", pkcs7_decoded);
log::debug!("PKCS7 decoded data: {}", pkcs7_decoded);
// Extract encrypted payload
let mut byte_string = String::new();
let mut extracting = false;
for (num, line) in lines.iter().enumerate() {
// Wait for payload
if !extracting {
if !line.contains(":aes-128-cbc") {
extracting = true;
}
continue;
}
if line.contains("EOC") {
break;
}
if !line.contains("[HEX DUMP]:") {
continue;
}
byte_string.push_str(&line.split_once("[HEX DUMP]:").unwrap().1);
}
let encrypted_data = hex::decode(byte_string.trim()).context("Decode encrypted data")?;
res.encrypted_data_len = encrypted_data.len();
Ok(res)
}