aboutsummaryrefslogtreecommitdiff
path: root/python/olm/__main__.py
diff options
context:
space:
mode:
authorRichard van der Hoff <richard@matrix.org>2017-01-06 12:55:05 +0000
committerRichard van der Hoff <richard@matrix.org>2017-01-06 16:41:56 +0000
commit5fbeb3e29b6440a799d9320e871a1d4d509130b8 (patch)
tree63fd11381cfcd3b3d5b76e288657a3a453b21471 /python/olm/__main__.py
parentbd6ab72ca40e0484be2a39734ba135437e820d63 (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-xpython/olm/__main__.py30
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()