arnaucube
arnaucube/go-blindsecp256k1Public Self-hosted repository
Add test hash odd bytes for js compatibility

To ensure compatibility with https://github.com/arnaucube/blindsecp256k1-js/
arnaucube root@arnaucube.com
Thu, 11 Feb 2021 23:23:35 +0100
commit

8ac13100e7e4a49aaad28a73c15ebdf9ce0f8e13

parent

ac5d00b89229c8edcaa5e31cc62470fe74c32f37

2 files changed, 26 insertions(+), 3 deletions(-)

jump to
M blindsecp256k1.go → blindsecp256k1.go

@@ -157,8 +157,8 @@ }

// Blind performs the blinding operation on m using signerR parameter func Blind(m *big.Int, signerR *Point) (*big.Int, *UserSecretData, error) { - if !btcec.S256().IsOnCurve(signerR.X, signerR.Y) { - return nil, nil, fmt.Errorf("signerR point is not on secp256k1") + if err := signerR.isValid(); err != nil { + return nil, nil, fmt.Errorf("signerR %s", err) } u := &UserSecretData{}

@@ -172,7 +172,7 @@ u.F = aR.Add(bG)

// TODO check that F != O (point at infinity) if err := u.F.isValid(); err != nil { - return nil, nil, err + return nil, nil, fmt.Errorf("u.F %s", err) } rx := new(big.Int).Mod(u.F.X, N)
M blindsecp256k1_test.go → blindsecp256k1_test.go

@@ -4,6 +4,7 @@ import (

"math/big" "testing" + "github.com/ethereum/go-ethereum/crypto" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" )

@@ -36,6 +37,28 @@

// signature can be verified with signer PublicKey verified := Verify(msg, sig, signerPubK) assert.True(t, verified) +} + +func TestHashMOddBytes(t *testing.T) { + // This test is made with same values than + // https://github.com/arnaucube/blindsecp256k1-js to ensure + // compatibility + mStr := "3024162961766929396601888431330224482373544644288322432261208139289299439809" + m, ok := new(big.Int).SetString(mStr, 10) + require.True(t, ok) + mBytes := m.Bytes() + + hBytes := crypto.Keccak256(mBytes[3:]) + h := new(big.Int).SetBytes(hBytes) + assert.Equal(t, + "57523339312508913023232057765773019244858443678197951618720342803494056599369", + h.String()) + + hBytes = crypto.Keccak256(append(mBytes, []byte{0x12, 0x34}...)) + h = new(big.Int).SetBytes(hBytes) + assert.Equal(t, + "9697834584560956691445940439424778243200861871421750951058436814122640359156", + h.String()) } // func newBigIntWithBitLen(n int) *big.Int {