diff --git a/synapse/storage/e2e_room_keys.py b/synapse/storage/e2e_room_keys.py
index 5982710bd5..994878acf6 100644
--- a/synapse/storage/e2e_room_keys.py
+++ b/synapse/storage/e2e_room_keys.py
@@ -170,3 +170,59 @@ class EndToEndRoomKeyStore(SQLBaseStore):
keyvalues=keyvalues,
desc="delete_e2e_room_keys",
)
+
+ @defer.inlineCallbacks
+ def get_e2e_room_key_version(self, user_id, version):
+
+ row = yield self._simple_select_one(
+ table="e2e_room_key_versions",
+ keyvalues={
+ "user_id": user_id,
+ "version": version,
+ },
+ retcols=(
+ "user_id",
+ "version",
+ "algorithm",
+ "auth_data",
+ ),
+ desc="get_e2e_room_key_version_info",
+ )
+
+ defer.returnValue(row)
+
+ def create_e2e_room_key_version(self, user_id, version, info):
+
+ def _create_e2e_room_key_version_txn(txn):
+
+ self._simple_insert_txn(
+ txn,
+ table="e2e_room_key_versions",
+ values={
+ "user_id": user_id,
+ "version": version,
+ "algorithm": info["algorithm"],
+ "auth_data": info["auth_data"],
+ },
+ lock=False,
+ )
+
+ return True
+
+ return self.runInteraction(
+ "create_e2e_room_key_version_txn", _create_e2e_room_key_version_txn
+ )
+
+ @defer.inlineCallbacks
+ def delete_e2e_room_key_version(self, user_id, version):
+
+ keyvalues = {
+ "user_id": user_id,
+ "version": version,
+ }
+
+ yield self._simple_delete(
+ table="e2e_room_key_versions",
+ keyvalues=keyvalues,
+ desc="delete_e2e_room_key_version",
+ )
diff --git a/synapse/storage/schema/delta/46/e2e_room_keys.sql b/synapse/storage/schema/delta/46/e2e_room_keys.sql
index 6b344c5ad7..463f828c66 100644
--- a/synapse/storage/schema/delta/46/e2e_room_keys.sql
+++ b/synapse/storage/schema/delta/46/e2e_room_keys.sql
@@ -34,7 +34,7 @@ CREATE TABLE e2e_room_key_versions (
user_id TEXT NOT NULL,
version INT NOT NULL,
algorithm TEXT NOT NULL,
- dummy_session_data TEXT NOT NULL
+ auth_data TEXT NOT NULL
);
CREATE UNIQUE INDEX e2e_room_key_user_idx ON e2e_room_keys(user_id);
|