aboutsummaryrefslogtreecommitdiff
path: root/src/outbound_group_session.c
diff options
context:
space:
mode:
authorRichard van der Hoff <richard@matrix.org>2016-05-18 17:20:06 +0100
committerRichard van der Hoff <richard@matrix.org>2016-05-24 13:39:34 +0100
commit8b1514c0a653ccc3f49db70131d7d4f7524f1f9b (patch)
tree098b5a61c4b08905e191515a5829dbcd8d10e194 /src/outbound_group_session.c
parente545ad7eaf55ac8b7dc7d37c046c541e35cef542 (diff)
Implement functions to get the state of outbound session
We need to be able to inspect an outbound session so that we can tell our peer how to set up an inbound session.
Diffstat (limited to 'src/outbound_group_session.c')
-rw-r--r--src/outbound_group_session.c49
1 files changed, 47 insertions, 2 deletions
diff --git a/src/outbound_group_session.c b/src/outbound_group_session.c
index 8dc1cd1..fadf949 100644
--- a/src/outbound_group_session.c
+++ b/src/outbound_group_session.c
@@ -254,7 +254,52 @@ size_t olm_group_encrypt(
megolm_advance(&(session->ratchet));
return _olm_encode_base64(
- message_pos, rawmsglen,
- message
+ message_pos, rawmsglen, message
+ );
+}
+
+
+size_t olm_outbound_group_session_id_length(
+ const OlmOutboundGroupSession *session
+) {
+ return _olm_encode_base64_length(GROUP_SESSION_ID_LENGTH);
+}
+
+size_t olm_outbound_group_session_id(
+ OlmOutboundGroupSession *session,
+ uint8_t * id, size_t id_length
+) {
+ if (id_length < olm_outbound_group_session_id_length(session)) {
+ session->last_error = OLM_OUTPUT_BUFFER_TOO_SMALL;
+ return (size_t)-1;
+ }
+
+ return _olm_encode_base64(session->session_id, GROUP_SESSION_ID_LENGTH, id);
+}
+
+uint32_t olm_outbound_group_session_message_index(
+ OlmOutboundGroupSession *session
+) {
+ return session->ratchet.counter;
+}
+
+size_t olm_outbound_group_session_key_length(
+ const OlmOutboundGroupSession *session
+) {
+ return _olm_encode_base64_length(MEGOLM_RATCHET_LENGTH);
+}
+
+size_t olm_outbound_group_session_key(
+ OlmOutboundGroupSession *session,
+ uint8_t * key, size_t key_length
+) {
+ if (key_length < olm_outbound_group_session_key_length(session)) {
+ session->last_error = OLM_OUTPUT_BUFFER_TOO_SMALL;
+ return (size_t)-1;
+ }
+
+ return _olm_encode_base64(
+ megolm_get_data(&session->ratchet),
+ MEGOLM_RATCHET_LENGTH, key
);
}