use crate::native::types::{FileAttribute, BOOL, BYTE, CHAR, DWORD, HANDLE, LPSTR, ULONG};
#[allow(non_camel_case_types)]
extern "C" {
pub fn SKF_CreateApplication(
device_handle: HANDLE,
sz_app_name: LPSTR,
sz_admin_pin: LPSTR,
admin_pin_retry_count: DWORD,
sz_user_pin: LPSTR,
user_pin_retry_count: DWORD,
create_file_rights: DWORD,
app_handle: *mut HANDLE,
) -> ULONG;
pub fn SKF_EnumApplication(
device_handle: HANDLE,
sz_app_name_list: LPSTR,
size: *mut ULONG,
) -> ULONG;
pub fn SKF_OpenApplication(
device_handle: HANDLE,
sz_app_name: LPSTR,
app_handle: *mut HANDLE,
) -> ULONG;
pub fn SKF_DeleteApplication(device_handle: HANDLE, sz_app_name: LPSTR) -> ULONG;
pub fn SKF_CloseApplication(app_handle: HANDLE) -> ULONG;
pub fn SKF_CreateFile(
app_handle: HANDLE,
sz_file_name: LPSTR,
file_size: ULONG,
read_rights: ULONG,
write_rights: ULONG,
) -> ULONG;
pub fn SKF_DeleteFile(app_handle: HANDLE, sz_file_name: LPSTR) -> ULONG;
pub fn SKF_EnumFiles(app_handle: HANDLE, sz_file_list: *mut CHAR, size: *mut ULONG) -> ULONG;
pub fn SKF_GetFileInfo(
app_handle: HANDLE,
sz_file_name: LPSTR,
file_info: *mut FileAttribute,
) -> ULONG;
pub fn SKF_ReadFile(
app_handle: HANDLE,
sz_file_name: LPSTR,
offset: ULONG,
size: ULONG,
out_data: *mut BYTE,
out_len: *mut ULONG,
) -> ULONG;
pub fn SKF_WriteFile(
app_handle: HANDLE,
sz_file_name: LPSTR,
offset: ULONG,
data: *const BYTE,
size: ULONG,
) -> ULONG;
pub fn SKF_CreateContainer(
app_handle: HANDLE,
sz_container_name: LPSTR,
container_handle: *mut HANDLE,
) -> ULONG;
pub fn SKF_DeleteContainer(app_handle: HANDLE, sz_container_name: LPSTR) -> ULONG;
pub fn SKF_OpenContainer(
app_handle: HANDLE,
sz_container_name: LPSTR,
container_handle: *mut HANDLE,
) -> ULONG;
pub fn SKF_CloseContainer(container_handle: HANDLE) -> ULONG;
pub fn SKF_EnumContainer(app_handle: HANDLE, list: *mut CHAR, size: *mut ULONG) -> ULONG;
pub fn SKF_GetContainerType(container_handle: HANDLE, container_type: *mut ULONG) -> ULONG;
pub fn SKF_ImportCertificate(
container_handle: HANDLE,
sign_flag: BOOL,
cert: *const BYTE,
cert_len: ULONG,
) -> ULONG;
pub fn SKF_ExportCertificate(
container_handle: HANDLE,
sign_flag: BOOL,
cert: *mut BYTE,
cert_len: *mut ULONG,
) -> ULONG;
}