diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/common.sh | 8 | ||||
| -rwxr-xr-x | test/ecgen.sh | 55 | ||||
| -rw-r--r-- | test/src/util/test_bits.c | 4 |
3 files changed, 54 insertions, 13 deletions
diff --git a/test/common.sh b/test/common.sh index 42978a3..7d1ea22 100644 --- a/test/common.sh +++ b/test/common.sh @@ -7,7 +7,6 @@ #### ecgen="../ecgen" -econvert="../econvert" ASSERT="lib/assert.sh/assert.sh" JSON="lib/JSON.sh/JSON.sh" @@ -41,3 +40,10 @@ canonical_num() { num=$(strip_num "$1") echo "ibase=16;${num^^}" | bc } + +get_pari_order() { + p=$(canonical_num $(echo $1 | ${JSON} -x field\",\"p | cut -f 2)) + a=$(canonical_num $(echo $1 | ${JSON} -x \"a | cut -f 2)) + b=$(canonical_num $(echo $1 | ${JSON} -x \"b | cut -f 2)) + echo "ellcard(ellinit([${a}, ${b}], ${p}))" | gp -f -q | tr -cd [:digit:] 2>/dev/null +}
\ No newline at end of file diff --git a/test/ecgen.sh b/test/ecgen.sh index 38670bc..96dacb3 100755 --- a/test/ecgen.sh +++ b/test/ecgen.sh @@ -101,20 +101,24 @@ function nums() { function anomalous() { start_test assert_raises "${ecgen} --fp --anomalous -r 20" - out=$(${ecgen} --fp --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) + for i in $(seq 10); do + out=$(${ecgen} --fp --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) + done } function supersingular() { start_test assert_raises "${ecgen} --fp --supersingular -r -c 5 20" - out=$(${ecgen} --fp --supersingular -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) - order_m1=$(echo $(canonical_num $order) - 1 | bc) - assert "canonical_num $p" $order_m1 + for i in $(seq 10); do + out=$(${ecgen} --fp --supersingular -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) + order_m1=$(echo $(canonical_num $order) - 1 | bc) + assert "canonical_num $p" $order_m1 + done assert_raises "${ecgen} --fp --supersingular --input=data/prime.in 64" @@ -187,12 +191,42 @@ function hex() { function cm() { start_test assert_raises "${ecgen} --fp --order=2147483723 32" - assert_raises "${ecgen} --fp --order=123456789012345678901234567890123456789012345678901234568197 196" + assert_raises "${ecgen} --fp --order=123456789012345678901234567890123456789012345678901234568197 --threads=5 196" assert_raises "${ecgen} --fp --order=46874566546,3546,3125 64" + assert_raises "${ecgen} --fp -u --order=46874566546,3546,3125 64" assert_raises "${ecgen} --fp --order=0 16" 1 assert_raises "${ecgen} --fp --order=0x1000 8" 1 } +function cm_orders() { + start_test + for i in $(seq 5 100); do + out=$(timeout -k 4 3 ${ecgen} --fp -n $i --points=none 6 2>/dev/null) + if [[ -z "$out" || "$out" = "[" ]]; then + continue + fi + order=$(echo $out | ${JSON} -x ^0,\"order\" | cut -f 2) + pari_order=$(get_pari_order "$out") + assert "canonical_num $order" "$pari_order" + done + + prime_orders=(45678945611413 47889465415131 78246132456157 3879641663983 134537095890397 3790687732807) + for ord in "${prime_orders[@]}"; do + out=$(${ecgen} --fp -r --order=$ord 64 2>/dev/null) + p=$(echo $out | ${JSON} -x field\",\"p | cut -f 2) + order=$(echo $out | ${JSON} -x ^0,\"order\" | cut -f 2) + assert "canonical_num $order" $ord + done + + composite_orders=(106618070007935 32268705670290 78286235471710 93953327960423 17042092126557 43615536370894) + for ord in "${composite_orders[@]}"; do + out=$(${ecgen} --fp -r --order=$ord 64 2>/dev/null) + p=$(echo $out | ${JSON} -x field\",\"p | cut -f 2) + order=$(echo $out | ${JSON} -x ^0,\"order\" | cut -f 2) + assert "canonical_num $order" $ord + done +} + function secg() { function test_order() { name="${1}" @@ -235,5 +269,6 @@ twist cli hex cm +cm_orders secg end_suite ecgen diff --git a/test/src/util/test_bits.c b/test/src/util/test_bits.c index 269d1f6..e5a2f73 100644 --- a/test/src/util/test_bits.c +++ b/test/src/util/test_bits.c @@ -243,14 +243,14 @@ Test(bits, test_bits_or) { bits_t *other_bits = bits_new(6); other_bits->bits[0] = 0b10000000; - bits_t * or = bits_or(bits, other_bits); + bits_t *or = bits_or(bits, other_bits); cr_assert_not_null(or, ); cr_assert_eq(or->bitlen, 10, ); cr_assert_eq(or->bits[0], 0b00001000, ); cr_assert_eq(or->bits[1], 0b11000000, ); bits_free(&bits); bits_free(&other_bits); - bits_free(& or); + bits_free(&or); } Test(bits, test_bits_and) { |
