A rust implementation of the VOPRF protocol in draft-irtf-cfrg-voprf.
Run:
git clone git@github.com:alxdavids/voprf-poc.git
cd voprf-poc/rust
git submodule update --init --recursive
Run:
make build
Run:
make docs
Running this command should open a new browser window with the documentation page.
Run tests:
make test
Run benchmarks:
make bench
Starts a server for running the (V)OPRF protocol. See "Supported
ciphersuites" for supported values of <group_name>
.
-
Run server (OPRF):
make server GROUP=<group>
-
Expected output:
RUST_BACKTRACE=1 cargo build Finished dev [unoptimized + debuginfo] target(s) in 0.15s RUST_BACKTRACE=1 ./target/debug/main --group=<group> --mode=server --max_evals=10 Server listening at 127.0.0.1:3001 and running with ciphersuite OPRF-<group>-HKDF-SHA512-<h2c>
-
-
Run server (VOPRF):
make server GROUP=<group> VERIFIABLE=1
-
Expected output:
RUST_BACKTRACE=1 cargo build Finished dev [unoptimized + debuginfo] target(s) in 0.59s RUST_BACKTRACE=1 ./target/debug/main --group=<group> --mode=server --verifiable=true --test=0 ***** Testing mode activated ***** Secret key: <secret-key> Server listening at 127.0.0.1:3001 and running with ciphersuite VOPRF-<group>-HKDF-SHA512-<h2c> Public key: <public-key>
-
-
We support
<group> in [P384, P521, curve448, ristretto255]
Starts a client that communicates with a running (V)OPRF server (default port 3001).
-
Run client (OPRF):
make client GROUP=<group>
-
Expected output (OPRF):
RUST_BACKTRACE=1 cargo build Finished dev [unoptimized + debuginfo] target(s) in 0.16s RUST_BACKTRACE=1 ./target/debug/main --group=P384 --mode=client --n=3 Client attempting to connect to http://127.0.0.1:3001 and running with ciphersuite OPRF-P384-HKDF-SHA512-SSWU-RO *********** Inputs =========== ... *********** *********** Blinds =========== ... *********** *********** Outputs =========== ... *********** *********** Evaluated elements =========== ... *********** *********** Proof values =========== ***********
-
-
Run client (VOPRF):
make client GROUP=<group> VERIFIABLE=1
-
Expected output (VOPRF):
RUST_BACKTRACE=1 cargo build Finished dev [unoptimized + debuginfo] target(s) in 0.16s RUST_BACKTRACE=1 ./target/debug/main --group=<group> --mode=client --n=3 --verifiable=true --pk=<public_key> Public key: <public_key> Client attempting to connect to http://127.0.0.1:3001 and running with ciphersuite VOPRF-<group>-HKDF-SHA512-<h2c> *********** Inputs =========== ... *********** *********** Blinds =========== ... *********** *********** Outputs =========== ... *********** *********** Evaluated elements =========== ... *********** *********** Proof values =========== ... ***********
-
Run the server & client above, with an additional flag TEST=<value>
where <value>
corresponds to the index of the test vector that is
required. Valid test vectors currently take indices between 0
and 8
.
- OPRF-P384-HKDF-SHA512-SSWU-RO,
<group_name> = P384
- VOPRF-P384-HKDF-SHA512-SSWU-RO,
<group_name> = P384
- OPRF-P521-HKDF-SHA512-SSWU-RO,
<group_name> = P521
- VOPRF-P521-HKDF-SHA512-SSWU-RO,
<group_name> = P521
- OPRF-curve448-HKDF-SHA512-ELL2-RO,
<group_name> = curve448
- VOPRF-curve448-HKDF-SHA512-ELL2-RO,
<group_name> = curve448
- OPRF-ristretto255-HKDF-SHA512-ELL2-RO
<group_name> = ristretto255
(EXPERIMENTAL) - VOPRF-ristretto255-HKDF-SHA512-ELL2-RO
<group_name> = ristretto255
(EXPERIMENTAL)