Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions library/src/main/cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ cmake_minimum_required(VERSION 3.18.1)

project("session_util")

# Compiles in C++17 mode
set(CMAKE_CXX_STANDARD 17)
# Compiles in C++20 mode
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_FLAGS -Wno-deprecated-declarations)
Expand Down
14 changes: 7 additions & 7 deletions library/src/main/cpp/blinded_key.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ Java_network_loki_messenger_libsession_1util_util_BlindKeyAPI_blindVersionKeyPai
jobject thiz,
jbyteArray ed25519_secret_key) {
return jni_utils::run_catching_cxx_exception_or_throws<jobject>(env, [=] {
const auto [pk, sk] = session::blind_version_key_pair(util::ustring_from_bytes(env, ed25519_secret_key));
const auto [pk, sk] = session::blind_version_key_pair(util::vector_from_bytes(env, ed25519_secret_key));

jclass kp_class = env->FindClass("network/loki/messenger/libsession_util/util/KeyPair");
jmethodID kp_constructor = env->GetMethodID(kp_class, "<init>", "([B[B)V");
return env->NewObject(kp_class, kp_constructor, util::bytes_from_ustring(env, {pk.data(), pk.size()}), util::bytes_from_ustring(env, {sk.data(), sk.size()}));
return env->NewObject(kp_class, kp_constructor, util::bytes_from_vector(env, {pk.data(), pk.data() + pk.size()}), util::bytes_from_vector(env, {sk.data(), sk.data() + sk.size()}));
});
}
extern "C"
Expand All @@ -28,8 +28,8 @@ Java_network_loki_messenger_libsession_1util_util_BlindKeyAPI_blindVersionSign(J
jbyteArray ed25519_secret_key,
jlong timestamp) {
return jni_utils::run_catching_cxx_exception_or_throws<jbyteArray>(env, [=] {
auto bytes = session::blind_version_sign(util::ustring_from_bytes(env, ed25519_secret_key), session::Platform::android, timestamp);
return util::bytes_from_ustring(env, bytes);
auto bytes = session::blind_version_sign(util::vector_from_bytes(env, ed25519_secret_key), session::Platform::android, timestamp);
return util::bytes_from_vector(env, bytes);
});
}

Expand All @@ -47,12 +47,12 @@ Java_network_loki_messenger_libsession_1util_util_BlindKeyAPI_blindVersionSignRe
auto pathC = util::string_from_jstring(env, path);

