diff options
author | Richard van der Hoff <richard@matrix.org> | 2017-01-06 12:55:05 +0000 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2017-01-06 16:41:56 +0000 |
commit | 5fbeb3e29b6440a799d9320e871a1d4d509130b8 (patch) | |
tree | 63fd11381cfcd3b3d5b76e288657a3a453b21471 /python/olm/__main__.py | |
parent | bd6ab72ca40e0484be2a39734ba135437e820d63 (diff) |
Enable exporting inbound group session keys
A pair of functions which allow you to export the megolm keys for an inbound
group session, so that an application can save/restore them.
Diffstat (limited to 'python/olm/__main__.py')
-rwxr-xr-x | python/olm/__main__.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/python/olm/__main__.py b/python/olm/__main__.py index eb76301..f195591 100755 --- a/python/olm/__main__.py +++ b/python/olm/__main__.py @@ -277,6 +277,27 @@ def build_arg_parser(): type=argparse.FileType('wb'), nargs='?', default=sys.stdout) group_decrypt.set_defaults(func=do_group_decrypt) + + + export_inbound_group = commands.add_parser( + "export_inbound_group", + help="Export the keys for an inbound group session", + ) + export_inbound_group.add_argument( + "session_file", help="Local inbound group session file", + ) + export_inbound_group.add_argument( + "export_file", help="File to export to (default stdout)", + type=argparse.FileType('w'), nargs='?', + default=sys.stdout, + ) + export_inbound_group.add_argument( + "--message_index", + help="Index to export session at. Defaults to the earliest known index", + type=int, + ) + export_inbound_group.set_defaults(func=do_export_inbound_group) + return parser def do_outbound_group(args): @@ -333,6 +354,15 @@ def do_group_decrypt(args): f.write(session.pickle(args.key)) args.plaintext_file.write(plaintext) +def do_export_inbound_group(args): + session = InboundGroupSession() + session.unpickle(args.key, read_base64_file(args.session_file)) + index = args.message_index + if index is None: + # default to first known index + index = session.first_known_index() + args.export_file.write(session.export_session(index)) + if __name__ == '__main__': parser = build_arg_parser() args = parser.parse_args() |