use crate::extractors::zlib::{zlib_decompress, CHECKSUM_SIZE};
use crate::signatures::common::{SignatureError, SignatureResult, CONFIDENCE_HIGH};
pub const GPG_SIGNED_DESCRIPTION: &str = "GPG signed file";
pub fn gpg_signed_magic() -> Vec<Vec<u8>> {
vec![b"\xA3\x01".to_vec()]
}
pub fn gpg_signed_parser(
file_data: &[u8],
offset: usize,
) -> Result<SignatureResult, SignatureError> {
let mut result = SignatureResult {
offset,
confidence: CONFIDENCE_HIGH,
description: GPG_SIGNED_DESCRIPTION.to_string(),
..Default::default()
};
let decompression_dry_run = zlib_decompress(file_data, offset, None);
if decompression_dry_run.success {
if let Some(total_size) = decompression_dry_run.size {
result.size = total_size - CHECKSUM_SIZE;
result.description =
format!("{}, total size: {} bytes", result.description, result.size);
return Ok(result);
}
}
Err(SignatureError)
}