diff options
author | Mark Haines <mjark@negativecurvature.net> | 2016-09-13 16:39:43 +0100 |
---|---|---|
committer | Mark Haines <mjark@negativecurvature.net> | 2016-09-13 17:02:36 +0100 |
commit | 6971f54feac2464b53f2b5db8466d75075e0dc9e (patch) | |
tree | 88d935f4dc79307cc109657a087979dcc598cc8b /src/inbound_group_session.c | |
parent | e0b51971b7bc4cf3bb56b080f5f54296b58b3f0c (diff) |
Add a olm_inbound_group_session_id method
Diffstat (limited to 'src/inbound_group_session.c')
-rw-r--r-- | src/inbound_group_session.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/inbound_group_session.c b/src/inbound_group_session.c index 82ff66f..65c6018 100644 --- a/src/inbound_group_session.c +++ b/src/inbound_group_session.c @@ -29,6 +29,7 @@ #define OLM_PROTOCOL_VERSION 3 +#define GROUP_SESSION_ID_LENGTH ED25519_PUBLIC_KEY_LENGTH #define PICKLE_VERSION 1 #define SESSION_KEY_VERSION 2 @@ -364,3 +365,23 @@ size_t olm_group_decrypt( plaintext, max_plaintext_length ); } + +size_t olm_inbound_group_session_id_length( + const OlmInboundGroupSession *session +) { + return _olm_encode_base64_length(GROUP_SESSION_ID_LENGTH); +} + +size_t olm_inbound_group_session_id( + OlmInboundGroupSession *session, + uint8_t * id, size_t id_length +) { + if (id_length < olm_inbound_group_session_id_length(session)) { + session->last_error = OLM_OUTPUT_BUFFER_TOO_SMALL; + return (size_t)-1; + } + + return _olm_encode_base64( + session->signing_key.public_key, GROUP_SESSION_ID_LENGTH, id + ); +} |