aboutsummaryrefslogtreecommitdiff
path: root/include/olm
diff options
context:
space:
mode:
authorDavid Baker <dave@matrix.org>2019-10-01 11:14:16 +0100
committerDavid Baker <dave@matrix.org>2019-10-01 11:14:16 +0100
commit39a1ee0b18f0fced6d7bc293cc9a46ea70ec9e96 (patch)
treecbda083a8eb42f57a82d03cea38add6803d20823 /include/olm
parent3568060570bb06eff022f49ab39cf34e387e382f (diff)
Add olm_session_describe
As a way to dump the state of an olm session, ie. the chain indicies, so we can debug why olm sessions break and get out of sync.
Diffstat (limited to 'include/olm')
-rw-r--r--include/olm/olm.h2
-rw-r--r--include/olm/session.hh12
2 files changed, 14 insertions, 0 deletions
diff --git a/include/olm/olm.h b/include/olm/olm.h
index 61ea07b..770be72 100644
--- a/include/olm/olm.h
+++ b/include/olm/olm.h
@@ -318,6 +318,8 @@ int olm_session_has_received_message(
OlmSession *session
);
+const char * olm_session_describe(OlmSession * session);
+
/** Checks if the PRE_KEY message is for this in-bound session. This can happen
* if multiple messages are sent to this account before this account sends a
* message in reply. The one_time_key_message buffer is destroyed. Returns 1 if
diff --git a/include/olm/session.hh b/include/olm/session.hh
index 9d44816..86598dd 100644
--- a/include/olm/session.hh
+++ b/include/olm/session.hh
@@ -17,6 +17,8 @@
#include "olm/ratchet.hh"
+#define DESCRIBE_BUFFER_LEN 256
+
namespace olm {
struct Account;
@@ -35,6 +37,8 @@ struct Session {
bool received_message;
+ char describe_buffer[DESCRIBE_BUFFER_LEN];
+
_olm_curve25519_public_key alice_identity_key;
_olm_curve25519_public_key alice_base_key;
_olm_curve25519_public_key bob_one_time_key;
@@ -131,6 +135,14 @@ struct Session {
std::uint8_t const * message, std::size_t message_length,
std::uint8_t * plaintext, std::size_t max_plaintext_length
);
+
+ /**
+ * Return a string describing this session and its state (not including the
+ * private key)
+ * The pointer returned refers to an internal buffer which will be valid
+ * up until the next time describe() is called.
+ */
+ const char *describe();
};