9
9
// Created by Thomas Ruffie on 29/7/2024.
10
10
//
11
11
12
+
12
13
extern " C"
13
14
JNIEXPORT jobject JNICALL
14
15
Java_network_loki_messenger_libsession_1util_util_BlindKeyAPI_blindVersionKeyPair (JNIEnv *env,
15
16
jobject thiz,
16
17
jbyteArray ed25519_secret_key) {
17
18
return jni_utils::run_catching_cxx_exception_or_throws<jobject>(env, [=] {
18
19
const auto [pk, sk] = session::blind_version_key_pair (util::vector_from_bytes (env, ed25519_secret_key));
19
-
20
- jclass kp_class = env->FindClass (" network/loki/messenger/libsession_util/util/KeyPair" );
21
- jmethodID kp_constructor = env->GetMethodID (kp_class, " <init>" , " ([B[B)V" );
22
- 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 ()}));
20
+ return jni_utils::new_key_pair (env, util::bytes_from_span (env, pk), util::bytes_from_span (env, sk));
23
21
});
24
22
}
25
23
extern " C"
@@ -29,7 +27,11 @@ Java_network_loki_messenger_libsession_1util_util_BlindKeyAPI_blindVersionSign(J
29
27
jbyteArray ed25519_secret_key,
30
28
jlong timestamp) {
31
29
return jni_utils::run_catching_cxx_exception_or_throws<jbyteArray>(env, [=] {
32
- auto bytes = session::blind_version_sign (util::vector_from_bytes (env, ed25519_secret_key), session::Platform::android, timestamp);
30
+ auto bytes = session::blind_version_sign (
31
+ jni_utils::JavaByteArrayRef (env, ed25519_secret_key).get (),
32
+ session::Platform::android,
33
+ timestamp
34
+ );
33
35
return util::bytes_from_vector (env, bytes);
34
36
});
35
37
}
@@ -46,16 +48,63 @@ Java_network_loki_messenger_libsession_1util_util_BlindKeyAPI_blindVersionSignRe
46
48
return jni_utils::run_catching_cxx_exception_or_throws<jbyteArray>(env, [=] {
47
49
auto methodC = util::string_from_jstring (env, method);
48
50
auto pathC = util::string_from_jstring (env, path);
49
- auto keyBytes = util::vector_from_bytes (env, ed25519_secret_key);
50
- auto bodyBytes = body ? std::optional (util::vector_from_bytes (env, body)) : std::nullopt ;
51
51
52
52
auto bytes = session::blind_version_sign_request (
53
- session::to_span (keyBytes ),
53
+ jni_utils::JavaByteArrayRef (env, ed25519_secret_key). get ( ),
54
54
timestamp,
55
55
methodC,
56
56
pathC,
57
- body ? std::optional ( session::to_span (*bodyBytes )) : std::nullopt
57
+ body ? std::make_optional ( jni_utils::JavaByteArrayRef (env, body). get ( )) : std::nullopt
58
58
);
59
59
return util::bytes_from_vector (env, bytes);
60
60
});
61
+ }
62
+
63
+ extern " C"
64
+ JNIEXPORT jobject JNICALL
65
+ Java_network_loki_messenger_libsession_1util_util_BlindKeyAPI_blind15KeyPair (JNIEnv *env,
66
+ jobject thiz,
67
+ jbyteArray ed25519_secret_key,
68
+ jbyteArray server_pub_key) {
69
+ return jni_utils::run_catching_cxx_exception_or_throws<jobject>(env, [=] {
70
+ auto [pk, sk] = session::blind15_key_pair (
71
+ jni_utils::JavaByteArrayRef (env, ed25519_secret_key).get (),
72
+ jni_utils::JavaByteArrayRef (env, server_pub_key).get ()
73
+ );
74
+ return jni_utils::new_key_pair (env, util::bytes_from_span (env, pk), util::bytes_from_span (env, sk));
75
+ });
76
+ }
77
+
78
+ extern " C"
79
+ JNIEXPORT jbyteArray JNICALL
80
+ Java_network_loki_messenger_libsession_1util_util_BlindKeyAPI_blind15Sign (JNIEnv *env, jobject thiz,
81
+ jbyteArray ed25519_secret_key,
82
+ jstring server_pub_key,
83
+ jbyteArray message) {
84
+ return jni_utils::run_catching_cxx_exception_or_throws<jbyteArray>(env, [=] {
85
+ auto data = session::blind15_sign (
86
+ jni_utils::JavaByteArrayRef (env, ed25519_secret_key).get (),
87
+ jni_utils::JavaStringRef (env, server_pub_key).view (),
88
+ jni_utils::JavaByteArrayRef (env, message).get ()
89
+ );
90
+ return util::bytes_from_vector (env, data);
91
+ });
92
+ }
93
+
94
+ extern " C"
95
+ JNIEXPORT jboolean JNICALL
96
+ Java_network_loki_messenger_libsession_1util_util_BlindKeyAPI_sessionIdMatchesBlindedId (JNIEnv *env,
97
+ jobject thiz,
98
+ jstring session_id,
99
+ jstring blinded_id,
100
+ jstring server_pub_key) {
101
+ return jni_utils::run_catching_cxx_exception_or<jboolean>([=]() -> jboolean {
102
+ return session::session_id_matches_blinded_id (
103
+ jni_utils::JavaStringRef (env, session_id).view (),
104
+ jni_utils::JavaStringRef (env, blinded_id).view (),
105
+ jni_utils::JavaStringRef (env, server_pub_key).view ()
106
+ );
107
+ }, [](const char *) -> jboolean {
108
+ return false ;
109
+ });
61
110
}
0 commit comments