use crate::{
test::{create_test_assembly_with_error, get_testfile_wb, TestAssembly},
Result,
};
pub fn raw_signature_validator_file_factory() -> Result<Vec<TestAssembly>> {
let mut assemblies = Vec::new();
if let Some(clean_path) = get_testfile_wb() {
assemblies.push(TestAssembly::new(clean_path, true));
}
assemblies.push(create_assembly_with_invalid_method_calling_convention()?);
assemblies.push(create_assembly_with_invalid_field_calling_convention()?);
assemblies.push(create_assembly_with_malformed_compressed_integer()?);
assemblies.push(create_assembly_with_oversized_signature_blob()?);
Ok(assemblies)
}
pub fn create_assembly_with_invalid_method_calling_convention() -> Result<TestAssembly> {
create_test_assembly_with_error(get_testfile_wb, "ValidationRawFailed", |assembly| {
let blob_heap = vec![
0, 0x04, 0x06, 0x01, 0x01, 0x08, ];
assembly.blob_add_heap(blob_heap)?;
Ok(())
})
}
pub fn create_assembly_with_invalid_field_calling_convention() -> Result<TestAssembly> {
create_test_assembly_with_error(get_testfile_wb, "ValidationRawFailed", |assembly| {
let blob_heap = vec![
0, 0x02, 0x07, 0x08, ];
assembly.blob_add_heap(blob_heap)?;
Ok(())
})
}
pub fn create_assembly_with_malformed_compressed_integer() -> Result<TestAssembly> {
create_test_assembly_with_error(get_testfile_wb, "ValidationRawFailed", |assembly| {
let blob_heap = vec![
0, 0x02, 0x00, 0xE0, ];
assembly.blob_add_heap(blob_heap)?;
Ok(())
})
}
pub fn create_assembly_with_oversized_signature_blob() -> Result<TestAssembly> {
create_test_assembly_with_error(get_testfile_wb, "ValidationRawFailed", |assembly| {
let mut blob_heap = vec![
0, 0xC0, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, ];
blob_heap.resize(blob_heap.len() + 65534, 0xFF);
assembly.blob_add_heap(blob_heap)?;
Ok(())
})
}