aboutsummaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorRichard van der Hoff <richard@matrix.org>2017-04-24 13:11:41 +0100
committerRichard van der Hoff <richard@matrix.org>2017-04-24 13:14:36 +0100
commitf8c61b8f8432d0b0b38d57f513c5048fb42f22ab (patch)
treeff1cd60946df13872091b3a03ae968955e40a0af /python
parent853ea8fbc7b393455c69de1ce95011117f1423fe (diff)
Python: Make ed25519_verify take some arguments
It's not much use if everything is hardcoded.
Diffstat (limited to 'python')
-rwxr-xr-xpython/olm/__main__.py36
-rwxr-xr-xpython/test_olm.sh9
2 files changed, 34 insertions, 11 deletions
diff --git a/python/olm/__main__.py b/python/olm/__main__.py
index 2a48b78..d062459 100755
--- a/python/olm/__main__.py
+++ b/python/olm/__main__.py
@@ -65,11 +65,25 @@ def build_arg_parser():
account.unpickle(args.key, read_base64_file(args.account_file))
print(account.identity_keys()['curve25519'])
- id_key = commands.add_parser("identity_key",
- help="Get the identity key for an account")
+ id_key = commands.add_parser(
+ "identity_key",
+ help="Get the public part of 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_signing_key(args):
+ account = Account()
+ account.unpickle(args.key, read_base64_file(args.account_file))
+ print(account.identity_keys()['ed25519'])
+
+ signing_key = commands.add_parser(
+ "signing_key",
+ help="Get the public part of the signing key for an account",
+ )
+ signing_key.add_argument("account_file", help="Local account file")
+ signing_key.set_defaults(func=do_signing_key)
+
def do_one_time_key(args):
account = Account()
account.unpickle(args.key, read_base64_file(args.account_file))
@@ -346,6 +360,16 @@ def build_arg_parser():
ed25519_verify = commands.add_parser("ed25519_verify",
help="Verify an ed25519 signature")
+ ed25519_verify.add_argument(
+ "signing_key",
+ help="Public signing key used to create the signature"
+ )
+ ed25519_verify.add_argument("signature",
+ help="Signature to be verified")
+ ed25519_verify.add_argument("message_file",
+ help="Message file (default stdin)",
+ type=argparse.FileType('r'), nargs='?',
+ default=sys.stdin)
ed25519_verify.set_defaults(func=do_verify_ed25519_signature)
return parser
@@ -434,12 +458,8 @@ def do_export_inbound_group(args):
def do_verify_ed25519_signature(args):
- account = Account()
- account.create()
- message = "A Message".encode("ASCII")
- ed25519_key = account.identity_keys()["ed25519"].encode("utf-8")
- signature = account.sign(message)
- ed25519_verify(ed25519_key, message, signature)
+ message = args.message_file.read()
+ ed25519_verify(args.signing_key, message, args.signature)
if __name__ == '__main__':
diff --git a/python/test_olm.sh b/python/test_olm.sh
index 6ba92b6..1554720 100755
--- a/python/test_olm.sh
+++ b/python/test_olm.sh
@@ -1,5 +1,7 @@
#! /bin/bash
+set -e
+
cd `dirname $0`
OLM="python -m olm"
@@ -38,6 +40,7 @@ $OLM group_decrypt $BOB_GROUP_SESSION group_message
$OLM export_inbound_group $BOB_GROUP_SESSION | $OLM import_inbound_group $CHARLIE_GROUP_SESSION
$OLM group_decrypt $CHARLIE_GROUP_SESSION group_message
-### Utility
-
-$OLM ed25519_verify
+### Sign/verify
+ALICE_SIGNING_KEY="$($OLM signing_key $ALICE_ACCOUNT)"
+sig="$(echo "Test message" | $OLM sign $ALICE_ACCOUNT - -)"
+echo "Test message" | $OLM ed25519_verify $ALICE_SIGNING_KEY $sig -