python: Add support to generate fallback keys
This commit is contained in:
parent
845e7cb43b
commit
8c62046392
1 changed files with 44 additions and 0 deletions
|
@ -269,3 +269,47 @@ class Account(object):
|
|||
"""
|
||||
self._check_error(lib.olm_remove_one_time_keys(self._account,
|
||||
session._session))
|
||||
|
||||
def generate_fallback_key(self):
|
||||
# type: () -> None
|
||||
"""Generate a new fallback key
|
||||
|
||||
This will overwrite the existing fallback key, make sure that you upload
|
||||
the fallback key before rotating again. Internally there are two slots
|
||||
for the private part of the fallback key. Rotating without uploading
|
||||
means that we'll remove a fallback key that may be still used on the
|
||||
server side but has been removed on our side.
|
||||
|
||||
When we receive pre-key messages that use such a removed fallback key we
|
||||
won't be able to create a new Olm session.
|
||||
"""
|
||||
random_length = lib.olm_account_generate_fallback_key_random_length(
|
||||
self._account
|
||||
)
|
||||
random = URANDOM(random_length)
|
||||
|
||||
self._check_error(
|
||||
lib.olm_account_generate_fallback_key(
|
||||
self._account, ffi.from_buffer(random), random_length
|
||||
)
|
||||
)
|
||||
|
||||
@property
|
||||
def fallback_key(self):
|
||||
"""The public part of the current fallback for this account.
|
||||
|
||||
The fallback key can be uploaded alongside of the one-time keys. It can
|
||||
be used instead of a one-time key to establish a new Olm Session. The
|
||||
fallback key comes into play if all one-time keys have been used up due
|
||||
to the client being offline and not replenishing the pool of one-time
|
||||
keys.
|
||||
"""
|
||||
out_length = lib.olm_account_fallback_key_length(self._account)
|
||||
out_buffer = ffi.new("char[]", out_length)
|
||||
|
||||
ret = lib.olm_account_unpublished_fallback_key(self._account, out_buffer, out_length)
|
||||
self._check_error(ret)
|
||||
|
||||
fallback_key = ffi.unpack(out_buffer, ret)
|
||||
|
||||
return json.loads(fallback_key)
|
||||
|
|
Loading…
Reference in a new issue