# README
Golang Threshold Cryptography Library - RSA implementation
This library implements the cryptographic algorithms of Victor Shoup's paper Practical Threshold Signatures in the Golang programming language.
The codebase, commments and optimizations were ported from a previous implementation in C language, called tchsm-libtc. As the previous implementation, the objective of this library is to provide a set of primitives to work with.
Requirements
Due to Golang extensive standard library, this implementation does not have external requirements (obviously aside of Golang, version 1.12 or above).
Installing
go get https://github.com/niclabs/tcrsa
To run the tests you just need to use go test
:
go test
# Functions
NewKey creates l key shares for a k-threshold signing scheme.
NewVerificationKey generates an empty Verification Key structure, allocating space for l verification values in I.
PrepareDocumentHash receives a document hash and encodes it in PKCS v1.15 for its signing.
# Structs
KeyMeta stores the meta information of a distributed key generation.
KeyMetaArgs defines the initialization values for key generation.
KeyShare stores the Si value of a node and an unique incremental ID for the node.
SigShare represents a signature share for a document.
VerificationKey represents the data that is needed to verify a Key Share.
# Type aliases
KeyShareList is a list of KeyShare values.
Signature is the completed signature of a document, created after joining k signature shares.
SigShareList is a list of sigShares ready to be joined.