aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitmodules2
m---------plugins/signal-protocol/libsignal-protocol-c0
-rw-r--r--plugins/signal-protocol/src/store.vala14
-rw-r--r--plugins/signal-protocol/vapi/signal-protocol-native.vapi10
-rw-r--r--plugins/signal-protocol/vapi/signal-protocol-public.vapi3
5 files changed, 16 insertions, 13 deletions
diff --git a/.gitmodules b/.gitmodules
index bf8fe006..02c33f98 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,4 +1,4 @@
[submodule "libsignal-protocol-c"]
path = plugins/signal-protocol/libsignal-protocol-c
url = https://github.com/WhisperSystems/libsignal-protocol-c.git
- branch = e59089a644ca747ed50442eb8804266618f11c0b
+ branch = v2.3.2
diff --git a/plugins/signal-protocol/libsignal-protocol-c b/plugins/signal-protocol/libsignal-protocol-c
-Subproject e59089a644ca747ed50442eb8804266618f11c0
+Subproject 4a137eaf4eb4421949e2e1dde9f11ec7bc07b88
diff --git a/plugins/signal-protocol/src/store.vala b/plugins/signal-protocol/src/store.vala
index 8a0e5853..2e277478 100644
--- a/plugins/signal-protocol/src/store.vala
+++ b/plugins/signal-protocol/src/store.vala
@@ -142,21 +142,22 @@ public class Store : Object {
return 0;
}
- static int ss_load_session_func(out Buffer? buffer, Address address, void* user_data) {
+ static int ss_load_session_func(out Buffer? record, out Buffer? user_record, Address address, void* user_data) {
Store store = (Store) user_data;
uint8[]? res = null;
try {
res = store.session_store.load_session(address);
} catch (Error e) {
- buffer = null;
+ record = null;
return e.code;
}
if (res == null) {
- buffer = null;
+ record = null;
return 0;
}
- buffer = new Buffer.from((!)res);
- if (buffer == null) return ErrorCode.NOMEM;
+ record = new Buffer.from((!)res);
+ user_record = null; // No support for user_record
+ if (record == null) return ErrorCode.NOMEM;
return 1;
}
@@ -171,7 +172,8 @@ public class Store : Object {
return 0;
}
- static int ss_store_session_func(Address address, uint8[] record, void* user_data) {
+ static int ss_store_session_func(Address address, uint8[] record, uint8[] user_record, void* user_data) {
+ // Ignoring user_record
Store store = (Store) user_data;
return catch_to_code(() => {
store.session_store.store_session(address, record);
diff --git a/plugins/signal-protocol/vapi/signal-protocol-native.vapi b/plugins/signal-protocol/vapi/signal-protocol-native.vapi
index ed391020..9161a3ed 100644
--- a/plugins/signal-protocol/vapi/signal-protocol-native.vapi
+++ b/plugins/signal-protocol/vapi/signal-protocol-native.vapi
@@ -62,11 +62,11 @@ namespace Signal {
public void* user_data;
}
[CCode (has_target = false)]
- public delegate int LoadSessionFunc(out Buffer buffer, Address address, void* user_data);
+ public delegate int LoadSessionFunc(out Buffer record, out Buffer user_record, Address address, void* user_data);
[CCode (has_target = false)]
public delegate int GetSubDeviceSessionsFunc(out IntList sessions, char[] name, void* user_data);
[CCode (has_target = false)]
- public delegate int StoreSessionFunc(Address address, uint8[] record, void* user_data);
+ public delegate int StoreSessionFunc(Address address, uint8[] record, uint8[] user_record, void* user_data);
[CCode (has_target = false)]
public delegate int ContainsSessionFunc(Address address, void* user_data);
[CCode (has_target = false)]
@@ -134,9 +134,9 @@ namespace Signal {
void* user_data;
}
[CCode (has_target = false)]
- public delegate int StoreSenderKeyFunc(SenderKeyName sender_key_name, uint8[] record, void* user_data);
+ public delegate int StoreSenderKeyFunc(SenderKeyName sender_key_name, uint8[] record, uint8[] user_record, void* user_data);
[CCode (has_target = false)]
- public delegate int LoadSenderKeyFunc(out Buffer record, SenderKeyName sender_key_name, void* user_data);
+ public delegate int LoadSenderKeyFunc(out Buffer record, out Buffer user_record, SenderKeyName sender_key_name, void* user_data);
[CCode (has_target = false)]
public delegate int DestroyFunc(void* user_data);
@@ -271,4 +271,4 @@ namespace Signal {
public static void setup_crypto_provider(NativeContext context);
[CCode (cname = "signal_crypto_random", cheader_filename = "signal_protocol_internal.h")]
public static int native_random(NativeContext context, uint8[] data);
-} \ No newline at end of file
+}
diff --git a/plugins/signal-protocol/vapi/signal-protocol-public.vapi b/plugins/signal-protocol/vapi/signal-protocol-public.vapi
index bb22bdaa..0a4456ad 100644
--- a/plugins/signal-protocol/vapi/signal-protocol-public.vapi
+++ b/plugins/signal-protocol/vapi/signal-protocol-public.vapi
@@ -137,6 +137,7 @@ namespace Signal {
[CCode (cname = "session_record", cprefix = "session_record_", cheader_filename = "signal/signal_protocol_types.h")]
public class SessionRecord : TypeBase {
public SessionState state { get; }
+ public Buffer user_record { get; }
}
[Compact]
@@ -386,4 +387,4 @@ namespace Signal {
throw_by_code(aes_decrypt_(out buf, cipher, key, iv, ciphertext, null));
return buf.data;
}
-} \ No newline at end of file
+}