arnaucube
arnaucube/go-blindsecp256k1Public Self-hosted repository
Signature.S mod N
arnaucube root@arnaucube.com
Mon, 01 Feb 2021 19:22:21 +0100
commit

d09769d5103365338c8ab5aca32e4e0e78d5296d

parent

40de2973402323ac8a45009140421d4409cbba94

3 files changed, 22 insertions(+), 0 deletions(-)

jump to
M blindsecp256k1.go → blindsecp256k1.go

@@ -157,6 +157,7 @@ func Unblind(sBlind, m *big.Int, u *UserSecretData) *Signature {

// s = a s' + b as := new(big.Int).Mul(u.A, sBlind) s := new(big.Int).Add(as, u.B) + s = new(big.Int).Mod(s, N) return &Signature{ S: s,
M blindsecp256k1_test.go → blindsecp256k1_test.go

@@ -25,6 +25,10 @@ sBlind := sk.BlindSign(msgBlinded, k)

// user: unblinds the blinded signature sig := Unblind(sBlind, msg, userSecretData) + sigB := sig.Bytes() + sig2, err := NewSignatureFromBytes(sigB) + assert.Nil(t, err) + assert.Equal(t, sig, sig2) // signature can be verified with signer PublicKey verified := Verify(msg, sig, signerPubK)
M parsers_test.go → parsers_test.go

@@ -92,6 +92,23 @@ assert.Equal(t, "9426000000000000000000000000000000000000000000000000000000000000f258163f65f65865a79a4279e2ebabb5a57b85501dd4b381d1dc605c434876e34c308bd3f18f062d5cc07f34948ced82f9a76f9c3e65ae64f158412da8e92e6d", hex.EncodeToString(b)) //nolint:lll

sig2, err := NewSignatureFromBytes(b) assert.Nil(t, err) assert.Equal(t, &sig, sig2) + + // Signature with bigger values + s, ok := new(big.Int).SetString("43744879514016998261043792362491545206150700367692876136431010903034023684055", 10) //nolint:lll + require.True(t, ok) + x, ok := new(big.Int).SetString("56183217574518331862027285308947626162625485037257226169003339923450551228164", 10) //nolint:lll + require.True(t, ok) + y, ok := new(big.Int).SetString("62825693913681695979055350889339417157462875026935818721506450621762231021976", 10) //nolint:lll + require.True(t, ok) + sig = Signature{ + S: s, + F: &Point{X: x, Y: y}, + } + b = sig.Bytes() + assert.Equal(t, "d7a75050259cc06415f19bde5460a58325e3050806ba949d9ac9728b71b9b6600457ba001981781ed31acafed3d1e82c2ad53d08e3f293eab2f199ed0193367c98311f1894598c91f10fe415ba4a6d04e1351d07430631c7decdbbdb2615e68a", hex.EncodeToString(b)) //nolint:lll + sig2, err = NewSignatureFromBytes(b) + assert.Nil(t, err) + assert.Equal(t, &sig, sig2) } func TestImportECDSApubKey(t *testing.T) {