auto bytes = session::blind_version_sign_request(
util::ustring_from_bytes(env, ed25519_secret_key),
util::span_from_bytes(env, ed25519_secret_key),
timestamp,
methodC,
pathC,
body ? std::optional(util::ustring_from_bytes(env, body)) : std::nullopt
body ? std::optional(util::span_from_bytes(env, body)) : std::nullopt
);
return util::bytes_from_ustring(env, bytes);
return util::bytes_from_vector(env, bytes);
});
}
6 changes: 3 additions & 3 deletions library/src/main/cpp/config_base.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Java_network_loki_messenger_libsession_1util_ConfigBase_push(JNIEnv *env, jobjec
auto to_push_str = std::get<1>(push_tuple);
auto to_delete = std::get<2>(push_tuple);

jbyteArray returnByteArray = util::bytes_from_ustring(env, to_push_str);
jbyteArray returnByteArray = util::bytes_from_vector(env, to_push_str);
jlong seqNo = std::get<0>(push_tuple);
jclass returnObjectClass = env->FindClass("network/loki/messenger/libsession_util/util/ConfigPush");
jclass stackClass = env->FindClass("java/util/Stack");
Expand All @@ -59,7 +59,7 @@ Java_network_loki_messenger_libsession_1util_ConfigBase_dump(JNIEnv *env, jobjec
std::lock_guard lock{util::util_mutex_};
auto config = ptrToConfigBase(env, thiz);
auto dumped = config->dump();
jbyteArray bytes = util::bytes_from_ustring(env, dumped);
jbyteArray bytes = util::bytes_from_vector(env, dumped);
return bytes;
}

Expand Down Expand Up @@ -90,7 +90,7 @@ Java_network_loki_messenger_libsession_1util_ConfigBase_merge___3Lkotlin_Pair_2(
std::lock_guard lock{util::util_mutex_};
auto conf = ptrToConfigBase(env, thiz);
size_t number = env->GetArrayLength(to_merge);
std::vector<std::pair<std::string, session::ustring>> configs = {};
std::vector<std::pair<std::string, std::vector<unsigned char>>> configs = {};
for (int i = 0; i < number; i++) {
auto jElement = (jobject) env->GetObjectArrayElement(to_merge, i);
auto pair = extractHashAndData(env, jElement);
Expand Down
6 changes: 3 additions & 3 deletions library/src/main/cpp/config_base.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ inline session::config::ConfigBase* ptrToConfigBase(JNIEnv *env, jobject obj) {
return (session::config::ConfigBase*) env->GetLongField(obj, pointerField);
}

inline std::pair<std::string, session::ustring> extractHashAndData(JNIEnv *env, jobject kotlin_pair) {
inline std::pair<std::string, std::vector<unsigned char>> extractHashAndData(JNIEnv *env, jobject kotlin_pair) {
jclass pair = env->FindClass("kotlin/Pair");
jfieldID first = env->GetFieldID(pair, "first", "Ljava/lang/Object;");
jfieldID second = env->GetFieldID(pair, "second", "Ljava/lang/Object;");
jstring hash_as_jstring = static_cast<jstring>(env->GetObjectField(kotlin_pair, first));
jbyteArray data_as_jbytes = static_cast<jbyteArray>(env->GetObjectField(kotlin_pair, second));
auto hash_as_string = env->GetStringUTFChars(hash_as_jstring, nullptr);
auto data_as_ustring = util::ustring_from_bytes(env, data_as_jbytes);
auto ret_pair = std::pair<std::string, session::ustring>{hash_as_string, data_as_ustring};
auto data_as_vector = util::vector_from_bytes(env, data_as_jbytes);
auto ret_pair = std::pair<std::string, std::vector<unsigned char>>{hash_as_string, data_as_vector};
env->ReleaseStringUTFChars(hash_as_jstring, hash_as_string);
return ret_pair;
}
Expand Down
4 changes: 2 additions & 2 deletions library/src/main/cpp/config_common.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ Java_network_loki_messenger_libsession_1util_ConfigKt_createConfigObject(
jbyteArray initial_dump) {
return jni_utils::run_catching_cxx_exception_or_throws<jlong>(env, [=] {
auto config_name = util::string_from_jstring(env, java_config_name);
auto secret_key = util::ustring_from_bytes(env, ed25519_secret_key);
auto secret_key = util::vector_from_bytes(env, ed25519_secret_key);
auto initial = initial_dump
? std::optional(util::ustring_from_bytes(env, initial_dump))
? std::optional(util::vector_from_bytes(env, initial_dump))
: std::nullopt;


Expand Down
5 changes: 3 additions & 2 deletions library/src/main/cpp/contacts.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#define SESSION_ANDROID_CONTACTS_H

#include <jni.h>
#include <vector>
#include "session/config/contacts.hpp"
#include "util.h"

Expand Down Expand Up @@ -58,15 +59,15 @@ inline session::config::contact_info deserialize_contact(JNIEnv *env, jobject in
auto expiry_pair = util::deserialize_expiry(env, expiry_mode);

std::string url;
session::ustring key;
std::vector<unsigned char> key;

if (user_pic != nullptr) {
auto deserialized_pic = util::deserialize_user_pic(env, user_pic);
auto url_jstring = deserialized_pic.first;
auto url_bytes = env->GetStringUTFChars(url_jstring, nullptr);
url = std::string(url_bytes);
env->ReleaseStringUTFChars(url_jstring, url_bytes);
key = util::ustring_from_bytes(env, deserialized_pic.second);
key = util::vector_from_bytes(env, deserialized_pic.second);
}

auto account_id_bytes = env->GetStringUTFChars(account_id, nullptr);
Expand Down
4 changes: 2 additions & 2 deletions library/src/main/cpp/conversation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,8 +152,8 @@ Java_network_loki_messenger_libsession_1util_ConversationVolatileConfig_getOrCon
auto convos = ptrToConvoInfo(env, thiz);
auto base_url_chars = env->GetStringUTFChars(base_url, nullptr);
auto room_chars = env->GetStringUTFChars(room, nullptr);
auto pub_key_ustring = util::ustring_from_bytes(env, pub_key);
auto open = convos->get_or_construct_community(base_url_chars, room_chars, pub_key_ustring);
auto pub_key_vector = util::vector_from_bytes(env, pub_key);
auto open = convos->get_or_construct_community(base_url_chars, room_chars, pub_key_vector);
auto serialized = serialize_open_group(env, open);
return serialized;
}
Expand Down
12 changes: 6 additions & 6 deletions library/src/main/cpp/group_info.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@ Java_network_loki_messenger_libsession_1util_GroupInfoConfig_00024Companion_newI
jbyteArray secret_key,
jbyteArray initial_dump) {
std::lock_guard guard{util::util_mutex_};
std::optional<session::ustring> secret_key_optional{std::nullopt};
std::optional<session::ustring> initial_dump_optional{std::nullopt};
auto pub_key_bytes = util::ustring_from_bytes(env, pub_key);
std::optional<std::vector<unsigned char>> secret_key_optional{std::nullopt};
std::optional<std::vector<unsigned char>> initial_dump_optional{std::nullopt};
auto pub_key_bytes = util::vector_from_bytes(env, pub_key);
if (secret_key && env->GetArrayLength(secret_key) > 0) {
auto secret_key_bytes = util::ustring_from_bytes(env, secret_key);
auto secret_key_bytes = util::vector_from_bytes(env, secret_key);
secret_key_optional = secret_key_bytes;
}
if (initial_dump && env->GetArrayLength(initial_dump) > 0) {
auto initial_dump_bytes = util::ustring_from_bytes(env, initial_dump);
auto initial_dump_bytes = util::vector_from_bytes(env, initial_dump);
initial_dump_optional = initial_dump_bytes;
}

Expand Down Expand Up @@ -159,7 +159,7 @@ Java_network_loki_messenger_libsession_1util_GroupInfoConfig_setProfilePic(JNIEn
auto group_info = ptrToInfo(env, thiz);
auto user_pic = util::deserialize_user_pic(env, new_profile_pic);
auto url = env->GetStringUTFChars(user_pic.first, nullptr);
auto key = util::ustring_from_bytes(env, user_pic.second);
auto key = util::vector_from_bytes(env, user_pic.second);
group_info->set_profile_pic(url, key);
env->ReleaseStringUTFChars(user_pic.first, url);
}
Expand Down
54 changes: 27 additions & 27 deletions library/src/main/cpp/group_keys.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,18 @@ Java_network_loki_messenger_libsession_1util_GroupKeysConfig_00024Companion_newI
jlong members_pointer) {
return jni_utils::run_catching_cxx_exception_or_throws<jlong>(env, [=] {
std::lock_guard lock{util::util_mutex_};
auto user_key_bytes = util::ustring_from_bytes(env, user_secret_key);
auto pub_key_bytes = util::ustring_from_bytes(env, group_public_key);
std::optional<session::ustring> secret_key_optional{std::nullopt};
std::optional<session::ustring> initial_dump_optional{std::nullopt};
auto user_key_bytes = util::vector_from_bytes(env, user_secret_key);
auto pub_key_bytes = util::vector_from_bytes(env, group_public_key);
std::optional<std::vector<unsigned char>> secret_key_optional{std::nullopt};
std::optional<std::vector<unsigned char>> initial_dump_optional{std::nullopt};

if (group_secret_key && env->GetArrayLength(group_secret_key) > 0) {
auto secret_key_bytes = util::ustring_from_bytes(env, group_secret_key);
auto secret_key_bytes = util::vector_from_bytes(env, group_secret_key);
secret_key_optional = secret_key_bytes;
}

if (initial_dump && env->GetArrayLength(initial_dump) > 0) {
auto initial_dump_bytes = util::ustring_from_bytes(env, initial_dump);
auto initial_dump_bytes = util::vector_from_bytes(env, initial_dump);
initial_dump_optional = initial_dump_bytes;
}

Expand Down Expand Up @@ -63,7 +63,7 @@ Java_network_loki_messenger_libsession_1util_GroupKeysConfig_groupKeys(JNIEnv *e
jobject our_stack = env->NewObject(stack, init);
jmethodID push = env->GetMethodID(stack, "push", "(Ljava/lang/Object;)Ljava/lang/Object;");
for (auto& key : keys) {
auto key_bytes = util::bytes_from_ustring(env, key.data());
auto key_bytes = util::bytes_from_span(env, key);
env->CallObjectMethod(our_stack, push, key_bytes);
}
return our_stack;
Expand All @@ -79,7 +79,7 @@ Java_network_loki_messenger_libsession_1util_GroupKeysConfig_loadKey(JNIEnv *env
jlong members_ptr) {
std::lock_guard lock{util::util_mutex_};
auto keys = ptrToKeys(env, thiz);
auto message_bytes = util::ustring_from_bytes(env, message);
auto message_bytes = util::vector_from_bytes(env, message);
auto hash_bytes = env->GetStringUTFChars(hash, nullptr);
auto info = reinterpret_cast<session::config::groups::Info*>(info_ptr);
auto members = reinterpret_cast<session::config::groups::Members*>(members_ptr);
Expand Down Expand Up @@ -119,7 +119,7 @@ Java_network_loki_messenger_libsession_1util_GroupKeysConfig_pendingKey(JNIEnv *
if (!pending) {
return nullptr;
}
auto pending_bytes = util::bytes_from_ustring(env, *pending);
auto pending_bytes = util::bytes_from_span(env, *pending);
return pending_bytes;
}

Expand All @@ -133,7 +133,7 @@ Java_network_loki_messenger_libsession_1util_GroupKeysConfig_pendingConfig(JNIEn
if (!pending) {
return nullptr;
}
auto pending_bytes = util::bytes_from_ustring(env, *pending);
auto pending_bytes = util::bytes_from_span(env, *pending);
return pending_bytes;
}

Expand All @@ -146,7 +146,7 @@ Java_network_loki_messenger_libsession_1util_GroupKeysConfig_rekey(JNIEnv *env,
auto info = reinterpret_cast<session::config::groups::Info*>(info_ptr);
auto members = reinterpret_cast<session::config::groups::Members*>(members_ptr);
auto rekey = keys->rekey(*info, *members);
auto rekey_bytes = util::bytes_from_ustring(env, rekey.data());
auto rekey_bytes = util::bytes_from_span(env, rekey.data());
return rekey_bytes;
}

Expand All @@ -156,7 +156,7 @@ Java_network_loki_messenger_libsession_1util_GroupKeysConfig_dump(JNIEnv *env, j
std::lock_guard lock{util::util_mutex_};
auto keys = ptrToKeys(env, thiz);
auto dump = keys->dump();
auto byte_array = util::bytes_from_ustring(env, dump);
auto byte_array = util::bytes_from_vector(env, dump);
return byte_array;
}

Expand All @@ -175,9 +175,9 @@ Java_network_loki_messenger_libsession_1util_GroupKeysConfig_encrypt(JNIEnv *env
return jni_utils::run_catching_cxx_exception_or_throws<jbyteArray>(env, [=] {
std::lock_guard lock{util::util_mutex_};
auto ptr = ptrToKeys(env, thiz);
auto plaintext_ustring = util::ustring_from_bytes(env, plaintext);
auto enc = ptr->encrypt_message(plaintext_ustring);
return util::bytes_from_ustring(env, enc);
auto plaintext_vector = util::vector_from_bytes(env, plaintext);
auto enc = ptr->encrypt_message(plaintext_vector);
return util::bytes_from_vector(env, enc);
});
}

Expand All @@ -188,11 +188,11 @@ Java_network_loki_messenger_libsession_1util_GroupKeysConfig_decrypt(JNIEnv *env
return jni_utils::run_catching_cxx_exception_or_throws<jobject>(env, [=] {
std::lock_guard lock{util::util_mutex_};
auto ptr = ptrToKeys(env, thiz);
auto ciphertext_ustring = util::ustring_from_bytes(env, ciphertext);
auto decrypted = ptr->decrypt_message(ciphertext_ustring);
auto ciphertext_vector = util::vector_from_bytes(env, ciphertext);
auto decrypted = ptr->decrypt_message(ciphertext_vector);
auto sender = decrypted.first;
auto plaintext = decrypted.second;
auto plaintext_bytes = util::bytes_from_ustring(env, plaintext);
auto plaintext_bytes = util::bytes_from_vector(env, plaintext);
auto sender_session_id = util::jstringFromOptional(env, sender.data());
auto pair_class = env->FindClass("kotlin/Pair");
auto pair_constructor = env->GetMethodID(pair_class, "<init>", "(Ljava/lang/Object;Ljava/lang/Object;)V");
Expand All @@ -212,7 +212,7 @@ Java_network_loki_messenger_libsession_1util_GroupKeysConfig_keys(JNIEnv *env, j
jobject our_stack = env->NewObject(stack, init);
jmethodID push = env->GetMethodID(stack, "push", "(Ljava/lang/Object;)Ljava/lang/Object;");
for (auto& key : keys) {
auto key_bytes = util::bytes_from_ustring(env, key);
auto key_bytes = util::bytes_from_span(env, key);
env->CallObjectMethod(our_stack, push, key_bytes);
}
return our_stack;
Expand Down Expand Up @@ -246,7 +246,7 @@ Java_network_loki_messenger_libsession_1util_GroupKeysConfig_makeSubAccount(JNIE
auto ptr = ptrToKeys(env, thiz);
auto deserialized_id = util::string_from_jstring(env, session_id);
auto new_subaccount_key = ptr->swarm_make_subaccount(deserialized_id.data(), can_write, can_delete);
auto jbytes = util::bytes_from_ustring(env, new_subaccount_key);
auto jbytes = util::bytes_from_vector(env, new_subaccount_key);
return jbytes;
}

Expand All @@ -261,7 +261,7 @@ Java_network_loki_messenger_libsession_1util_GroupKeysConfig_getSubAccountToken(
auto ptr = ptrToKeys(env, thiz);
auto deserialized_id = util::string_from_jstring(env, session_id);
auto token = ptr->swarm_subaccount_token(deserialized_id, can_write, can_delete);
auto jbytes = util::bytes_from_ustring(env, token);
auto jbytes = util::bytes_from_vector(env, token);
return jbytes;
}

Expand All @@ -273,9 +273,9 @@ Java_network_loki_messenger_libsession_1util_GroupKeysConfig_subAccountSign(JNIE
jbyteArray signing_value) {
std::lock_guard lock{util::util_mutex_};
auto ptr = ptrToKeys(env, thiz);
auto message_ustring = util::ustring_from_bytes(env, message);
auto signing_value_ustring = util::ustring_from_bytes(env, signing_value);
auto swarm_auth = ptr->swarm_subaccount_sign(message_ustring, signing_value_ustring, false);
auto message_vector = util::vector_from_bytes(env, message);
auto signing_value_vector = util::vector_from_bytes(env, signing_value);
auto swarm_auth = ptr->swarm_subaccount_sign(message_vector, signing_value_vector, false);
return util::deserialize_swarm_auth(env, swarm_auth);
}

Expand All @@ -291,7 +291,7 @@ Java_network_loki_messenger_libsession_1util_GroupKeysConfig_supplementFor(JNIEn
user_session_ids.push_back(util::string_from_jstring(env, (jstring)(env->GetObjectArrayElement(j_user_session_ids, i))));
}
auto supplement = ptr->key_supplement(user_session_ids);
return util::bytes_from_ustring(env, supplement);
return util::bytes_from_vector(env, supplement);
}
extern "C"
JNIEXPORT jint JNICALL
Expand Down Expand Up @@ -326,11 +326,11 @@ Java_network_loki_messenger_libsession_1util_GroupKeysConfig_loadAdminKey(JNIEnv
jlong members_ptr) {
std::lock_guard lock{util::util_mutex_};
auto ptr = ptrToKeys(env, thiz);
auto admin_key_ustring = util::ustring_from_bytes(env, admin_key);
auto admin_key_vector = util::vector_from_bytes(env, admin_key);
auto info = reinterpret_cast<session::config::groups::Info*>(info_ptr);
auto members = reinterpret_cast<session::config::groups::Members*>(members_ptr);

jni_utils::run_catching_cxx_exception_or_throws<void>(env, [&] {
ptr->load_admin_key(admin_key_ustring, *info, *members);
ptr->load_admin_key(admin_key_vector, *info, *members);
});
}
Loading
Loading