Merge branch 'dbkr/olm_session_describe' into 'master'
Add olm_session_describe See merge request matrix-org/olm!9
This commit is contained in:
commit
387deeea8f
5 changed files with 69 additions and 0 deletions
|
@ -318,6 +318,12 @@ int olm_session_has_received_message(
|
||||||
OlmSession *session
|
OlmSession *session
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write a null-terminated string describing the internal state of an olm
|
||||||
|
* session to the buffer provided for debugging and logging purposes.
|
||||||
|
*/
|
||||||
|
void olm_session_describe(OlmSession * session, char *buf, size_t buflen);
|
||||||
|
|
||||||
/** Checks if the PRE_KEY message is for this in-bound session. This can happen
|
/** 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
|
* 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
|
* message in reply. The one_time_key_message buffer is destroyed. Returns 1 if
|
||||||
|
|
|
@ -131,6 +131,14 @@ struct Session {
|
||||||
std::uint8_t const * message, std::size_t message_length,
|
std::uint8_t const * message, std::size_t message_length,
|
||||||
std::uint8_t * plaintext, std::size_t max_plaintext_length
|
std::uint8_t * plaintext, std::size_t max_plaintext_length
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write a string describing this session and its state (not including the
|
||||||
|
* private key) into the buffer provided.
|
||||||
|
*
|
||||||
|
* Takes a buffer to write to and the length of that buffer
|
||||||
|
*/
|
||||||
|
void describe(char *buf, size_t buflen);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -459,6 +459,19 @@ Session.prototype['decrypt'] = restore_stack(function(
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Session.prototype['describe'] = restore_stack(function() {
|
||||||
|
var description_buf;
|
||||||
|
try {
|
||||||
|
description_buf = malloc(256);
|
||||||
|
session_method(Module['_olm_session_describe'])(
|
||||||
|
this.ptr, description_buf, 256
|
||||||
|
);
|
||||||
|
return UTF8ToString(description_buf);
|
||||||
|
} finally {
|
||||||
|
if (description_buf !== undefined) free(description_buf);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
function Utility() {
|
function Utility() {
|
||||||
var size = Module['_olm_utility_size']();
|
var size = Module['_olm_utility_size']();
|
||||||
this.buf = malloc(size);
|
this.buf = malloc(size);
|
||||||
|
|
|
@ -535,6 +535,12 @@ int olm_session_has_received_message(
|
||||||
return from_c(session)->received_message;
|
return from_c(session)->received_message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void olm_session_describe(
|
||||||
|
OlmSession * session, char *buf, size_t buflen
|
||||||
|
) {
|
||||||
|
from_c(session)->describe(buf, buflen);
|
||||||
|
}
|
||||||
|
|
||||||
size_t olm_matches_inbound_session(
|
size_t olm_matches_inbound_session(
|
||||||
OlmSession * session,
|
OlmSession * session,
|
||||||
void * one_time_key_message, size_t message_length
|
void * one_time_key_message, size_t message_length
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include "olm/pickle.hh"
|
#include "olm/pickle.hh"
|
||||||
|
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
@ -397,6 +398,41 @@ std::size_t olm::Session::decrypt(
|
||||||
return result;
|
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 {
|
namespace {
|
||||||
// the master branch writes pickle version 1; the logging_enabled branch writes
|
// the master branch writes pickle version 1; the logging_enabled branch writes
|
||||||
// 0x80000001.
|
// 0x80000001.
|
||||||
|
|
Loading…
Reference in a new issue