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.
This commit is contained in:
Richard van der Hoff 2016-05-24 16:50:26 +01:00
parent ed039d331c
commit 8d55954ce1
2 changed files with 38 additions and 2 deletions

View file

@ -1,5 +1,7 @@
#! /usr/bin/env python
from __future__ import print_function
import argparse
import json
import os
@ -8,6 +10,7 @@ import yaml
from . import *
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument("--key", help="Account encryption key", default="")
@ -51,6 +54,39 @@ if __name__ == '__main__':
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.add_argument("account_file", help="Local account file")
sign.add_argument("message_file", help="Message to sign")

View file

@ -16,8 +16,8 @@ $OLM create_account $ALICE_ACCOUNT
$OLM create_account $BOB_ACCOUNT
$OLM generate_keys $BOB_ACCOUNT 1
BOB_IDENTITY_KEY="$($OLM keys --json $BOB_ACCOUNT | jq -r .account_keys.curve25519)"
BOB_ONE_TIME_KEY="$($OLM keys --json $BOB_ACCOUNT | jq -r '.one_time_keys.curve25519|to_entries[0].value')"
BOB_IDENTITY_KEY="$($OLM identity_key $BOB_ACCOUNT)"
BOB_ONE_TIME_KEY="$($OLM one_time_key $BOB_ACCOUNT)"
$OLM outbound $ALICE_ACCOUNT $ALICE_SESSION "$BOB_IDENTITY_KEY" "$BOB_ONE_TIME_KEY"