CoconutGo

package module
v0.8.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 11, 2019 License: AGPL-3.0 Imports: 0 Imported by: 0

README

CoconutGo

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

Pre-requisites

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.

Test

In order to run tests, simply use the following:

go test -v ./...
Benchmarks

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

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package client encapsulates all calls to issuers and providers.
Package client encapsulates all calls to issuers and providers.
config
Package config defines configuration used by coconut client.
Package config defines configuration used by coconut client.
cryptoworker
Package cryptoworker combines coconut worker and job workers for a client instance.
Package cryptoworker combines coconut worker and job workers for a client instance.
common
comm
Package comm consists of set of helper communication related functions used by both client and server.
Package comm consists of set of helper communication related functions used by both client and server.
comm/commands
Package commands define command types used by coconut server.
Package commands define command types used by coconut server.
comm/packet
Package packet defines packet structure that is sent on the wire between multiple entities
Package packet defines packet structure that is sent on the wire between multiple entities
utils
Package utils provides auxiliary functions used throughout the repo
Package utils provides auxiliary functions used throughout the repo
Package constants declares system-wide constants.
Package constants declares system-wide constants.
crypto
bpgroup
Package bpgroup provides wrapper for groups and operations involved in the bilinear pairing
Package bpgroup provides wrapper for groups and operations involved in the bilinear pairing
coconut/concurrency/coconutworker
Package coconutworker is a wrapper for computing coconut-related operations concurrently, such that the callee does not need to be concerned with system-wide params.
Package coconutworker is a wrapper for computing coconut-related operations concurrently, such that the callee does not need to be concerned with system-wide params.
coconut/concurrency/jobpacket
Package jobpacket provides allows implementing simple job queue.
Package jobpacket provides allows implementing simple job queue.
coconut/concurrency/jobqueue
Package jobqueue is implemented based on eapache's infinite channel template: https://github.com/eapache/channels/blob/master/infinite_channel.go As explained by the author in documentation: https://godoc.org/github.com/eapache/channels due to Go's type system limitations direct import of his library is impractical.
Package jobqueue is implemented based on eapache's infinite channel template: https://github.com/eapache/channels/blob/master/infinite_channel.go As explained by the author in documentation: https://godoc.org/github.com/eapache/channels due to Go's type system limitations direct import of his library is impractical.
coconut/concurrency/jobworker
Package jobworker implements worker for performing tasks defined by jobpacket that are in the queue.
Package jobworker implements worker for performing tasks defined by jobpacket that are in the queue.
coconut/scheme
Package coconut provides the functionalities required by the Coconut Scheme.
Package coconut provides the functionalities required by the Coconut Scheme.
coconut/utils
Package utils provides auxiliary functions required by the Coconut Scheme.
Package utils provides auxiliary functions required by the Coconut Scheme.
elgamal
Package elgamal provides primitives required by the ElGamal encryption scheme.
Package elgamal provides primitives required by the ElGamal encryption scheme.
testutils
Package schemetest provides functions used for testing both regular and concurrent coconut scheme.
Package schemetest provides functions used for testing both regular and concurrent coconut scheme.
Package daemon defines common structure for all daemonizable services, like ethereum-watcher, issuing authority, etc.
Package daemon defines common structure for all daemonizable services, like ethereum-watcher, issuing authority, etc.
client
package client provides API for communication with an Ethereum blockchain.
package client provides API for communication with an Ethereum blockchain.
watcher/config
Package config defines configuration used by Ethereum watcher.
Package config defines configuration used by Ethereum watcher.
Package jobqueue is implemented based on eapache's infinite channel template:
Package jobqueue is implemented based on eapache's infinite channel template:
Package logger provides the functionalities for logging actions of coconut server/client.
Package logger provides the functionalities for logging actions of coconut server/client.
nym
token
Package token defines Nym token structure and associated methods.
Package token defines Nym token structure and associated methods.
Package server defines structure for coconut IA server.
Package server defines structure for coconut IA server.
config
Package config defines configuration used by coconut server.
Package config defines configuration used by coconut server.
grpc/listener
Package grpclistener implements the support for incoming gRPCs.
Package grpclistener implements the support for incoming gRPCs.
issuer
Package issuer defines structure for coconut Issuing Authority.
Package issuer defines structure for coconut Issuing Authority.
issuer/utils
package utils defines utility functions/structures required by or with an issuer.
package utils defines utility functions/structures required by or with an issuer.
listener
Package listener implements the support for incoming TCP connections.
Package listener implements the support for incoming TCP connections.
listener/requesthandler
Package requesthandler contains functions that are used by issuing authorities and service providers
Package requesthandler contains functions that are used by issuing authorities and service providers
monitor
Package monitor implements the support for monitoring the state of the Tendermint Blockchain (later Ethereum I guess?) to sign all committed requests.
Package monitor implements the support for monitoring the state of the Tendermint Blockchain (later Ethereum I guess?) to sign all committed requests.
monitor/processor
Package processor processes data obtained by the monitor.
Package processor processes data obtained by the monitor.
provider
Package provider defines basic structure for a coconut Service Provider server.
Package provider defines basic structure for a coconut Service Provider server.
requestqueue
Package requestqueue is implemented based on eapache's infinite channel template: https://github.com/eapache/channels/blob/master/infinite_channel.go As explained by the author in documentation: https://godoc.org/github.com/eapache/channels due to Go's type system limitations direct import of his library is impractical.
Package requestqueue is implemented based on eapache's infinite channel template: https://github.com/eapache/channels/blob/master/infinite_channel.go As explained by the author in documentation: https://godoc.org/github.com/eapache/channels due to Go's type system limitations direct import of his library is impractical.
serverworker
Package serverworker gives additional functionalities to regular CoconutWorker that are required by a server instance.
Package serverworker gives additional functionalities to regular CoconutWorker that are required by a server instance.
serverworker/commandhandler
Package commandhandler contains functions that are used to resolve commands issued to issuers and providers.
Package commandhandler contains functions that are used to resolve commands issued to issuers and providers.
storage
Package storage implements an interface to a goleveldb database.
Package storage implements an interface to a goleveldb database.
tendermint
account
Package account defines Nym account structure and associated methods.
Package account defines Nym account structure and associated methods.
client
Package client simplifies communication with the blockchain application
Package client simplifies communication with the blockchain application
nymabci
main.go - Entry point for Tendermint ABCI for Nym Copyright (C) 2019 Jedrzej Stuczynski.
main.go - Entry point for Tendermint ABCI for Nym Copyright (C) 2019 Jedrzej Stuczynski.
nymabci/code
Package code defines return codes for the Nym application
Package code defines return codes for the Nym application
nymabci/constants
Package constants declares system-wide constants.
Package constants declares system-wide constants.
nymabci/nymapplication
Package nymapplication defines the functionality of the blockchain application.
Package nymapplication defines the functionality of the blockchain application.
nymabci/query
Package query defines query logic for the Nym application.
Package query defines query logic for the Nym application.
nymabci/transaction
Package transaction defines transaction logic for the Nym application.
Package transaction defines transaction logic for the Nym application.
nymnode
main.go - Entrypoint to the custom Nym Tendermint node.
main.go - Entrypoint to the custom Nym Tendermint node.
nymnode/testnode
package test_node wraps the nymnode to create a single node cluster to be used for testing.
package test_node wraps the nymnode to create a single node cluster to be used for testing.
main.go - Main file for a simple Trusted Third Party (TTP) keygen CLI Copyright (C) 2018-2019 Jedrzej Stuczynski.
main.go - Main file for a simple Trusted Third Party (TTP) keygen CLI Copyright (C) 2018-2019 Jedrzej Stuczynski.
Package worker provides background worker tasks.
Package worker provides background worker tasks.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL