To run both client and server
docker-compose up
# if you've made some changes, rebuild the images
docker-compose up --build
# cleanup afterwards
docker-compose down
Running the tests
cargo test
The client / server use gRPC, via the tonic library. The protocol definition is in zkp-auth.proto
.
Set the username and password using environment vars:
AUTH_USER=foo AUTH_PASS=7 cargo run --bin client
cargo run --bin server
- cryptographically secure random numbers
- timeout challenges
- use a real database to store usernames / commits
- experiment with a streaming gRPC API which would allow to not store the challenges, they'd be part of the stream state