@@ -127,11 +127,13 @@ extern "C"
127127JNIEXPORT jbyteArray JNICALL
128128Java_network_loki_messenger_libsession_1util_GroupKeysConfig_rekey (JNIEnv *env, jobject thiz,
129129 jlong info_ptr, jlong members_ptr) {
130- auto keys = ptrToKeys (env, thiz);
131- auto info = reinterpret_cast <session::config::groups::Info*>(info_ptr);
132- auto members = reinterpret_cast <session::config::groups::Members*>(members_ptr);
133- auto rekey = keys->rekey (*info, *members);
134- return util::bytes_from_span (env, rekey).release ();
130+ return jni_utils::run_catching_cxx_exception_or_throws<jbyteArray>(env, [=] {
131+ auto keys = ptrToKeys (env, thiz);
132+ auto info = reinterpret_cast <session::config::groups::Info*>(info_ptr);
133+ auto members = reinterpret_cast <session::config::groups::Members*>(members_ptr);
134+ auto rekey = keys->rekey (*info, *members);
135+ return util::bytes_from_span (env, rekey).release ();
136+ });
135137}
136138
137139extern " C"
@@ -188,8 +190,9 @@ Java_network_loki_messenger_libsession_1util_GroupKeysConfig_keys(JNIEnv *env, j
188190extern " C"
189191JNIEXPORT jbyteArray JNICALL
190192Java_network_loki_messenger_libsession_1util_GroupKeysConfig_groupEncKey (JNIEnv *env, jobject thiz) {
191- auto ptr = ptrToKeys (env, thiz);
192- return util::bytes_from_span (env, ptr->group_enc_key ()).release ();
193+ return jni_utils::run_catching_cxx_exception_or_throws<jbyteArray>(env, [=] {
194+ return util::bytes_from_span (env, ptrToKeys (env, thiz)->group_enc_key ()).release ();
195+ });
193196}
194197
195198extern " C"
@@ -206,9 +209,11 @@ Java_network_loki_messenger_libsession_1util_GroupKeysConfig_makeSubAccount(JNIE
206209 jstring session_id,
207210 jboolean can_write,
208211 jboolean can_delete) {
209- auto ptr = ptrToKeys (env, thiz);
210- auto new_subaccount_key = ptr->swarm_make_subaccount (jni_utils::JavaStringRef (env, session_id).view (), can_write, can_delete);
211- return util::bytes_from_vector (env, new_subaccount_key).release ();
212+ return jni_utils::run_catching_cxx_exception_or_throws<jbyteArray>(env, [=] {
213+ auto new_subaccount_key = ptrToKeys (env, thiz)->swarm_make_subaccount (
214+ jni_utils::JavaStringRef (env, session_id).view (), can_write, can_delete);
215+ return util::bytes_from_vector (env, new_subaccount_key).release ();
216+ });
212217}
213218
214219extern " C"
@@ -218,18 +223,21 @@ Java_network_loki_messenger_libsession_1util_GroupKeysConfig_getSubAccountToken(
218223 jstring session_id,
219224 jboolean can_write,
220225 jboolean can_delete) {
221- auto ptr = ptrToKeys (env, thiz);
222- auto token = ptr->swarm_subaccount_token (jni_utils::JavaStringRef (env, session_id).view (), can_write, can_delete);
223- return util::bytes_from_vector (env, token).release ();
226+ return jni_utils::run_catching_cxx_exception_or_throws<jbyteArray>(env, [=] {
227+ auto token = ptrToKeys (env, thiz)->swarm_subaccount_token (
228+ jni_utils::JavaStringRef (env, session_id).view (),
229+ can_write, can_delete);
230+ return util::bytes_from_vector (env, token).release ();
231+ });
224232}
225233
226234static jni_utils::JavaLocalRef<jobject> deserialize_swarm_auth (JNIEnv *env, session::config::groups::Keys::swarm_auth auth) {
227235 static jni_utils::BasicJavaClassInfo class_info (
228236 env, " network/loki/messenger/libsession_util/GroupKeysConfig$SwarmAuth" , " (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" );
229237
230- auto sub_account = jni_utils::JavaLocalRef (env, env->NewStringUTF (auth.subaccount .data ()));
231- auto sub_account_sig = jni_utils::JavaLocalRef (env, env->NewStringUTF (auth.subaccount_sig .data ()));
232- auto signature = jni_utils::JavaLocalRef (env, env->NewStringUTF (auth.signature .data ()));
238+ jni_utils::JavaLocalRef sub_account (env, env->NewStringUTF (auth.subaccount .data ()));
239+ jni_utils::JavaLocalRef sub_account_sig (env, env->NewStringUTF (auth.subaccount_sig .data ()));
240+ jni_utils::JavaLocalRef signature (env, env->NewStringUTF (auth.signature .data ()));
233241
234242 return {env, env->NewObject (class_info.java_class , class_info.constructor , sub_account.get (), sub_account_sig.get (), signature.get ())};
235243}
@@ -240,26 +248,35 @@ Java_network_loki_messenger_libsession_1util_GroupKeysConfig_subAccountSign(JNIE
240248 jobject thiz,
241249 jbyteArray message,
242250 jbyteArray signing_value) {
243- auto ptr = ptrToKeys (env, thiz);
244- auto message_vector = util::vector_from_bytes (env, message);
245- auto signing_value_vector = util::vector_from_bytes (env, signing_value);
246- auto swarm_auth = ptr->swarm_subaccount_sign (message_vector, signing_value_vector, false );
247- return deserialize_swarm_auth (env, swarm_auth).release ();
251+ return jni_utils::run_catching_cxx_exception_or_throws<jobject>(env, [=] {
252+ auto ptr = ptrToKeys (env, thiz);
253+ auto message_vector = util::vector_from_bytes (env, message);
254+ auto signing_value_vector = util::vector_from_bytes (env, signing_value);
255+ auto swarm_auth = ptr->swarm_subaccount_sign (message_vector, signing_value_vector, false );
256+ return deserialize_swarm_auth (env, swarm_auth).release ();
257+ });
248258}
249259
250260extern " C"
251261JNIEXPORT jbyteArray JNICALL
252262Java_network_loki_messenger_libsession_1util_GroupKeysConfig_supplementFor (JNIEnv *env,
253263 jobject thiz,
254264 jobjectArray j_user_session_ids) {
255- auto ptr = ptrToKeys (env, thiz);
256- std::vector<std::string> user_session_ids;
257- for (int i = 0 , size = env->GetArrayLength (j_user_session_ids); i < size; i++) {
258- user_session_ids.push_back (jni_utils::JavaStringRef (env, jni_utils::JavaLocalRef (env, (jstring)(env->GetObjectArrayElement (j_user_session_ids, i))).get ()).copy ());
259- }
260- auto supplement = ptr->key_supplement (user_session_ids);
261- return util::bytes_from_vector (env, supplement).release ();
265+ return jni_utils::run_catching_cxx_exception_or_throws<jbyteArray>(env, [=] {
266+ auto ptr = ptrToKeys (env, thiz);
267+ std::vector<std::string> user_session_ids;
268+ for (int i = 0 , size = env->GetArrayLength (j_user_session_ids); i < size; i++) {
269+ jni_utils::JavaLocalRef element (
270+ env, (jstring)(env->GetObjectArrayElement (j_user_session_ids, i)));
271+
272+ user_session_ids.emplace_back (jni_utils::JavaStringRef (env, element.get ()).view ());
273+ }
274+
275+ auto supplement = ptr->key_supplement (user_session_ids);
276+ return util::bytes_from_vector (env, supplement).release ();
277+ });
262278}
279+
263280extern " C"
264281JNIEXPORT jint JNICALL
265282Java_network_loki_messenger_libsession_1util_GroupKeysConfig_currentGeneration (JNIEnv *env,
0 commit comments