Skip to content

Updated to libSession 1.3.0 (and retyping changes for wrapper code) #4

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Show file tree
Hide file tree
Changes from all commits
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
17 changes: 10 additions & 7 deletions library/src/main/cpp/blinded_key.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#include <jni.h>
#include <session/blinding.hpp>
#include <session/util.hpp>

#include "util.h"
#include "jni_utils.h"
Expand All @@ -14,11 +15,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 +29,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 @@ -45,14 +46,16 @@ Java_network_loki_messenger_libsession_1util_util_BlindKeyAPI_blindVersionSignRe
return jni_utils::run_catching_cxx_exception_or_throws<jbyteArray>(env, [=] {
auto methodC = util::string_from_jstring(env, method);
auto pathC = util::string_from_jstring(env, path);
auto keyBytes = util::vector_from_bytes(env, ed25519_secret_key);
auto bodyBytes = body ? std::optional(util::vector_from_bytes(env, body)) : std::nullopt;

auto bytes = session::blind_version_sign_request(
util::ustring_from_bytes(env, ed25519_secret_key),
session::to_span(keyBytes),
timestamp,
methodC,
pathC,
body ? std::optional(util::ustring_from_bytes(env, body)) : std::nullopt
body ? std::optional(session::to_span(*bodyBytes)) : 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);
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