Categorygithub.com/niclabs/tcrsa
modulepackage
0.0.5
Repository: https://github.com/niclabs/tcrsa.git
Documentation: pkg.go.dev

# README

Golang Threshold Cryptography Library - RSA implementation

Go Report Card Build Status GoDoc

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.