Age | Commit message (Collapse) | Author |
|
A pair of functions which allow you to export the megolm keys for an inbound
group session, so that an application can save/restore them.
|
|
|
|
Applications can use the index to detect replays of the same message.
|
|
Remove the messsage index from olm_init_inbound_group_session
|
|
read from the session_key
|
|
|
|
|
|
Some clients expect the session id to be globally unique,
so allowing the end devices to pick the session id will cause
problems.
Include the current ratchet index with the initial keys, this decreases
the risk that the client will supply the wrong index causing problems.
Sign the initial keys with the ratchet ed25519 key, this reduces the
risk of a client claiming a session that they didn't create.
|
|
Add ed25519 keys to the inbound and outbound sessions, and use them to sign and
verify megolm messages.
We just stuff the ed25519 public key in alongside the megolm session key (and
add a version byte), to save adding more boilerplate to the JS/python/etc
layers.
|
|
Putting the session_id inside the packed message body makes it hard to extract
so that we can decide which session to use. We don't think there is any
advantage to having thes sesion_id protected by the HMACs, so we're going to
move it to the JSON framing.
|
|
Factor the actual message encoding/decoding and encrypting/decrypting out to
separate functions from the top-level functions which do the base64-wrangling.
This is particularly helpful in the 'outbound' code-path where the offsets
required to allow room to base64-encode make the flow hard to see when it's all inline.
|
|
Initialise megolm_cipher via the preprocessor macro, instead of with a
function.
|
|
memset is at risk of being optimised away, so use _olm_unset instead.
|
|
The behaviour when casting from a uint32_t which has overflowed (so has the top
bit set) to int32_t is implementation-defined, so let's avoid relying on it.
|
|
Make names (of session_key and message_index) more consistent.
Use our own protobuf tags rather than trying to piggyback on the one-to-one
structure.
|
|
|
|
Includes creation of inbound sessions, etc
|