compression-rs 0.2.4

Safe Rust bindings for Apple's Compression and AppleArchive APIs on macOS
Documentation
use std::ffi::{c_char, c_void};

unsafe extern "C" {
    pub fn compression_rs_aea_context_create_with_profile(profile: u32) -> *mut c_void;
    pub fn compression_rs_aea_context_create_with_encrypted_stream(
        stream: *mut c_void,
    ) -> *mut c_void;
    pub fn compression_rs_aea_context_get_field_uint(handle: *mut c_void, field: u32) -> u64;
    pub fn compression_rs_aea_context_get_field_blob(
        handle: *mut c_void,
        field: u32,
        representation: u32,
        buf_capacity: usize,
        buf: *mut u8,
        buf_size: *mut usize,
    ) -> i32;
    pub fn compression_rs_aea_context_set_field_uint(
        handle: *mut c_void,
        field: u32,
        value: u64,
    ) -> i32;
    pub fn compression_rs_aea_context_set_field_blob(
        handle: *mut c_void,
        field: u32,
        representation: u32,
        buf: *const u8,
        buf_size: usize,
    ) -> i32;
    pub fn compression_rs_aea_context_generate_field_blob(handle: *mut c_void, field: u32) -> i32;
    pub fn compression_rs_aea_context_decrypt_attributes(handle: *mut c_void) -> i32;
    pub fn compression_rs_aea_context_release(handle: *mut c_void);

    pub fn compression_rs_aea_encryption_output_stream_open(
        stream: *mut c_void,
        context: *mut c_void,
        flags: u64,
        n_threads: i32,
    ) -> *mut c_void;
    pub fn compression_rs_aea_encryption_output_stream_open_existing(
        stream: *mut c_void,
        context: *mut c_void,
        flags: u64,
        n_threads: i32,
    ) -> *mut c_void;
    pub fn compression_rs_aea_encryption_output_stream_close_and_update_context(
        stream: *mut c_void,
        context: *mut c_void,
    ) -> i32;
    pub fn compression_rs_aea_decryption_input_stream_open(
        stream: *mut c_void,
        context: *mut c_void,
        flags: u64,
        n_threads: i32,
    ) -> *mut c_void;
    pub fn compression_rs_aea_decryption_random_access_input_stream_open(
        stream: *mut c_void,
        context: *mut c_void,
        alloc_limit: usize,
        flags: u64,
        n_threads: i32,
    ) -> *mut c_void;
    pub fn compression_rs_aea_stream_sign(stream: *mut c_void, context: *mut c_void) -> i32;

    pub fn compression_rs_aea_auth_data_create() -> *mut c_void;
    pub fn compression_rs_aea_auth_data_create_with_context(context: *mut c_void) -> *mut c_void;
    pub fn compression_rs_aea_auth_data_get_entry_count(handle: *mut c_void) -> u32;
    pub fn compression_rs_aea_auth_data_get_entry(
        handle: *mut c_void,
        index: u32,
        key_capacity: usize,
        key: *mut c_char,
        key_length: *mut usize,
        data_capacity: usize,
        data: *mut u8,
        data_size: *mut usize,
    ) -> i32;
    pub fn compression_rs_aea_auth_data_append_entry(
        handle: *mut c_void,
        key: *const c_char,
        data: *const u8,
        data_size: usize,
    ) -> i32;
    pub fn compression_rs_aea_auth_data_set_entry(
        handle: *mut c_void,
        index: u32,
        key: *const c_char,
        data: *const u8,
        data_size: usize,
    ) -> i32;
    pub fn compression_rs_aea_auth_data_clear(handle: *mut c_void) -> i32;
    pub fn compression_rs_aea_auth_data_remove_entry(handle: *mut c_void, index: u32) -> i32;
    pub fn compression_rs_aea_auth_data_get_encoded_size(handle: *mut c_void) -> usize;
    pub fn compression_rs_aea_auth_data_copy_encoded_data(
        handle: *mut c_void,
        dst: *mut u8,
    ) -> bool;
    pub fn compression_rs_aea_auth_data_release(handle: *mut c_void);
}