aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard van der Hoff <richard@matrix.org>2016-05-25 15:33:33 +0100
committerRichard van der Hoff <richard@matrix.org>2016-05-25 15:33:33 +0100
commit54d43010c808b56caa703696a036df18d2b74575 (patch)
tree61cbc677c61e050a41669f858388a6d6cc7d732e
parent024685f3db2be6c4cfb55670ecc92d8d1a0c9a8d (diff)
parent8d55954ce13b9f93cc220bcbaab56fb236d16c9c (diff)
Merge branch 'rav/jenkins_build'
-rw-r--r--Makefile3
-rwxr-xr-xjenkins.sh9
-rwxr-xr-xpython/olm/__main__.py36
-rwxr-xr-xpython/test_olm.sh6
-rw-r--r--src/libs.c (renamed from src/libs.cpp)4
5 files changed, 52 insertions, 6 deletions
diff --git a/Makefile b/Makefile
index 8594946..fca9576 100644
--- a/Makefile
+++ b/Makefile
@@ -31,7 +31,8 @@ JS_PRE := $(wildcard javascript/*pre.js)
JS_POST := $(wildcard javascript/*post.js)
CPPFLAGS += -Iinclude -Ilib
-CFLAGS += -Wall -Werror -std=c89 -fPIC
+# we rely on <stdint.h>, which was introduced in C99
+CFLAGS += -Wall -Werror -std=c99 -fPIC
CXXFLAGS += -Wall -Werror -std=c++11 -fPIC
LDFLAGS += -Wall -Werror
diff --git a/jenkins.sh b/jenkins.sh
new file mode 100755
index 0000000..c1efcb9
--- /dev/null
+++ b/jenkins.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+make clean
+make lib
+make test
+
+./python/test_olm.sh
diff --git a/python/olm/__main__.py b/python/olm/__main__.py
index d2b0d38..35ccd01 100755
--- a/python/olm/__main__.py
+++ b/python/olm/__main__.py
@@ -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")
diff --git a/python/test_olm.sh b/python/test_olm.sh
index b575cbf..916322e 100755
--- a/python/test_olm.sh
+++ b/python/test_olm.sh
@@ -1,5 +1,7 @@
#! /bin/bash
+cd `dirname $0`
+
OLM="python -m olm"
ALICE_ACCOUNT=alice.account
@@ -14,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"
diff --git a/src/libs.cpp b/src/libs.c
index 6757574..4304354 100644
--- a/src/libs.cpp
+++ b/src/libs.c
@@ -1,4 +1,4 @@
-/* Copyright 2015 OpenMarket Ltd
+/* Copyright 2015-6 OpenMarket Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -12,7 +12,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-extern "C" {
#include "crypto-algorithms/sha256.c"
#include "crypto-algorithms/aes.c"
#include "curve25519-donna/curve25519-donna.c"
@@ -24,4 +23,3 @@ extern "C" {
#include "ed25519/src/verify.c"
#include "ed25519/src/sign.c"
#include "ed25519_additions.c"
-}