Commit 8d55954c authored by Richard van der Hoff's avatar Richard van der Hoff
Browse files

Avoid use of jq in test_olm

I want to use test_olm.sh on jenkins, which lacks jq. Hence, add support to
olm.main to get id and one-time keys individually.
parent ed039d33
#! /usr/bin/env python #! /usr/bin/env python
from __future__ import print_function
import argparse import argparse
import json import json
import os import os
...@@ -8,6 +10,7 @@ import yaml ...@@ -8,6 +10,7 @@ import yaml
from . import * from . import *
if __name__ == '__main__': if __name__ == '__main__':
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument("--key", help="Account encryption key", default="") parser.add_argument("--key", help="Account encryption key", default="")
...@@ -51,6 +54,39 @@ if __name__ == '__main__': ...@@ -51,6 +54,39 @@ if __name__ == '__main__':
keys.set_defaults(func=do_keys) keys.set_defaults(func=do_keys)
def do_id_key(args):
account = Account()
with open(args.account_file, "rb") as f:
account.unpickle(args.key, f.read())
print(account.identity_keys()['curve25519'])
id_key = commands.add_parser("identity_key", help="Get the identity key for an account")
id_key.add_argument("account_file", help="Local account file")
id_key.set_defaults(func=do_id_key)
def do_one_time_key(args):
account = Account()
with open(args.account_file, "rb") as f:
account.unpickle(args.key, f.read())
keys = account.one_time_keys()['curve25519'].values()
key_num = args.key_num
if key_num < 1 or key_num > len(keys):
print(
"Invalid key number %i: %i keys available" %
(key_num, len(keys)),
file=sys.stderr
)
sys.exit(1)
print (keys[key_num-1])
one_time_key = commands.add_parser("one_time_key",
help="Get a one-time key for the account")
one_time_key.add_argument("account_file", help="Local account file")
one_time_key.add_argument("--key-num", "-n", type=int, default=1,
help="Index of key to retrieve (default: 1)")
one_time_key.set_defaults(func=do_one_time_key)
sign = commands.add_parser("sign", help="Sign a message") sign = commands.add_parser("sign", help="Sign a message")
sign.add_argument("account_file", help="Local account file") sign.add_argument("account_file", help="Local account file")
sign.add_argument("message_file", help="Message to sign") sign.add_argument("message_file", help="Message to sign")
......
...@@ -16,8 +16,8 @@ $OLM create_account $ALICE_ACCOUNT ...@@ -16,8 +16,8 @@ $OLM create_account $ALICE_ACCOUNT
$OLM create_account $BOB_ACCOUNT $OLM create_account $BOB_ACCOUNT
$OLM generate_keys $BOB_ACCOUNT 1 $OLM generate_keys $BOB_ACCOUNT 1
BOB_IDENTITY_KEY="$($OLM keys --json $BOB_ACCOUNT | jq -r .account_keys.curve25519)" BOB_IDENTITY_KEY="$($OLM identity_key $BOB_ACCOUNT)"
BOB_ONE_TIME_KEY="$($OLM keys --json $BOB_ACCOUNT | jq -r '.one_time_keys.curve25519|to_entries[0].value')" BOB_ONE_TIME_KEY="$($OLM one_time_key $BOB_ACCOUNT)"
$OLM outbound $ALICE_ACCOUNT $ALICE_SESSION "$BOB_IDENTITY_KEY" "$BOB_ONE_TIME_KEY" $OLM outbound $ALICE_ACCOUNT $ALICE_SESSION "$BOB_IDENTITY_KEY" "$BOB_ONE_TIME_KEY"
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment