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 -