Closed turt2live closed 4 years ago
Release blocker tag because it needs to make it into a release before the end of September, though ideally the implementation would be done much sooner to unblock @turt2live
From discussions elsewhere, this seems related to the encryption_enabled_by_default_for_room_type
flag, which controls whether newly created local rooms use E2EE by default or not.
This essentially has three values:
We could expose that in the configuration, but unfortunately it seems more than just a True/False value.
this is where I wish we had an info endpoint :(
Can we do two flags to represent all and private? If both are false/not present then it's safe to assume the server won't manipulate the behaviour.
Something like:
{
"io.element.forced_e2e.everywhere": true,
"io.element.forced_e2e.private_only": true
}
io.element.forced_e2e.everywhere
when true implicitly means io.element.forced_e2e.private_only
is enabled. Similarly, when io.element.forced_e2e.everywhere
is missing then it is implied false, which forces the client to look at io.element.forced_e2e.private_only
This should make the server implementation something along the lines of (I don't know python well):
if config['encryption_enabled_by_default_for_room_type'] != 'off':
unstable_features["io.element.forced_e2e.everywhere" if config['encryption_enabled_by_default_for_room_type'] == 'all' else "io.element.forced_e2e.private_only"] = True
@turt2live Yes, we can do that -- would it make more sense to have a separate flag for private and public? Something like:
{
"io.element.forced_e2e.public": true,
"io.element.forced_e2e.private": true,
}
It is a bit less implicit.
yea, that should be fine. The client will know what presets its about to use anyways :D
Capabilities are probably wrong for this, and we don't yet have an info API. For speed, I'd recommend a
/versions
flag ofio.element.e2ee_forced
for clients to check.