Expose CDSI lookup via FFI

This commit is contained in:
Alex Konradi
2024-02-22 10:31:01 -05:00
committed by GitHub
parent 4d5ae34c1a
commit 5b5b85e715
22 changed files with 754 additions and 42 deletions

View File

@@ -42,6 +42,13 @@ pub unsafe extern "C" fn signal_free_buffer(buf: *const c_uchar, buf_len: usize)
)));
}
#[no_mangle]
pub unsafe extern "C" fn signal_free_lookup_response_entry_list(
buffer: OwnedBufferOf<crate::FfiCdsiLookupResponseEntry>,
) {
drop(buffer.into_box())
}
#[no_mangle]
pub unsafe extern "C" fn signal_free_string_array(array: StringArray) {
drop(array.into_boxed_parts())
@@ -129,6 +136,27 @@ pub unsafe extern "C" fn signal_error_get_type(err: *const SignalFfiError) -> u3
}
}
#[no_mangle]
pub unsafe extern "C" fn signal_error_get_retry_after_seconds(
err: *const SignalFfiError,
out: *mut u32,
) -> *mut SignalFfiError {
let err = AssertUnwindSafe(err);
run_ffi_safe(|| {
let err = err.as_ref().ok_or(SignalFfiError::NullPointer)?;
match err {
SignalFfiError::RateLimited {
retry_after_seconds,
} => write_result_to(out, *retry_after_seconds),
err => Err(SignalFfiError::Signal(
SignalProtocolError::InvalidArgument(format!(
"cannot get retry_after_seconds from error ({err})"
)),
)),
}
})
}
#[no_mangle]
pub unsafe extern "C" fn signal_error_free(err: *mut SignalFfiError) {
if !err.is_null() {