mirror of
https://github.com/signalapp/libsignal.git
synced 2024-09-20 03:52:17 +02:00
Bridge: move remaining int-returning APIs to plain bridge_fns
They don't fit in bridge_get! because they have extra logic, but that's okay.
This commit is contained in:
parent
1803d4fa4f
commit
6e46c905f4
@ -186,7 +186,7 @@ public final class Native {
|
||||
|
||||
public static native void SenderKeyName_Destroy(long handle);
|
||||
public static native String SenderKeyName_GetGroupId(long obj);
|
||||
public static native int SenderKeyName_GetSenderDeviceId(long handle);
|
||||
public static native int SenderKeyName_GetSenderDeviceId(long skn);
|
||||
public static native String SenderKeyName_GetSenderName(long obj);
|
||||
public static native long SenderKeyName_New(String groupId, String senderName, int senderDeviceId);
|
||||
|
||||
@ -221,7 +221,7 @@ public final class Native {
|
||||
public static native byte[] SessionRecord_GetRemoteIdentityKeyPublic(long handle);
|
||||
public static native int SessionRecord_GetRemoteRegistrationId(long obj);
|
||||
public static native byte[] SessionRecord_GetSenderChainKeyValue(long handle);
|
||||
public static native int SessionRecord_GetSessionVersion(long handle);
|
||||
public static native int SessionRecord_GetSessionVersion(long s);
|
||||
public static native boolean SessionRecord_HasSenderChain(long obj);
|
||||
public static native long SessionRecord_InitializeAliceSession(long identityKeyPrivate, long identityKeyPublic, long basePrivate, long basePublic, long theirIdentityKey, long theirSignedPrekey, long theirRatchetKey);
|
||||
public static native long SessionRecord_InitializeBobSession(long identityKeyPrivate, long identityKeyPublic, long signedPrekeyPrivate, long signedPrekeyPublic, long ephPrivate, long ephPublic, long theirIdentityKey, long theirBaseKey);
|
||||
@ -251,7 +251,7 @@ public final class Native {
|
||||
public static native long UnidentifiedSenderMessageContent_Deserialize(byte[] data);
|
||||
public static native void UnidentifiedSenderMessageContent_Destroy(long handle);
|
||||
public static native byte[] UnidentifiedSenderMessageContent_GetContents(long handle);
|
||||
public static native int UnidentifiedSenderMessageContent_GetMsgType(long handle);
|
||||
public static native int UnidentifiedSenderMessageContent_GetMsgType(long m);
|
||||
public static native long UnidentifiedSenderMessageContent_GetSenderCert(long handle);
|
||||
public static native byte[] UnidentifiedSenderMessageContent_GetSerialized(long handle);
|
||||
public static native long UnidentifiedSenderMessageContent_New(int msgType, long sender, byte[] contents);
|
||||
|
1
node/libsignal_client.d.ts
vendored
1
node/libsignal_client.d.ts
vendored
@ -74,6 +74,7 @@ export function SenderKeyMessage_New(key_id: number, iteration: number, cipherte
|
||||
export function SenderKeyMessage_Serialize(obj: SenderKeyMessage): Buffer;
|
||||
export function SenderKeyMessage_VerifySignature(skm: SenderKeyMessage, pubkey: PublicKey): boolean;
|
||||
export function SenderKeyName_GetGroupId(obj: SenderKeyName): string;
|
||||
export function SenderKeyName_GetSenderDeviceId(skn: SenderKeyName): number;
|
||||
export function SenderKeyName_GetSenderName(obj: SenderKeyName): string;
|
||||
export function SenderKeyName_New(group_id: string, sender_name: string, sender_device_id: number): SenderKeyName;
|
||||
export function SenderKeyRecord_Deserialize(buffer: Buffer): SenderKeyRecord;
|
||||
|
@ -200,10 +200,6 @@ ffi_fn_get_new_boxed_obj!(signal_sender_key_distribution_message_get_signature_k
|
||||
ffi_fn_get_new_boxed_obj!(signal_pre_key_bundle_get_identity_key(PublicKey) from PreKeyBundle,
|
||||
|p: &PreKeyBundle| Ok(*p.identity_key()?.public_key()));
|
||||
|
||||
/* SenderKeyName */
|
||||
ffi_fn_get_uint32!(signal_sender_key_name_get_sender_device_id(SenderKeyName) using
|
||||
|m: &SenderKeyName| Ok(m.sender()?.device_id()));
|
||||
|
||||
type GetIdentityKeyPair =
|
||||
extern "C" fn(store_ctx: *mut c_void, keyp: *mut *mut PrivateKey, ctx: *mut c_void) -> c_int;
|
||||
type GetLocalRegistrationId =
|
||||
|
@ -249,16 +249,3 @@ macro_rules! ffi_fn_get_new_boxed_obj {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! ffi_fn_get_uint32 {
|
||||
( $nm:ident($typ:ty) using $body:expr ) => {
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn $nm(out: *mut c_uint, obj: *const $typ) -> *mut SignalFfiError {
|
||||
run_ffi_safe(|| {
|
||||
let obj = native_handle_cast::<$typ>(obj)?;
|
||||
write_uint32_to(out, $body(&obj))
|
||||
})
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -141,9 +141,6 @@ jni_fn_get_new_boxed_obj!(Java_org_signal_client_internal_Native_PreKeyBundle_1G
|
||||
|
||||
/* SenderKeyName */
|
||||
|
||||
jni_fn_get_jint!(Java_org_signal_client_internal_Native_SenderKeyName_1GetSenderDeviceId(SenderKeyName) using
|
||||
|m: &SenderKeyName| Ok(m.sender()?.device_id()));
|
||||
|
||||
fn sender_key_name_to_jobject<'a>(
|
||||
env: &'a JNIEnv,
|
||||
sender_key_name: &SenderKeyName,
|
||||
@ -991,13 +988,6 @@ pub unsafe extern "C" fn Java_org_signal_client_internal_Native_SessionRecord_1F
|
||||
})
|
||||
}
|
||||
|
||||
// For historical reasons Android assumes this function will return zero if there is no session state
|
||||
jni_fn_get_jint!(Java_org_signal_client_internal_Native_SessionRecord_1GetSessionVersion(SessionRecord) using |s: &SessionRecord| match s.session_version() {
|
||||
Ok(v) => Ok(v),
|
||||
Err(SignalProtocolError::InvalidState(_, _)) => Ok(0),
|
||||
Err(e) => Err(e)
|
||||
});
|
||||
|
||||
// The following are just exposed to make it possible to retain some of the Java tests:
|
||||
|
||||
#[no_mangle]
|
||||
@ -1133,9 +1123,6 @@ pub unsafe extern "C" fn Java_org_signal_client_internal_Native_SenderCertificat
|
||||
}
|
||||
|
||||
// UnidentifiedSenderMessageContent
|
||||
jni_fn_get_jint!(Java_org_signal_client_internal_Native_UnidentifiedSenderMessageContent_1GetMsgType(UnidentifiedSenderMessageContent) using
|
||||
|m: &UnidentifiedSenderMessageContent| Ok(m.msg_type()? as u32));
|
||||
|
||||
jni_fn_get_new_boxed_obj!(Java_org_signal_client_internal_Native_UnidentifiedSenderMessageContent_1GetSenderCert(SenderCertificate) from UnidentifiedSenderMessageContent,
|
||||
|s: &UnidentifiedSenderMessageContent| Ok(s.sender()?.clone()));
|
||||
|
||||
|
@ -177,34 +177,3 @@ macro_rules! jni_fn_get_new_boxed_optional_obj {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! jni_fn_get_jint {
|
||||
( $nm:ident($typ:ty) using $body:expr ) => {
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn $nm(env: JNIEnv, _class: JClass, handle: ObjectHandle) -> jint {
|
||||
run_ffi_safe(&env, || {
|
||||
let obj = native_handle_cast::<$typ>(handle)?;
|
||||
jint_from_u32($body(obj))
|
||||
})
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! jni_fn_get_jboolean {
|
||||
( $nm:ident($typ:ty) using $body:expr ) => {
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn $nm(
|
||||
env: JNIEnv,
|
||||
_class: JClass,
|
||||
handle: ObjectHandle,
|
||||
) -> jboolean {
|
||||
run_ffi_safe(&env, || {
|
||||
let obj = native_handle_cast::<$typ>(handle)?;
|
||||
let r: bool = $body(obj)?;
|
||||
Ok(r as jboolean)
|
||||
})
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -393,6 +393,11 @@ fn SenderKeyName_New(
|
||||
)
|
||||
}
|
||||
|
||||
#[bridge_fn]
|
||||
fn SenderKeyName_GetSenderDeviceId(skn: &SenderKeyName) -> Result<u32, SignalProtocolError> {
|
||||
Ok(skn.sender()?.device_id())
|
||||
}
|
||||
|
||||
bridge_deserialize!(SenderKeyRecord::deserialize);
|
||||
bridge_get_bytearray!(Serialize(SenderKeyRecord), jni = "SenderKeyRecord_1GetSerialized" =>
|
||||
SenderKeyRecord::serialize
|
||||
@ -473,6 +478,13 @@ bridge_get_bytearray!(GetContents(UnidentifiedSenderMessageContent) =>
|
||||
UnidentifiedSenderMessageContent::contents
|
||||
);
|
||||
|
||||
#[bridge_fn(ffi = false, node = false)]
|
||||
fn UnidentifiedSenderMessageContent_GetMsgType(
|
||||
m: &UnidentifiedSenderMessageContent,
|
||||
) -> Result<u32, SignalProtocolError> {
|
||||
Ok(m.msg_type()? as u32)
|
||||
}
|
||||
|
||||
bridge_deserialize!(
|
||||
UnidentifiedSenderMessage::deserialize,
|
||||
ffi = false,
|
||||
@ -489,6 +501,16 @@ bridge_get_bytearray!(GetEncryptedStatic(UnidentifiedSenderMessage), ffi = false
|
||||
);
|
||||
bridge_get!(UnidentifiedSenderMessage::ephemeral_public -> PublicKey, ffi = false, node = false);
|
||||
|
||||
// For historical reasons Android assumes this function will return zero if there is no session state
|
||||
#[bridge_fn(ffi = false, node = false)]
|
||||
fn SessionRecord_GetSessionVersion(s: &SessionRecord) -> Result<u32, SignalProtocolError> {
|
||||
match s.session_version() {
|
||||
Ok(v) => Ok(v),
|
||||
Err(SignalProtocolError::InvalidState(_, _)) => Ok(0),
|
||||
Err(e) => Err(e),
|
||||
}
|
||||
}
|
||||
|
||||
bridge_deserialize!(SessionRecord::deserialize);
|
||||
bridge_get_bytearray!(Serialize(SessionRecord) => SessionRecord::serialize);
|
||||
bridge_get_bytearray!(GetAliceBaseKey(SessionRecord), ffi = false, node = false =>
|
||||
|
@ -236,9 +236,6 @@ SignalFfiError *signal_sender_key_distribution_message_get_signature_key(SignalP
|
||||
SignalFfiError *signal_pre_key_bundle_get_identity_key(SignalPublicKey **new_obj,
|
||||
const SignalPreKeyBundle *obj);
|
||||
|
||||
SignalFfiError *signal_sender_key_name_get_sender_device_id(unsigned int *out,
|
||||
const SignalSenderKeyName *obj);
|
||||
|
||||
SignalFfiError *signal_process_prekey_bundle(SignalPreKeyBundle *bundle,
|
||||
const SignalProtocolAddress *protocol_address,
|
||||
const SignalSessionStore *session_store,
|
||||
@ -720,6 +717,9 @@ SignalFfiError *signal_sender_key_name_new(SignalSenderKeyName **out,
|
||||
const char *sender_name,
|
||||
uint32_t sender_device_id);
|
||||
|
||||
SignalFfiError *signal_sender_key_name_get_sender_device_id(uint32_t *out,
|
||||
const SignalSenderKeyName *skn);
|
||||
|
||||
SignalFfiError *signal_sender_key_record_deserialize(SignalSenderKeyRecord **p,
|
||||
const unsigned char *data,
|
||||
size_t data_len);
|
||||
|
Loading…
Reference in New Issue
Block a user