blob: 434fc5a31693aff80d272986c686e8c8f1b980fe (
plain)
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
|
# Makefile for catlfish
PREFIX=.
INSTDIR=$(PREFIX)/catlfish
build all:
./make.erl
clean:
-rm ebin/*.beam
release: all
rm -rf $(INSTDIR)
mkdir $(INSTDIR)
./makerelease.erl $(INSTDIR)
-include test/test.mk
tests-prepare:
rm -r $(INSTDIR)/tests || true
mkdir $(INSTDIR)/tests
make tests-createca
make tests-createcert
mkdir $(INSTDIR)/tests/keys
(cd $(INSTDIR)/tests/keys ; ../../../tools/create-key.sh logkey)
mkdir $(INSTDIR)/tests/mergedb
mkdir $(INSTDIR)/tests/mergedb/chains
touch $(INSTDIR)/tests/mergedb/logorder
mkdir $(INSTDIR)/tests/known_roots
cp tools/testcerts/roots/* $(INSTDIR)/tests/known_roots
@for machine in $(MACHINES); do \
(cd $(INSTDIR); ../tools/compileconfig.py --config ../test/catlfish-test.cfg --localconfig ../test/catlfish-test-local-$$machine.cfg) ; \
mkdir -p $(INSTDIR)/tests/machine/machine-$$machine/db ; \
touch $(INSTDIR)/tests/machine/machine-$$machine/db/index ; \
touch $(INSTDIR)/tests/machine/machine-$$machine/db/newentries ; \
done
(cd $(INSTDIR); ../tools/compileconfig.py --config ../test/catlfish-test.cfg --localconfig ../test/catlfish-test-local-signing.cfg)
mkdir $(INSTDIR)/tests/privatekeys
mkdir $(INSTDIR)/tests/publickeys
@for node in $(NODES); do \
(cd $(INSTDIR)/tests/privatekeys ; ../../../tools/create-key.sh $$node) ; \
mv $(INSTDIR)/tests/privatekeys/$$node.pem $(INSTDIR)/tests/publickeys/ ; \
mkdir -p test/nodes/$$node/log ; \
done
(cd $(INSTDIR)/tests/privatekeys ; ../../../tools/create-key.sh merge-1)
mv $(INSTDIR)/tests/privatekeys/merge-1.pem $(INSTDIR)/tests/publickeys/
tests-start:
@for node in $(NODES); do \
(cd $(INSTDIR) ; bin/run_erl -daemon ../test/nodes/$$node/ ../test/nodes/$$node/log/ "exec bin/erl -config $$node") \
done
@for i in 1 2 3 4 5 6 7 8 9 10; do \
echo "waiting for system to start" ; \
sleep 0.5 ; \
allstarted=1 ; \
notstarted= ; \
for testurl in $(TESTURLS); do \
if curl -s -k -4 https://$$testurl > /dev/null ; then : ; else allstarted=0 ; notstarted="$$testurl $$notstarted" ; fi ; \
: ; \
done ; \
if [ $$allstarted -eq 1 ]; then break ; \
elif [ $$i -eq 10 ]; then echo Not started: $$notstarted ; fi ; \
done
tests-run:
@(cd $(INSTDIR) && python ../tools/testcase1.py https://localhost:8080/ tests/keys/logkey.pem) || (echo "Tests failed" ; false)
@(cd $(INSTDIR) && python ../tools/fetchallcerts.py $(BASEURL) --publickey=tests/keys/logkey.pem) || (echo "Verification failed" ; false)
@(cd $(INSTDIR) && rm -f submittedcerts)
@(cd $(INSTDIR) && python ../tools/submitcert.py --parallel=1 --store ../tools/testcerts/cert1.txt --check-sct --sct-file=submittedcerts $(BASEURL) --publickey=tests/keys/logkey.pem) || (echo "Submission failed" ; false)
@(cd $(INSTDIR) && python ../tools/submitcert.py --parallel=1 --store ../tools/testcerts/cert2.txt --check-sct --sct-file=submittedcerts $(BASEURL) --publickey=tests/keys/logkey.pem) || (echo "Submission failed" ; false)
@(cd $(INSTDIR) && python ../tools/submitcert.py --parallel=1 --store ../tools/testcerts/cert3.txt --check-sct --sct-file=submittedcerts $(BASEURL) --publickey=tests/keys/logkey.pem) || (echo "Submission failed" ; false)
@(cd $(INSTDIR) && python ../tools/submitcert.py --parallel=1 --store ../tools/testcerts/cert4.txt --check-sct --sct-file=submittedcerts $(BASEURL) --publickey=tests/keys/logkey.pem) || (echo "Submission failed" ; false)
@(cd $(INSTDIR) && python ../tools/submitcert.py --parallel=1 --store ../tools/testcerts/cert5.txt --check-sct --sct-file=submittedcerts $(BASEURL) --publickey=tests/keys/logkey.pem) || (echo "Submission failed" ; false)
@(cd $(INSTDIR) && python ../tools/submitcert.py --parallel=1 --store ../tools/testcerts/pre1.txt --check-sct --sct-file=submittedcerts $(BASEURL) --publickey=tests/keys/logkey.pem) || (echo "Submission failed" ; false)
@(cd $(INSTDIR) && python ../tools/submitcert.py --parallel=1 --store ../tools/testcerts/pre2.txt --check-sct --sct-file=submittedcerts $(BASEURL) --publickey=tests/keys/logkey.pem) || (echo "Submission failed" ; false)
@(cd $(INSTDIR) && python ../tools/merge.py --config ../test/catlfish-test.cfg --localconfig ../test/catlfish-test-local-merge.cfg) || (echo "Merge failed" ; false)
tests-run2:
@(cd $(INSTDIR) ; python ../tools/verifysct.py --sct-file=submittedcerts --parallel 1 $(BASEURL) --publickey=tests/keys/logkey.pem) || echo "Verification of SCT:s failed"
tests-stop:
@for node in $(NODES); do \
./tools/halt.py to_erl test/nodes/$$node/ ; \
done
tests-wait:
sleep 5
tests:
tools/compileconfig.py --config=test/catlfish-test.cfg --testmakefile=test/test.mk --machines 1
@make tests-prepare
@make tests-start
@make tests-run || (make tests-stop ; false)
@make tests-wait
@make tests-stop
@make tests-wait
@make tests-start
@make tests-run2 || (make tests-stop ; false)
@make tests-wait
@make tests-stop
tests-createca:
mkdir $(INSTDIR)/tests/httpsca
( cd $(INSTDIR)/tests/httpsca ; \
mkdir -p demoCA/newcerts ; \
touch demoCA/index.txt ; \
echo 00 > demoCA/serial ; \
echo '[ req ]' > caconfig.txt ; \
echo 'distinguished_name = req_distinguished_name' >> caconfig.txt ; \
echo 'x509_extensions = v3_ca' >> caconfig.txt ; \
echo '[ req_distinguished_name ]' >> caconfig.txt ; \
echo '[ v3_ca ]' >> caconfig.txt ; \
echo 'basicConstraints=CA:true' >> caconfig.txt ; \
openssl req -newkey rsa:2048 -keyout key.pem -out req.csr -nodes -subj '/countryName=SE/stateOrProvinceName=Stockholm/organizationName=Test/commonName=ca/O=ca' -config caconfig.txt ; \
openssl ca -in req.csr -selfsign -keyfile key.pem -out demoCA/cacert.pem -batch \
)
tests-createcert:
mkdir $(INSTDIR)/tests/httpscert
openssl req -new -newkey rsa:2048 -keyout $(INSTDIR)/tests/httpscert/httpskey-1.pem -out $(INSTDIR)/tests/httpsca/httpscert-1.csr -nodes -subj '/countryName=SE/stateOrProvinceName=Stockholm/organizationName=Test/CN=localhost'
( cd $(INSTDIR)/tests/httpsca ; \
openssl ca -in httpscert-1.csr -keyfile key.pem -out httpscert-1.pem -batch \
)
cp $(INSTDIR)/tests/httpsca/httpscert-1.pem $(INSTDIR)/tests/httpscert/
# Unit testing.
check: all
test/check.erl
|