arnaucube
arnaucube/go-blindsecp256k1Public Self-hosted repository
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}