summaryrefslogtreecommitdiff
path: root/test/ecgen.sh
blob: b8ddfb394bbec13604a469e919d8dbdacc3cbe20 (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
#!/usr/bin/env bash
####
#
# ecgen, tool for generating Elliptic curve domain parameters
# Copyright (C) 2017 J08nY
#
####

. ./common.sh

function runs() {
	start_test
	assert_raises "${ecgen} --help"
	assert_raises "${ecgen} --version"
	assert_raises "${ecgen}" 64
}

function csv() {
	start_test
	assert_matches "${ecgen} --fp -tcsv --input=data/fp_10_a.csv.in 10" "$(cat data/fp_10_a.csv)"
	assert_matches "${ecgen} --f2m -tcsv --input=data/f2m_10_a.csv.in 10" "$(cat data/f2m_10_a.csv)"
}

function json() {
	start_test
	assert_raises "${ecgen} --fp -tjson --input=data/fp_10_a.csv.in 10"
	assert_raises "${ecgen} --f2m -tjson --input=data/f2m_10_a.csv.in 10"
	fp=$(${ecgen} --fp -tjson --input=data/fp_10_a.csv.in 10 2>/dev/null)
	f2m=$(${ecgen} --f2m -tjson --input=data/f2m_10_a.csv.in 10 2>/dev/null)
	assert_raises "${JSON}" 0 "${fp}"
	assert_matches "${JSON} -x field\\\",\\\"p" "0x000b" "${fp}"
	assert_matches "${JSON} -x \\\"a\\\"" "0x0001" "${fp}"
	assert_matches "${JSON} -x \\\"b\\\"" "0x0002" "${fp}"
	assert_matches "${JSON} -x \\\"order\\\"" "0x0010" "${fp}"

	assert_raises "${JSON}" 0 "${f2m}"
	assert_matches "${JSON} -x field\\\",\\\"m" "0xa" "${f2m}"
	assert_matches "${JSON} -x field\\\",\\\"e1" "0x3" "${f2m}"
	assert_matches "${JSON} -x field\\\",\\\"e2" "0x0" "${f2m}"
	assert_matches "${JSON} -x field\\\",\\\"e3" "0x0" "${f2m}"
	assert_matches "${JSON} -x \\\"a\\\"" "0x02ed" "${f2m}"
	assert_matches "${JSON} -x \\\"b\\\"" "0x00b7" "${f2m}"
	assert_matches "${JSON} -x \\\"order\\\"" "0x3de" "${f2m}"
}

function exhaustive() {
	start_test
	assert_raises "${ecgen} --fp -r 10"
	assert_raises "${ecgen} --f2m -r 10"
	assert_raises "${ecgen} --fp -r -p 10"
	assert_raises "${ecgen} --f2m -r -u 10"
	assert_raises "${ecgen} --fp -r -i -u 10"
	assert_raises "${ecgen} --f2m -r -i -u 10"
	assert_raises "${ecgen} --fp -r -k 10 10"
	assert_raises "${ecgen} --fp -r -K 10"
	assert_raises "${ecgen} --f2m -r -K 10"
	assert_raises "${ecgen} --fp -r -K1 10"
	assert_raises "${ecgen} --f2m -r -K1 10"

	assert_raises "${ecgen} --fp -r --points=random 10"
	assert_raises "${ecgen} --fp -r --points=10random 10"
	assert_raises "${ecgen} --fp -r --points=prime 10"
	assert_raises "${ecgen} --fp -r --points=nonprime 10"
	assert_raises "${ecgen} --fp -r --points=all 10"
	assert_raises "${ecgen} --fp -r --points=none 10"

	assert_raises "${ecgen} --f2m -r --points=random 10"
	assert_raises "${ecgen} --f2m -r --points=10random 10"
	assert_raises "${ecgen} --f2m -r --points=prime 10"
	assert_raises "${ecgen} --f2m -r --points=nonprime 10"
	assert_raises "${ecgen} --f2m -r --points=all 10"
	assert_raises "${ecgen} --f2m -r --points=none 10"

	assert_raises "${ecgen} --fp -r -c 5 10"
}

function ansix962() {
	start_test
	assert_raises "${ecgen} --fp -r --ansi 10"
	assert_raises "${ecgen} --f2m -r --ansi 10"
}

function anomalous() {
	start_test
	assert_raises "${ecgen} --fp --anomalous -r 20"
	out=$(${ecgen} --fp -tjson --anomalous -r 20 2>/dev/null)
	p=$(echo $out | ${JSON} -x field\",\"p | cut -f 2)
	order=$(echo $out | ${JSON} -x ^0,\"order\" | cut -f 2)
	assert "strip_num $p" $(strip_num $order)
}

function invalid() {
	start_test
	assert_raises "${ecgen} --fp -r -i 10"
	assert_raises "${ecgen} --f2m -r -i 10"
	assert_raises "${ecgen} --fp --threads=2 -r -i -u 10"
	assert_raises "${ecgen} --f2m --threads=2 -r -i -u 10"
	assert_raises "${ecgen} --fp --threads=auto -r -i -u 10"
	assert_raises "${ecgen} --f2m --threads=auto -r -i -u 10"
}

function cli() {
	start_test
	assert_raises "${ecgen} --threads=a" 1
	assert_raises "${ecgen} --format=something" 1
	assert_raises "${ecgen} --koblitz=2" 1
	assert_raises "${ecgen} --points=something" 1
	assert_raises "${ecgen} --seed=some" 64
	assert_raises "${ecgen} 1 2 3" 64
	assert_raises "${ecgen} --fp --f2m 1" 1
}

function hex() {
	start_test
	assert_raises "${ecgen} --fp -r --hex-check=\"abc\" 32 | grep \"abc\""
}

. ${ASSERT} -v
start_suite
runs
csv
json
exhaustive
ansix962
anomalous
invalid
cli
hex
end_suite ecgen