Documentation ¶
Overview ¶
Package urs implements Unique Ring Signatures, as defined in short version: http://csiflabs.cs.ucdavis.edu/~hbzhang/romring.pdf full version: http://eprint.iacr.org/2012/577.pdf
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type PrivateKey ¶
PrivateKey corresponds to a ECDSA private key.
func GenerateKey ¶
GenerateKey generates a public and private key pair.
type PublicKeyRing ¶
type PublicKeyRing struct {
Ring []PublicKey
}
PublicKeyRing is a list of public keys.
func NewPublicKeyRing ¶
func NewPublicKeyRing(cap uint) *PublicKeyRing
NewPublicKeyRing creates a new public key ring. All keys added to the ring must use the same curve.
func (*PublicKeyRing) Add ¶
func (r *PublicKeyRing) Add(pub PublicKey)
Add adds a public key, pub to the ring. All keys added to the ring must use the same curve.
func (*PublicKeyRing) Bytes ¶
func (r *PublicKeyRing) Bytes() (b []byte)
Bytes returns the public key ring as a byte slice.
type RingSign ¶
func Sign ¶
func Sign(rand io.Reader, priv *PrivateKey, R *PublicKeyRing, m []byte) (rs *RingSign, err error)
Sign signs an arbitrary length message (which should NOT be the hash of a larger message) using the private key, priv and the public key ring, R. It returns the signature as a struct of type RingSign. The security of the private key depends on the entropy of rand. The public keys in the ring must all be using the same curve.