olm: Save and restore the olm account keys.
This commit is contained in:
parent
357c76edcc
commit
823cc1bf28
3 changed files with 21 additions and 2 deletions
|
@ -170,6 +170,21 @@ class Olm():
|
|||
with open(path, "rb") as f:
|
||||
pickle = f.read()
|
||||
account = Account.from_pickle(pickle)
|
||||
return cls(server, account)
|
||||
return cls(account)
|
||||
except OlmAccountError as error:
|
||||
raise EncryptionError(error)
|
||||
|
||||
@encrypt_enabled
|
||||
def to_session_dir(self, server):
|
||||
# type: (Server) -> None
|
||||
account_file_name = "{}_{}.account".format(server.user,
|
||||
server.device_id)
|
||||
session_path = server.get_session_path()
|
||||
path = os.path.join(session_path, account_file_name)
|
||||
|
||||
try:
|
||||
with open(path, "wb") as f:
|
||||
pickle = self.account.pickle()
|
||||
f.write(pickle)
|
||||
except OlmAccountError as error:
|
||||
raise EncryptionError(error)
|
||||
|
|
|
@ -89,6 +89,7 @@ class MatrixLoginEvent(MatrixEvent):
|
|||
|
||||
if not self.server.olm:
|
||||
self.server.create_olm()
|
||||
self.server.store_olm()
|
||||
|
||||
self.server.sync()
|
||||
|
||||
|
|
|
@ -158,7 +158,10 @@ class MatrixServer:
|
|||
server=self.name,
|
||||
device=self.device_id)
|
||||
W.prnt(self.server_buffer, message)
|
||||
self.olm = Olm(self)
|
||||
self.olm = Olm()
|
||||
|
||||
def store_olm(self):
|
||||
self.olm.to_session_dir(self)
|
||||
|
||||
def _create_options(self, config_file):
|
||||
options = [
|
||||
|
|
Loading…
Add table
Reference in a new issue