This is a Go implementation of the Coconut selective disclosure cerendtial scheme by Sonnino et al.: https://arxiv.org/pdf/1802.07344.pdf. It supports threshold issuance on multiple public and privMate attributes, re-randomization and multiple unlinkable selective attribute revelations.
The implementation is based on the existing Python version: https://github.com/asonnino/coconut
To run the code, you only need to follow the standard Go installation procedure as described in https://golang.org/doc/install.
All of the requiered dependencies are attached in the vendor directory.
In order to run tests, simply use the following:
go test -v ./...
The benchmarks were performed on 64bit Ubuntu 18.04.1 LTS VM with 2 cores of 3.6GHz Ryzen 1600 assigned. Each individual benchmark was run single-threaded for 1 minute with -benchtime=60s
flag.
REQUIRE RERUNNING