Skip to content

Commit 43c5417

Browse files
SessionHero01SessionHero01
authored andcommitted
Tidy up multi encrypt
1 parent 62079e2 commit 43c5417

File tree

4 files changed

+23
-44
lines changed

4 files changed

+23
-44
lines changed

library/src/main/cpp/curve25519.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,15 @@ Java_network_loki_messenger_libsession_1util_Curve25519_fromED25519(JNIEnv *env,
1313

1414
return jni_utils::new_key_pair(env, util::bytes_from_span(env, pk), util::bytes_from_span(env, sk));
1515
});
16+
}
17+
18+
19+
extern "C"
20+
JNIEXPORT jbyteArray JNICALL
21+
Java_network_loki_messenger_libsession_1util_Curve25519_pubKeyFromED25519(JNIEnv *env, jobject thiz,
22+
jbyteArray ed25519_public_key) {
23+
return jni_utils::run_catching_cxx_exception_or_throws<jbyteArray>(env, [=] {
24+
auto pk = session::curve25519::to_curve25519_pubkey(jni_utils::JavaByteArrayRef(env, ed25519_public_key).get());
25+
return util::bytes_from_span(env, pk);
26+
});
1627
}

library/src/main/cpp/util.cpp

Lines changed: 7 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -173,43 +173,10 @@ namespace util {
173173
}
174174
}
175175

176-
extern "C"
177-
JNIEXPORT jobject JNICALL
178-
Java_network_loki_messenger_libsession_1util_util_Sodium_ed25519KeyPair(JNIEnv *env, jobject thiz, jbyteArray seed) {
179-
std::array<unsigned char, 32> ed_pk; // NOLINT(cppcoreguidelines-pro-type-member-init)
180-
std::array<unsigned char, 64> ed_sk; // NOLINT(cppcoreguidelines-pro-type-member-init)
181-
auto seed_bytes = util::vector_from_bytes(env, seed);
182-
crypto_sign_ed25519_seed_keypair(ed_pk.data(), ed_sk.data(), seed_bytes.data());
183-
184-
auto kp_class = jni_utils::JavaLocalRef(env, env->FindClass("network/loki/messenger/libsession_util/util/KeyPair"));
185-
jmethodID kp_constructor = env->GetMethodID(kp_class.get(), "<init>", "(Lnetwork/loki/messenger/libsession_util/util/Bytes;Lnetwork/loki/messenger/libsession_util/util/Bytes;)V");
186-
187-
return env->NewObject(kp_class.get(), kp_constructor,
188-
jni_utils::JavaLocalRef(env, jni_utils::session_bytes_from_range(env, ed_pk)).get(),
189-
jni_utils::JavaLocalRef(env, jni_utils::session_bytes_from_range(env, ed_sk)).get()
190-
);
191-
}
192-
193-
extern "C"
194-
JNIEXPORT jbyteArray JNICALL
195-
Java_network_loki_messenger_libsession_1util_util_Sodium_ed25519PkToCurve25519(JNIEnv *env,
196-
jobject thiz,
197-
jbyteArray pk) {
198-
auto ed_pk = util::vector_from_bytes(env, pk);
199-
std::array<unsigned char, 32> curve_pk; // NOLINT(cppcoreguidelines-pro-type-member-init)
200-
int success = crypto_sign_ed25519_pk_to_curve25519(curve_pk.data(), ed_pk.data());
201-
if (success != 0) {
202-
jclass exception = env->FindClass("java/lang/Exception");
203-
env->ThrowNew(exception, "Invalid crypto_sign_ed25519_pk_to_curve25519 operation");
204-
return nullptr;
205-
}
206-
jbyteArray curve_pk_jarray = util::bytes_from_span(env, std::span<const unsigned char> {curve_pk.data(), curve_pk.size()});
207-
return curve_pk_jarray;
208-
}
209176

210177
extern "C"
211178
JNIEXPORT jbyteArray JNICALL
212-
Java_network_loki_messenger_libsession_1util_util_Sodium_encryptForMultipleSimple(
179+
Java_network_loki_messenger_libsession_1util_util_MultiEncrypt_encryptForMultipleSimple(
213180
JNIEnv *env, jobject thiz, jobjectArray messages, jobjectArray recipients,
214181
jbyteArray ed25519_secret_key, jstring domain) {
215182
// messages and recipients have to be the same size
@@ -258,12 +225,12 @@ Java_network_loki_messenger_libsession_1util_util_Sodium_encryptForMultipleSimpl
258225

259226
extern "C"
260227
JNIEXPORT jbyteArray JNICALL
261-
Java_network_loki_messenger_libsession_1util_util_Sodium_decryptForMultipleSimple(JNIEnv *env,
262-
jobject thiz,
263-
jbyteArray encoded,
264-
jbyteArray secret_key,
265-
jbyteArray sender_pub_key,
266-
jstring domain) {
228+
Java_network_loki_messenger_libsession_1util_util_MultiEncrypt_decryptForMultipleSimple(JNIEnv *env,
229+
jobject thiz,
230+
jbyteArray encoded,
231+
jbyteArray secret_key,
232+
jbyteArray sender_pub_key,
233+
jstring domain) {
267234
auto sk_vector = util::vector_from_bytes(env, secret_key);
268235
auto encoded_vector = util::vector_from_bytes(env, encoded);
269236
auto pub_vector = util::vector_from_bytes(env, sender_pub_key);

library/src/main/java/network/loki/messenger/libsession_util/Curve25519.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,8 @@ object Curve25519 : LibSessionUtilCApi() {
1313
ed25519PublicKey = keyPair.pubKey.data,
1414
ed25519PrivateKey = keyPair.secretKey.data
1515
)
16+
17+
external fun pubKeyFromED25519(
18+
ed25519PublicKey: ByteArray,
19+
): ByteArray
1620
}

library/src/main/java/network/loki/messenger/libsession_util/util/Sodium.kt renamed to library/src/main/java/network/loki/messenger/libsession_util/util/MultiEncrypt.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,10 @@ package network.loki.messenger.libsession_util.util
33
import network.loki.messenger.libsession_util.LibSessionUtilCApi
44

55

6-
object Sodium : LibSessionUtilCApi() {
6+
object MultiEncrypt : LibSessionUtilCApi() {
77

88
const val KICKED_DOMAIN = "SessionGroupKickedMessage"
99

10-
external fun ed25519KeyPair(seed: ByteArray): KeyPair
11-
external fun ed25519PkToCurve25519(pk: ByteArray): ByteArray
12-
1310
external fun encryptForMultipleSimple(
1411
messages: Array<ByteArray>,
1512
recipients: Array<ByteArray>,

0 commit comments

Comments
 (0)