aboutsummaryrefslogtreecommitdiff
path: root/src/session.cpp
diff options
context:
space:
mode:
authorHubert Chathi <hubert@uhoreg.ca>2019-10-09 15:37:56 +0000
committerHubert Chathi <hubert@uhoreg.ca>2019-10-09 15:37:56 +0000
commit387deeea8f66c93d84083790fd7b90bee0007ef9 (patch)
treec5dc092e5bb83b5a17863992396f0b82158c1e43 /src/session.cpp
parent3568060570bb06eff022f49ab39cf34e387e382f (diff)
parentfc423fad15ee3daaf236f211d67a25d03f63b560 (diff)
Merge branch 'dbkr/olm_session_describe' into 'master'
Add olm_session_describe See merge request matrix-org/olm!9
Diffstat (limited to 'src/session.cpp')
-rw-r--r--src/session.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/session.cpp b/src/session.cpp
index f1bc5a7..b619e56 100644
--- a/src/session.cpp
+++ b/src/session.cpp
@@ -21,6 +21,7 @@
#include "olm/pickle.hh"
#include <cstring>
+#include <stdio.h>
namespace {
@@ -397,6 +398,41 @@ std::size_t olm::Session::decrypt(
return result;
}
+void olm::Session::describe(char *describe_buffer, size_t buflen) {
+ if (buflen == 0) return;
+
+ describe_buffer[0] = '\0';
+ char *buf_pos = describe_buffer;
+
+ int size;
+
+ size = snprintf(
+ buf_pos, buflen - (buf_pos - describe_buffer),
+ "sender chain index: %d ", ratchet.sender_chain[0].chain_key.index
+ );
+ if (size > 0) buf_pos += size;
+
+ size = snprintf(buf_pos, buflen - (buf_pos - describe_buffer), "receiver chain indices:");
+ if (size > 0) buf_pos += size;
+ for (size_t i = 0; i < ratchet.receiver_chains.size(); ++i) {
+ size = snprintf(
+ buf_pos, buflen - (buf_pos - describe_buffer),
+ " %d", ratchet.receiver_chains[i].chain_key.index
+ );
+ if (size > 0) buf_pos += size;
+ }
+
+ size = snprintf(buf_pos, buflen - (buf_pos - describe_buffer), " skipped message keys:");
+ if (size >= 0) buf_pos += size;
+ for (size_t i = 0; i < ratchet.skipped_message_keys.size(); ++i) {
+ size = snprintf(
+ buf_pos, buflen - (buf_pos - describe_buffer),
+ " %d", ratchet.skipped_message_keys[i].message_key.index
+ );
+ if (size > 0) buf_pos += size;
+ }
+}
+
namespace {
// the master branch writes pickle version 1; the logging_enabled branch writes
// 0x80000001.