mirror of
https://github.com/oxen-io/session-android.git
synced 2025-12-31 11:06:13 +00:00
feat: finish most wrappers and compile issues, start new closed group compose code
This commit is contained in:
@@ -601,7 +601,7 @@ class InstrumentedTests {
|
||||
assertEquals("New Group", infoConf.getName())
|
||||
infoConf.setCreated(System.currentTimeMillis())
|
||||
assertThat(infoConf.getCreated(), notNullValue())
|
||||
val memberConf = GroupMemberConfig.newInstance(groupPublic, groupSecret)
|
||||
val memberConf = GroupMembersConfig.newInstance(groupPublic, groupSecret)
|
||||
memberConf.set(
|
||||
GroupMember(
|
||||
sessionId = "05"+Hex.toStringCondensed(userCurve),
|
||||
@@ -637,7 +637,7 @@ class InstrumentedTests {
|
||||
assertEquals("New Group", infoConf.getName())
|
||||
infoConf.setCreated(System.currentTimeMillis())
|
||||
assertThat(infoConf.getCreated(), notNullValue())
|
||||
val memberConf = GroupMemberConfig.newInstance(groupPublic, groupSecret)
|
||||
val memberConf = GroupMembersConfig.newInstance(groupPublic, groupSecret)
|
||||
memberConf.set(
|
||||
GroupMember(
|
||||
sessionId = "05"+Hex.toStringCondensed(userCurve),
|
||||
|
||||
@@ -177,3 +177,11 @@ Java_network_loki_messenger_libsession_1util_GroupInfoConfig_storageNamespace(JN
|
||||
auto group_info = ptrToInfo(env, thiz);
|
||||
return static_cast<jlong>(group_info->storage_namespace());
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jobject JNICALL
|
||||
Java_network_loki_messenger_libsession_1util_GroupInfoConfig_id(JNIEnv *env, jobject thiz) {
|
||||
std::lock_guard guard{util::util_mutex_};
|
||||
auto group_info = ptrToInfo(env, thiz);
|
||||
return util::serialize_session_id(env, group_info->id);
|
||||
}
|
||||
@@ -65,6 +65,7 @@ Java_network_loki_messenger_libsession_1util_GroupKeysConfig_groupKeys(JNIEnv *e
|
||||
extern "C"
|
||||
JNIEXPORT void JNICALL
|
||||
Java_network_loki_messenger_libsession_1util_GroupKeysConfig_loadKey(JNIEnv *env, jobject thiz,
|
||||
jstring hash,
|
||||
jbyteArray data,
|
||||
jbyteArray msg_id,
|
||||
jlong timestamp_ms,
|
||||
@@ -72,11 +73,13 @@ Java_network_loki_messenger_libsession_1util_GroupKeysConfig_loadKey(JNIEnv *env
|
||||
jobject members_jobject) {
|
||||
std::lock_guard lock{util::util_mutex_};
|
||||
auto keys = ptrToKeys(env, thiz);
|
||||
auto hash_bytes = env->GetStringUTFChars(hash, nullptr);
|
||||
auto data_bytes = util::ustring_from_bytes(env, data);
|
||||
auto msg_bytes = util::ustring_from_bytes(env, msg_id);
|
||||
auto info = ptrToInfo(env, info_jobject);
|
||||
auto members = ptrToMembers(env, members_jobject);
|
||||
keys->load_key_message(data_bytes, timestamp_ms, *info, *members);
|
||||
keys->load_key_message(hash_bytes, data_bytes, timestamp_ms, *info, *members);
|
||||
env->ReleaseStringUTFChars(hash, hash_bytes);
|
||||
}
|
||||
|
||||
extern "C"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jobject JNICALL
|
||||
Java_network_loki_messenger_libsession_1util_GroupMemberConfig_00024Companion_newInstance(
|
||||
Java_network_loki_messenger_libsession_1util_GroupMembersConfig_00024Companion_newInstance(
|
||||
JNIEnv *env, jobject thiz, jbyteArray pub_key, jbyteArray secret_key,
|
||||
jbyteArray initial_dump) {
|
||||
std::lock_guard lock{util::util_mutex_};
|
||||
@@ -20,7 +20,7 @@ Java_network_loki_messenger_libsession_1util_GroupMemberConfig_00024Companion_ne
|
||||
|
||||
auto* group_members = new session::config::groups::Members(pub_key_bytes, secret_key_optional, initial_dump_optional);
|
||||
|
||||
jclass groupMemberClass = env->FindClass("network/loki/messenger/libsession_util/GroupMemberConfig");
|
||||
jclass groupMemberClass = env->FindClass("network/loki/messenger/libsession_util/GroupMembersConfig");
|
||||
jmethodID constructor = env->GetMethodID(groupMemberClass, "<init>", "(J)V");
|
||||
jobject newConfig = env->NewObject(groupMemberClass, constructor, reinterpret_cast<jlong>(group_members));
|
||||
|
||||
@@ -29,7 +29,7 @@ Java_network_loki_messenger_libsession_1util_GroupMemberConfig_00024Companion_ne
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jobject JNICALL
|
||||
Java_network_loki_messenger_libsession_1util_GroupMemberConfig_all(JNIEnv *env, jobject thiz) {
|
||||
Java_network_loki_messenger_libsession_1util_GroupMembersConfig_all(JNIEnv *env, jobject thiz) {
|
||||
std::lock_guard lock{util::util_mutex_};
|
||||
auto config = ptrToMembers(env, thiz);
|
||||
jclass stack = env->FindClass("java/util/Stack");
|
||||
@@ -45,8 +45,8 @@ Java_network_loki_messenger_libsession_1util_GroupMemberConfig_all(JNIEnv *env,
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_network_loki_messenger_libsession_1util_GroupMemberConfig_erase(JNIEnv *env, jobject thiz,
|
||||
jobject group_member) {
|
||||
Java_network_loki_messenger_libsession_1util_GroupMembersConfig_erase(JNIEnv *env, jobject thiz,
|
||||
jobject group_member) {
|
||||
auto config = ptrToMembers(env, thiz);
|
||||
auto member = util::deserialize_group_member(env, group_member);
|
||||
return config->erase(member.session_id);
|
||||
@@ -54,8 +54,8 @@ Java_network_loki_messenger_libsession_1util_GroupMemberConfig_erase(JNIEnv *env
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jobject JNICALL
|
||||
Java_network_loki_messenger_libsession_1util_GroupMemberConfig_get(JNIEnv *env, jobject thiz,
|
||||
jstring pub_key_hex) {
|
||||
Java_network_loki_messenger_libsession_1util_GroupMembersConfig_get(JNIEnv *env, jobject thiz,
|
||||
jstring pub_key_hex) {
|
||||
std::lock_guard lock{util::util_mutex_};
|
||||
auto config = ptrToMembers(env, thiz);
|
||||
auto pub_key_bytes = env->GetStringUTFChars(pub_key_hex, nullptr);
|
||||
@@ -70,9 +70,9 @@ Java_network_loki_messenger_libsession_1util_GroupMemberConfig_get(JNIEnv *env,
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jobject JNICALL
|
||||
Java_network_loki_messenger_libsession_1util_GroupMemberConfig_getOrConstruct(JNIEnv *env,
|
||||
jobject thiz,
|
||||
jstring pub_key_hex) {
|
||||
Java_network_loki_messenger_libsession_1util_GroupMembersConfig_getOrConstruct(JNIEnv *env,
|
||||
jobject thiz,
|
||||
jstring pub_key_hex) {
|
||||
std::lock_guard lock{util::util_mutex_};
|
||||
auto config = ptrToMembers(env, thiz);
|
||||
auto pub_key_bytes = env->GetStringUTFChars(pub_key_hex, nullptr);
|
||||
@@ -84,8 +84,8 @@ Java_network_loki_messenger_libsession_1util_GroupMemberConfig_getOrConstruct(JN
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT void JNICALL
|
||||
Java_network_loki_messenger_libsession_1util_GroupMemberConfig_set(JNIEnv *env, jobject thiz,
|
||||
jobject group_member) {
|
||||
Java_network_loki_messenger_libsession_1util_GroupMembersConfig_set(JNIEnv *env, jobject thiz,
|
||||
jobject group_member) {
|
||||
std::lock_guard lock{util::util_mutex_};
|
||||
auto config = ptrToMembers(env, thiz);
|
||||
auto deserialized = util::deserialize_group_member(env, group_member);
|
||||
|
||||
@@ -10,6 +10,8 @@ import network.loki.messenger.libsession_util.util.UserPic
|
||||
import org.session.libsignal.protos.SignalServiceProtos.SharedConfigMessage.Kind
|
||||
import org.session.libsignal.utilities.IdPrefix
|
||||
import org.session.libsignal.utilities.Log
|
||||
import org.session.libsignal.utilities.SessionId
|
||||
import java.io.Closeable
|
||||
import java.util.Stack
|
||||
|
||||
|
||||
@@ -27,7 +29,7 @@ sealed class ConfigBase(protected val /* yucky */ pointer: Long) {
|
||||
is UserGroupsConfig -> Kind.GROUPS
|
||||
is GroupInfoConfig -> Kind.CLOSED_GROUP_INFO
|
||||
is GroupKeysConfig -> Kind.ENCRYPTION_KEYS
|
||||
is GroupMemberConfig -> Kind.CLOSED_GROUP_MEMBERS
|
||||
is GroupMembersConfig -> Kind.CLOSED_GROUP_MEMBERS
|
||||
}
|
||||
|
||||
// TODO: time in future to activate (hardcoded to 1st jan 2024 for testing, change before release)
|
||||
@@ -217,7 +219,7 @@ class UserGroupsConfig(pointer: Long): ConfigBase(pointer) {
|
||||
external fun createGroup(): GroupInfo.ClosedGroupInfo
|
||||
}
|
||||
|
||||
class GroupInfoConfig(pointer: Long): ConfigBase(pointer) {
|
||||
class GroupInfoConfig(pointer: Long): ConfigBase(pointer), Closeable {
|
||||
companion object {
|
||||
init {
|
||||
System.loadLibrary("session_util")
|
||||
@@ -229,6 +231,7 @@ class GroupInfoConfig(pointer: Long): ConfigBase(pointer) {
|
||||
initialDump: ByteArray = byteArrayOf()
|
||||
): GroupInfoConfig
|
||||
}
|
||||
external fun id(): SessionId
|
||||
external fun destroyGroup()
|
||||
external fun getCreated(): Long?
|
||||
external fun getDeleteAttachmentsBefore(): Long?
|
||||
@@ -244,9 +247,12 @@ class GroupInfoConfig(pointer: Long): ConfigBase(pointer) {
|
||||
external fun setName(newName: String)
|
||||
external fun setProfilePic(newProfilePic: UserPic)
|
||||
external fun storageNamespace(): Long
|
||||
override fun close() {
|
||||
free()
|
||||
}
|
||||
}
|
||||
|
||||
class GroupMemberConfig(pointer: Long): ConfigBase(pointer) {
|
||||
class GroupMembersConfig(pointer: Long): ConfigBase(pointer), Closeable {
|
||||
companion object {
|
||||
init {
|
||||
System.loadLibrary("session_util")
|
||||
@@ -255,16 +261,19 @@ class GroupMemberConfig(pointer: Long): ConfigBase(pointer) {
|
||||
pubKey: ByteArray,
|
||||
secretKey: ByteArray = byteArrayOf(),
|
||||
initialDump: ByteArray = byteArrayOf()
|
||||
): GroupMemberConfig
|
||||
): GroupMembersConfig
|
||||
}
|
||||
external fun all(): Stack<GroupMember>
|
||||
external fun erase(groupMember: GroupMember): Boolean
|
||||
external fun get(pubKeyHex: String): GroupMember?
|
||||
external fun getOrConstruct(pubKeyHex: String): GroupMember
|
||||
external fun set(groupMember: GroupMember)
|
||||
override fun close() {
|
||||
free()
|
||||
}
|
||||
}
|
||||
|
||||
class GroupKeysConfig(pointer: Long): ConfigBase(pointer) {
|
||||
class GroupKeysConfig(pointer: Long): ConfigBase(pointer), Closeable {
|
||||
companion object {
|
||||
init {
|
||||
System.loadLibrary("session_util")
|
||||
@@ -275,17 +284,21 @@ class GroupKeysConfig(pointer: Long): ConfigBase(pointer) {
|
||||
groupSecretKey: ByteArray = byteArrayOf(),
|
||||
initialDump: ByteArray = byteArrayOf(),
|
||||
info: GroupInfoConfig,
|
||||
members: GroupMemberConfig
|
||||
members: GroupMembersConfig
|
||||
): GroupKeysConfig
|
||||
}
|
||||
external fun groupKeys(): Stack<ByteArray>
|
||||
external fun loadKey(data: ByteArray,
|
||||
external fun loadKey(hash: String,
|
||||
data: ByteArray,
|
||||
msgId: ByteArray,
|
||||
timestampMs: Long,
|
||||
info: GroupInfoConfig,
|
||||
members: GroupMemberConfig)
|
||||
members: GroupMembersConfig)
|
||||
external fun needsRekey(): Boolean
|
||||
external fun pendingKey(): ByteArray?
|
||||
external fun pendingPush(): ByteArray?
|
||||
external fun rekey(info: GroupInfoConfig, members: GroupMemberConfig): ByteArray
|
||||
external fun rekey(info: GroupInfoConfig, members: GroupMembersConfig): ByteArray
|
||||
override fun close() {
|
||||
free()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user