1 //
2 // Copyright 2020-2021 Signal Messenger, LLC.
3 // SPDX-License-Identifier: AGPL-3.0-only
4 //
5 
6 #![allow(clippy::missing_safety_doc)]
7 #![deny(clippy::unwrap_used)]
8 
9 use jni::objects::JClass;
10 use jni::sys::{jbyteArray, jlongArray};
11 use jni::JNIEnv;
12 use std::convert::TryFrom;
13 
14 use libsignal_bridge::jni::*;
15 use libsignal_protocol::*;
16 
17 pub mod logging;
18 
19 #[no_mangle]
Java_org_signal_client_internal_Native_IdentityKeyPair_1Deserialize( env: JNIEnv, _class: JClass, data: jbyteArray, ) -> jlongArray20 pub unsafe extern "C" fn Java_org_signal_client_internal_Native_IdentityKeyPair_1Deserialize(
21     env: JNIEnv,
22     _class: JClass,
23     data: jbyteArray,
24 ) -> jlongArray {
25     run_ffi_safe(&env, || {
26         let data = env.convert_byte_array(data)?;
27         let key = IdentityKeyPair::try_from(data.as_ref())?;
28 
29         let public_key_handle = box_object(Ok(*key.identity_key().public_key()))?;
30         let private_key_handle = box_object(Ok(*key.private_key()))?;
31         let tuple = [public_key_handle, private_key_handle];
32 
33         let result = env.new_long_array(2)?;
34         env.set_long_array_region(result, 0, &tuple)?;
35         Ok(result)
36     })
37 }
38