The protocols implemented in this repository are written up in a paper available here.
This project contains some implementations of secure privacy-friendly billing for smart meters. It is build on top of proj_net.
Documentation automatically generated by cargo doc is available here. And there is a demo program in src/main.rs. As an example usage of the test program, see ./test_scripts and demo.odp.
This project is licenced under GPL version 3 or later as published by the Free Software Foundation.
Please do not use this for anything important. The cryptography in proj_crypto has not been reviewed by a professional. And this implementation is far from production ready. Furthermore, the producer in the three party protocol does not check that it has received all of the measurements which it expects, from the correct times. This is necessary in a real implementation to prevent replay attacks by the customer but it is not implemented here as it would be a pain in the live demo.
Building (you may need to install libsodium first):
cargo build
Testing:
Be warned that he timing on the automated test of the three party protocol is very temperamental on slower machine, probably because my code sucks. If you are having problems please first try the interactive demo to determine if the issue is just in the timing of the test. A quick and dirty solution would be to increase the thread sleeps in billing/mod.rs around the part which is not working.
cargo test
To generate documentation:
cargo doc
For documentation of the cryptography see proj_crypto.