@@ -707,50 +707,6 @@ def get_device_stream_token(self) -> int:
707
707
"""Get the current stream id from the _device_list_id_gen"""
708
708
...
709
709
710
-
711
- class EndToEndKeyStore (EndToEndKeyWorkerStore , SQLBaseStore ):
712
- async def set_e2e_device_keys (
713
- self , user_id : str , device_id : str , time_now : int , device_keys : JsonDict
714
- ) -> bool :
715
- """Stores device keys for a device. Returns whether there was a change
716
- or the keys were already in the database.
717
- """
718
-
719
- def _set_e2e_device_keys_txn (txn ):
720
- set_tag ("user_id" , user_id )
721
- set_tag ("device_id" , device_id )
722
- set_tag ("time_now" , time_now )
723
- set_tag ("device_keys" , device_keys )
724
-
725
- old_key_json = self .db_pool .simple_select_one_onecol_txn (
726
- txn ,
727
- table = "e2e_device_keys_json" ,
728
- keyvalues = {"user_id" : user_id , "device_id" : device_id },
729
- retcol = "key_json" ,
730
- allow_none = True ,
731
- )
732
-
733
- # In py3 we need old_key_json to match new_key_json type. The DB
734
- # returns unicode while encode_canonical_json returns bytes.
735
- new_key_json = encode_canonical_json (device_keys ).decode ("utf-8" )
736
-
737
- if old_key_json == new_key_json :
738
- log_kv ({"Message" : "Device key already stored." })
739
- return False
740
-
741
- self .db_pool .simple_upsert_txn (
742
- txn ,
743
- table = "e2e_device_keys_json" ,
744
- keyvalues = {"user_id" : user_id , "device_id" : device_id },
745
- values = {"ts_added_ms" : time_now , "key_json" : new_key_json },
746
- )
747
- log_kv ({"message" : "Device keys stored." })
748
- return True
749
-
750
- return await self .db_pool .runInteraction (
751
- "set_e2e_device_keys" , _set_e2e_device_keys_txn
752
- )
753
-
754
710
async def claim_e2e_one_time_keys (
755
711
self , query_list : Iterable [Tuple [str , str , str ]]
756
712
) -> Dict [str , Dict [str , Dict [str , bytes ]]]:
@@ -840,6 +796,50 @@ def _claim_e2e_one_time_keys(txn):
840
796
"claim_e2e_one_time_keys" , _claim_e2e_one_time_keys
841
797
)
842
798
799
+
800
+ class EndToEndKeyStore (EndToEndKeyWorkerStore , SQLBaseStore ):
801
+ async def set_e2e_device_keys (
802
+ self , user_id : str , device_id : str , time_now : int , device_keys : JsonDict
803
+ ) -> bool :
804
+ """Stores device keys for a device. Returns whether there was a change
805
+ or the keys were already in the database.
806
+ """
807
+
808
+ def _set_e2e_device_keys_txn (txn ):
809
+ set_tag ("user_id" , user_id )
810
+ set_tag ("device_id" , device_id )
811
+ set_tag ("time_now" , time_now )
812
+ set_tag ("device_keys" , device_keys )
813
+
814
+ old_key_json = self .db_pool .simple_select_one_onecol_txn (
815
+ txn ,
816
+ table = "e2e_device_keys_json" ,
817
+ keyvalues = {"user_id" : user_id , "device_id" : device_id },
818
+ retcol = "key_json" ,
819
+ allow_none = True ,
820
+ )
821
+
822
+ # In py3 we need old_key_json to match new_key_json type. The DB
823
+ # returns unicode while encode_canonical_json returns bytes.
824
+ new_key_json = encode_canonical_json (device_keys ).decode ("utf-8" )
825
+
826
+ if old_key_json == new_key_json :
827
+ log_kv ({"Message" : "Device key already stored." })
828
+ return False
829
+
830
+ self .db_pool .simple_upsert_txn (
831
+ txn ,
832
+ table = "e2e_device_keys_json" ,
833
+ keyvalues = {"user_id" : user_id , "device_id" : device_id },
834
+ values = {"ts_added_ms" : time_now , "key_json" : new_key_json },
835
+ )
836
+ log_kv ({"message" : "Device keys stored." })
837
+ return True
838
+
839
+ return await self .db_pool .runInteraction (
840
+ "set_e2e_device_keys" , _set_e2e_device_keys_txn
841
+ )
842
+
843
843
async def delete_e2e_keys_by_device (self , user_id : str , device_id : str ) -> None :
844
844
def delete_e2e_keys_by_device_txn (txn ):
845
845
log_kv (
0 commit comments