diff options
author | David Baker <dave@matrix.org> | 2019-10-01 11:14:16 +0100 |
---|---|---|
committer | David Baker <dave@matrix.org> | 2019-10-01 11:14:16 +0100 |
commit | 39a1ee0b18f0fced6d7bc293cc9a46ea70ec9e96 (patch) | |
tree | cbda083a8eb42f57a82d03cea38add6803d20823 /include/olm | |
parent | 3568060570bb06eff022f49ab39cf34e387e382f (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.h | 2 | ||||
-rw-r--r-- | include/olm/session.hh | 12 |
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(); }; |