diff options
Diffstat (limited to 'src/session.cpp')
-rw-r--r-- | src/session.cpp | 36 |
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. |