go-blindsecp256k1/v0/blindsecp256k1v0_test.go
v0/blindsecp256k1v0_test.goRaw
1package blindsecp256k1v0
2
3import (
4 "math/big"
5 "testing"
6
7 "github.com/stretchr/testify/assert"
8)
9
10func TestFlow(t *testing.T) {
11 // signer: create new signer key pair
12 sk := NewPrivateKey()
13 signerPubK := sk.Public()
14
15 // signer: when user requests new R parameter to blind a new msg,
16 // create new signerR (public) with its secret k
17 k, signerR := NewRequestParameters()
18
19 // user: blinds the msg using signer's R
20 msg := new(big.Int).SetBytes([]byte("test"))
21 msgBlinded, userSecretData := Blind(msg, signerPubK, signerR)
22
23 // signer: signs the blinded message using its private key & secret k
24 sBlind := sk.BlindSign(msgBlinded, k)
25
26 // user: unblinds the blinded signature
27 sig := Unblind(sBlind, msg, userSecretData)
28
29 // signature can be verified with signer PublicKey (Q)
30 verified := Verify(msg, sig, signerPubK)
31 assert.True(t, verified)
32}