use deepsize2::DeepSizeOf;
use serde::{Deserialize, Serialize};
use crate::events::{
memory::{MemoryReadRecord, MemoryWriteRecord},
MemoryLocalEvent, PageProtLocalEvent, PageProtRecord,
};
#[derive(Default, Debug, Clone, Serialize, Deserialize, DeepSizeOf, PartialEq, Eq)]
pub struct EllipticCurvePageProtRecords {
pub read_page_prot_records: Vec<PageProtRecord>,
pub write_page_prot_records: Vec<PageProtRecord>,
}
#[derive(Default, Debug, Clone, Serialize, PartialEq, Eq, Deserialize, DeepSizeOf)]
pub struct EllipticCurveAddEvent {
pub clk: u64,
pub p_ptr: u64,
pub p: Vec<u64>,
pub q_ptr: u64,
pub q: Vec<u64>,
pub p_memory_records: Vec<MemoryWriteRecord>,
pub q_memory_records: Vec<MemoryReadRecord>,
pub local_mem_access: Vec<MemoryLocalEvent>,
pub page_prot_records: EllipticCurvePageProtRecords,
pub local_page_prot_access: Vec<PageProtLocalEvent>,
}
#[derive(Default, Debug, Clone, Serialize, PartialEq, Eq, Deserialize, DeepSizeOf)]
pub struct EllipticCurveDoubleEvent {
pub clk: u64,
pub p_ptr: u64,
pub p: Vec<u64>,
pub p_memory_records: Vec<MemoryWriteRecord>,
pub local_mem_access: Vec<MemoryLocalEvent>,
pub write_slice_page_prot_access: Vec<PageProtRecord>,
pub local_page_prot_access: Vec<PageProtLocalEvent>,
}
#[derive(Default, Debug, Clone, Serialize, Deserialize, DeepSizeOf)]
pub struct EllipticCurveDecompressEvent {
pub clk: u64,
pub ptr: u64,
pub sign_bit: bool,
pub x_bytes: Vec<u8>,
pub decompressed_y_bytes: Vec<u8>,
pub x_memory_records: Vec<MemoryReadRecord>,
pub y_memory_records: Vec<MemoryWriteRecord>,
pub local_mem_access: Vec<MemoryLocalEvent>,
pub page_prot_records: EllipticCurvePageProtRecords,
pub local_page_prot_access: Vec<PageProtLocalEvent>,
}