arnaucube
arnaucube/go-blindsecp256k1Public Self-hosted repository
go-blindsecp256k1/README.md
README.mdRaw
 1# go-blindsecp256k1
 2Blind signature over [secp256k1](https://en.bitcoin.it/wiki/Secp256k1), based on *"[An Efficient Blind Signature Scheme Based on the Elliptic CurveDiscrete Logarithm Problem](http://www.isecure-journal.com/article_39171_47f9ec605dd3918c2793565ec21fcd7a.pdf)"* paper.
 3
 4**WARNING**: this repo is experimental, do not use in production.
 5
 6## Usage
 7
 8```go
 9// message to be signed
10msg := new(big.Int).SetBytes([]byte("test"))
11
12// create new signer
13signerPrivateData := blindsecp256k1.NewSigner()
14signerPublicData := signerPrivateData.PublicData()
15
16// user blinds the msg
17msgBlinded, user := blindsecp256k1.Blind(msg, signerPublicData)
18
19// signer signs the blinded message
20sBlind := signerPrivateData.BlindSign(msgBlinded)
21
22// user unblinds the blinded signature
23sig := blindsecp256k1.Unblind(sBlind, msg, user)
24
25// signature can be verified with signer PublicKey
26verified := blindsecp256k1.Verify(msg, sig, signerPublicData.Q)
27assert.True(t, verified)
28```