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:
|
with open(path, "rb") as f:
|
||||||
pickle = f.read()
|
pickle = f.read()
|
||||||
account = Account.from_pickle(pickle)
|
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:
|
except OlmAccountError as error:
|
||||||
raise EncryptionError(error)
|
raise EncryptionError(error)
|
||||||
|
|
|
@ -89,6 +89,7 @@ class MatrixLoginEvent(MatrixEvent):
|
||||||
|
|
||||||
if not self.server.olm:
|
if not self.server.olm:
|
||||||
self.server.create_olm()
|
self.server.create_olm()
|
||||||
|
self.server.store_olm()
|
||||||
|
|
||||||
self.server.sync()
|
self.server.sync()
|
||||||
|
|
||||||
|
|
|
@ -158,7 +158,10 @@ class MatrixServer:
|
||||||
server=self.name,
|
server=self.name,
|
||||||
device=self.device_id)
|
device=self.device_id)
|
||||||
W.prnt(self.server_buffer, message)
|
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):
|
def _create_options(self, config_file):
|
||||||
options = [
|
options = [
|
||||||
|
|
Loading…
Add table
Reference in a new issue