use types::{sgx_attributes_t, sgx_misc_select_t, sgx_measurement_t};
use core::default::Default;

/* arch .h*/
pub const SE_KEY_SIZE       : usize =  384;
pub const SE_EXPONENT_SIZE  : usize =  4;

/* arch.h */
#[repr(packed)]
pub struct css_header_t {
    pub header          : [u8;12],
    pub css_type        : u32,  // type
    pub module_vendor   : u32,
    pub date            : u32,
    pub header2         : [u8;16],
    pub hw_version      : u32,
    pub reserved        : [u8;84],
}

#[repr(packed)]
pub struct css_key_t {
    pub modulus         : [u8;SE_KEY_SIZE],
    pub exponent        : [u8;SE_EXPONENT_SIZE],
    pub signature       : [u8;SE_KEY_SIZE],
}

#[repr(packed)]
pub struct css_body_t {
    pub misc_select     : sgx_misc_select_t,
    pub misc_mask       : sgx_misc_select_t,
    pub reserved        : [u8;20],
    pub attributes      : sgx_attributes_t,
    pub attribute_mask  : sgx_attributes_t,
    pub enclave_hash    : sgx_measurement_t,
    pub reserved2       : [u8;32],
    pub isv_prod_id     : u16,
    pub isv_svn         : u16,
}

#[repr(packed)]
pub struct css_buffer_t {
    pub reserved        : [u8;12],
    pub q1              : [u8;SE_KEY_SIZE],
    pub q2              : [u8;SE_KEY_SIZE],
}

#[repr(packed)]
pub struct enclave_css_t {
    pub header          : css_header_t,
    pub key             : css_key_t,
    pub body            : css_body_t,
    pub buffer          : css_buffer_t,
}

/* version of metadata */
/* based on 2.2 */
pub const MAJOR_VERSION         : u32 = 2;
pub const MINOR_VERSION         : u32 = 3;
pub const SGX_2_1_MAJOR_VERSION : u32 = 2;   //MAJOR_VERSION should not larger than 0ffffffff
pub const SGX_2_1_MINOR_VERSION : u32 = 2;   //MINOR_VERSION should not larger than 0ffffffff
pub const SGX_2_0_MAJOR_VERSION : u32 = 2;   //MAJOR_VERSION should not larger than 0ffffffff
pub const SGX_2_0_MINOR_VERSION : u32 = 1;   //MINOR_VERSION should not larger than 0ffffffff
pub const SGX_1_9_MAJOR_VERSION : u32 = 1;   //MAJOR_VERSION should not larger than 0ffffffff
pub const SGX_1_9_MINOR_VERSION : u32 = 4;   //MINOR_VERSION should not larger than 0ffffffff
pub const SGX_1_5_MAJOR_VERSION : u32 = 1;   //MAJOR_VERSION should not larger than 0ffffffff
pub const SGX_1_5_MINOR_VERSION : u32 = 3;   //MINOR_VERSION should not larger than 0ffffffff

pub const METADATA_MAGIC        : u64 = 0x86A80294635D0E4C;
pub const METADATA_SIZE         : usize = 0x5000;
pub const TCS_TEMPLATE_SIZE     : usize = 72;

pub const TCS_POLICY_BIND       : u32 = 0x00000000;  /* If set, the TCS is bound to the application thread */
pub const TCS_POLICY_UNBIND     : u32 = 0x00000001;

pub const MAX_SAVE_BUF_SIZE     : u32 = 2632;
pub const TCS_NUM_MIN           : u32 = 1;
pub const SSA_NUM_MIN           : u32 = 2;
pub const SSA_FRAME_SIZE_MIN    : u32 = 1;
pub const SSA_FRAME_SIZE_MAX    : u32 = 2;
pub const STACK_SIZE_MIN        : u32 = 0x1000;
pub const STACK_SIZE_MAX        : u32 = 0x40000;
pub const HEAP_SIZE_MIN         : u32 = 0x1000;
pub const HEAP_SIZE_MAX         : u32 = 0x1000000;
pub const DEFAULT_MISC_SELECT   : u32 = 0;
pub const DEFAULT_MISC_MASK     : u32 = 0xFFFFFFFF;

impl_struct! {
    #[repr(packed)]
    pub struct data_directory_t {
        pub offset : u32,
        pub size   : u32,
    }
}

impl_enum! {
    #[repr(u32)]
    #[derive(Copy, Clone, PartialEq, Eq)]
    pub enum dir_index_t {
        DIR_PATCH  = 0,
        DIR_LAYOUT = 1,
        DIR_NUM    = 2,
    }
}

pub const GROUP_FLAG              :u32 = (1<<12);
pub const LAYOUT_ID_HEAP_MIN      :u32 = 1;
pub const LAYOUT_ID_HEAP_INIT     :u32 = 2;
pub const LAYOUT_ID_HEAP_MAX      :u32 = 3;
pub const LAYOUT_ID_TCS           :u32 = 4;
pub const LAYOUT_ID_TD            :u32 = 5;
pub const LAYOUT_ID_SSA           :u32 = 6;
pub const LAYOUT_ID_STACK_MAX     :u32 = 7;
pub const LAYOUT_ID_STACK_MIN     :u32 = 8;
pub const LAYOUT_ID_THREAD_GROUP  :u32 = group_id!(9);
pub const LAYOUT_ID_GUARD         :u32 = 10;
pub const LAYOUT_ID_HEAP_DYN_MIN  :u32 = 11;
pub const LAYOUT_ID_HEAP_DYN_INIT :u32 = 12;
pub const LAYOUT_ID_HEAP_DYN_MAX  :u32 = 13;
pub const LAYOUT_ID_TCS_DYN       :u32 = 14;
pub const LAYOUT_ID_TD_DYN        :u32 = 15;
pub const LAYOUT_ID_SSA_DYN       :u32 = 16;
pub const LAYOUT_ID_STACK_DYN_MAX :u32 = 17;
pub const LAYOUT_ID_STACK_DYN_MIN :u32 = 18;
pub const LAYOUT_ID_THREAD_GROUP_DYN :u32 = group_id!(19);

type si_flags_t = u64;

impl_struct! {
    #[repr(packed)]
    pub struct layout_entry_t {
        pub id             : u16,
        pub attributes     : u16,
        pub page_count     : u32,
        pub rva            : u64,
        pub content_size   : u32,
        pub content_offset : u32,
        pub si_flags       : si_flags_t,
    }
    
    #[repr(packed)]
    pub struct layout_group_t {
        pub id             : u16,
        pub entry_count    : u16,
        pub load_times     : u32,
        pub load_step      : u64,
        pub reserved       : [u32;4],
    }
}

#[allow(unused)]
#[repr(C,packed)]
pub union layout_t {
    entry : layout_entry_t,
    group : layout_group_t,
}

#[repr(packed)]
pub struct patch_entry_t {
    pub dst     : u64,
    pub src     : u32,
    pub size    : u32,
    pub reserved: [u32;4],
}

#[repr(packed)]
pub struct metadata_t {
    pub magic_num       : u64,
    pub version         : u64,
    pub size            : u32,
    pub tcs_policy      : u32,
    pub ssa_frame_size  : u32,
    pub max_save_buffer_size : u32,
    pub desired_misc_select: u32,
    pub tcs_min_pool    : u32,
    pub enclave_size    : u64,
    pub attributes      : sgx_attributes_t,
    pub enclave_css     : enclave_css_t,
    pub dirs            : [data_directory_t;dir_index_t::DIR_NUM as usize],
    pub data            : [u8;18592],
}
