confium-test-harness

The test harness is the canonical tool for evaluating Confium against NIST’s Multi-Party Threshold Schemes (MPTS) reference vectors and for benchmarking protocol implementations.

Install

cargo install confium-test-harness --locked

The harness provides two binaries:

  • confium-test-harness — runs the official test-vector suite.
  • sim — multi-party threshold simulation runner.

Test vectors

Run the NIST MPTS test vectors:

$ confium-test-harness mpts_vectors
running 247 tests across 6 protocols...
frost-ed25519: 48/48 passed
frost-p256: 48/48 passed
cmp20: 42/42 passed
gg18: 39/39 passed
composite: 36/36 passed
transparency: 34/34 passed

All 247 tests passed.

The vector files live at crates/confium-test-harness/tests/vectors/.

Benchmarks

Run the official benchmark suite:

$ confium-test-harness bench --suite standard
running 18 benchmarks across 3 modes (single-key, threshold-sync, threshold-async)...

sign_frost_p256_sync_3_of_5:    2.1ms ± 0.1ms
sign_frost_p256_async_3_of_5:   148ms ± 12ms
sign_cmp20_3_of_5:              3.4ms ± 0.2ms
sign_gg18_3_of_5:               5.8ms ± 0.4ms
verify_ecdsa_p256:              0.8ms ± 0.05ms   (no threshold overhead)
reshare_3_of_5:                 3.2ms ± 0.2ms
...

Results match the numbers published in the evaluators guide.

Simulation runner

sim simulates multi-party signing sessions across multiple processes on a single host (for development / CI):

# Start a coordinator
sim coordinator --port 7000 &

# Start 5 signers
for i in 1 2 3 4 5; do
  sim signer --id "p$i" --coordinator localhost:7000 &
done

# Submit a sign request
sim sign --coordinator localhost:7000 \
  --message "test" \
  --algorithm ECDSA-P256 \
  --quorum 3-of-5

# Watch the session progress
sim watch --coordinator localhost:7000

CI integration

The harness is designed for CI pipelines:

# .github/workflows/test.yml
- name: Run Confium test vectors
  run: confium-test-harness mpts_vectors --junit results.xml

- name: Upload results
  uses: actions/upload-artifact@v4
  with:
    name: confium-test-results
    path: results.xml

See also