Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#! /bin/bash
set -e
# tests
# run the suite with and without the daemon
# TODO: run the suite with/without encryption!
echo "-----------------------------"
echo "starting the server"
monax-keys server &
sleep 1
echo "-----------------------------"
echo "testing the cli"
# we test keys, hashes, names, and import
# this file should be run with and without the daemon running
echo "testing keys"
KEYTYPES=("ed25519,ripemd160" "secp256k1,sha3" "secp256k1,ripemd160sha256")
for KEYTYPE in ${KEYTYPES[*]}
do
# test key gen, sign verify:
# for each step, ensure it works using --addr or --name
echo "... $KEYTYPE"
HASH=`monax-keys hash --type sha256 ok`
#echo "HASH: $HASH"
NAME=testkey1
ADDR=`monax-keys gen --type $KEYTYPE --name $NAME --no-pass`
#echo "my addr: $ADDR"
PUB1=`monax-keys pub --name $NAME`
PUB2=`monax-keys pub --addr $ADDR`
if [ "$PUB1" != "$PUB2" ]; then
echo "FAILED pub: got $PUB2, expected $PUB1"
exit 1
fi
echo "...... passed pub"
SIG1=`monax-keys sign --name $NAME $HASH`
VERIFY1=`monax-keys verify --type $KEYTYPE $HASH $SIG1 $PUB1`
if [ $VERIFY1 != "true" ]; then
echo "FAILED verify: got $VERIFY1 expected true"
exit 1
fi
SIG2=`monax-keys sign --addr $ADDR $HASH`
VERIFY1=`monax-keys verify --type $KEYTYPE $HASH $SIG2 $PUB1`
if [ $VERIFY1 != "true" ]; then
echo "FAILED verify: got $VERIFY1 expected true"
exit 1
fi
echo "...... passed sig/verify"
done
echo "testing hashes"
# test hashing (we need openssl)
TOHASH=okeydokey
HASHTYPES=(sha256 ripemd160)
for HASHTYPE in ${HASHTYPES[*]}
do
echo "... $HASHTYPE"
HASH0=`echo -n $TOHASH | openssl dgst -$HASHTYPE | awk '{print toupper($2)}'`
HASH1=`monax-keys hash --type $HASHTYPE $TOHASH`
if [ "$HASH0" != "$HASH1" ]; then
echo "FAILED hash $HASHTYPE: got $HASH1 expected $HASH0"
fi
echo "...... passed"
done
echo "testing imports"
# TODO: IMPORTS
# for each key type, import a priv key, ensure it returns
# the right address. do again with both plain and encrypted jsons
for KEYTYPE in ${KEYTYPES[*]}
do
echo "... $KEYTYPE"
# create a key, get its address and priv, backup the json, delete the key
ADDR=`monax-keys gen --type $KEYTYPE --no-pass`
DIR=$HOME/.monax/keys/data/$ADDR
FILE=$DIR/$ADDR
PRIV=`cat $FILE | jq -r .PrivateKey`
HEXPRIV=`echo -n "$PRIV" | base64 -d | hexdump -ve '1/1 "%.2X"'`
cp $FILE ~/$ADDR
rm -rf $DIR
# import the key via priv
ADDR2=`monax-keys import --no-pass --type $KEYTYPE $HEXPRIV`
if [ "$ADDR" != "$ADDR2" ]; then
echo "FAILED import $KEYTYPE: got $ADDR2 expected $ADDR"
exit
fi
rm -rf $DIR
# import the key via json
JSON=`cat ~/$ADDR`
ADDR2=`monax-keys import --no-pass --type $KEYTYPE $JSON`
if [ "$ADDR" != "$ADDR2" ]; then
echo "FAILED import (json) $KEYTYPE: got $ADDR2 expected $ADDR"
exit
fi
rm -rf $DIR
# import the key via path
ADDR2=`monax-keys import --no-pass --type $KEYTYPE ~/$ADDR`
if [ "$ADDR" != "$ADDR2" ]; then
echo "FAILED import $KEYTYPE: got $ADDR2 expected $ADDR"
exit
fi
rm -rf $DIR
echo "...... passed raw hex and json"
done
echo "testing names"
NAME=mykey
ADDR=`monax-keys gen --name $NAME --no-pass`
ADDR2=`monax-keys name $NAME`
if [ "$ADDR" != "$ADDR2" ]; then
echo "FAILED name: got $ADDR2 expected $ADDR"
exit
fi
NAME2=mykey2
monax-keys name $NAME2 $ADDR
ADDR2=`monax-keys name $NAME2`
if [ "$ADDR" != "$ADDR2" ]; then
echo "FAILED rename: got $ADDR2 expected $ADDR"
exit
fi
echo "... passed"
# TODO a little more on names...