aboutsummaryrefslogtreecommitdiff
path: root/include/olm/inbound_group_session.h
diff options
context:
space:
mode:
authorRichard van der Hoff <github@rvanderhoff.org.uk>2017-01-10 15:39:42 +0000
committerGitHub <noreply@github.com>2017-01-10 15:39:42 +0000
commit860740a91ee0efcf3c594ece23ef0a38ddda394e (patch)
tree32bc83b640221ff5c983b92fb3a90c6d73d7c85d /include/olm/inbound_group_session.h
parent14c30da0e2bdff675c8af97e3c6ee49fba82af8d (diff)
parentc04b770cd3c96aa3a55ff3b6d817ba5b6f6f6922 (diff)
Merge pull request #42 from matrix-org/rav/megolm_export
Export and import of megolm session data
Diffstat (limited to 'include/olm/inbound_group_session.h')
-rw-r--r--include/olm/inbound_group_session.h64
1 files changed, 63 insertions, 1 deletions
diff --git a/include/olm/inbound_group_session.h b/include/olm/inbound_group_session.h
index f8a0bc3..ef01038 100644
--- a/include/olm/inbound_group_session.h
+++ b/include/olm/inbound_group_session.h
@@ -85,7 +85,8 @@ size_t olm_unpickle_inbound_group_session(
/**
- * Start a new inbound group session, based on the parameters supplied.
+ * Start a new inbound group session, from a key exported from
+ * olm_outbound_group_session_key
*
* Returns olm_error() on failure. On failure last_error will be set with an
* error code. The last_error will be:
@@ -100,6 +101,23 @@ size_t olm_init_inbound_group_session(
);
/**
+ * Import an inbound group session, from a previous export.
+ *
+ * Returns olm_error() on failure. On failure last_error will be set with an
+ * error code. The last_error will be:
+ *
+ * * OLM_INVALID_BASE64 if the session_key is not valid base64
+ * * OLM_BAD_SESSION_KEY if the session_key is invalid
+ */
+size_t olm_import_inbound_group_session(
+ OlmInboundGroupSession *session,
+ /* base64-encoded keys; note that it will be overwritten with the base64-decoded
+ data. */
+ uint8_t const * session_key, size_t session_key_length
+);
+
+
+/**
* Get an upper bound on the number of bytes of plain-text the decrypt method
* will write for a given input message length. The actual size could be
* different due to padding.
@@ -165,6 +183,50 @@ size_t olm_inbound_group_session_id(
uint8_t * id, size_t id_length
);
+/**
+ * Get the first message index we know how to decrypt.
+ */
+uint32_t olm_inbound_group_session_first_known_index(
+ const OlmInboundGroupSession *session
+);
+
+
+/**
+ * Check if the session has been verified as a valid session.
+ *
+ * (A session is verified either because the original session share was signed,
+ * or because we have subsequently successfully decrypted a message.)
+ *
+ * This is mainly intended for the unit tests, currently.
+ */
+int olm_inbound_group_session_is_verified(
+ const OlmInboundGroupSession *session
+);
+
+/**
+ * Get the number of bytes returned by olm_export_inbound_group_session()
+ */
+size_t olm_export_inbound_group_session_length(
+ const OlmInboundGroupSession *session
+);
+
+/**
+ * Export the base64-encoded ratchet key for this session, at the given index,
+ * in a format which can be used by olm_import_inbound_group_session
+ *
+ * Returns the length of the ratchet key on success or olm_error() on
+ * failure. On failure last_error will be set with an error code. The
+ * last_error will be:
+ * * OUTPUT_BUFFER_TOO_SMALL if the buffer was too small
+ * * OLM_UNKNOWN_MESSAGE_INDEX if we do not have a session key corresponding to the
+ * given index (ie, it was sent before the session key was shared with
+ * us)
+ */
+size_t olm_export_inbound_group_session(
+ OlmInboundGroupSession *session,
+ uint8_t * key, size_t key_length, uint32_t message_index
+);
+
#ifdef __cplusplus
} // extern "C"