Merge pull request #30 from iden3/feature/signaturecomp-scanner Add scanner/valuer interface to babyjub.SignatureComp
arnau 17317030+arnaucube@users.noreply.github.com
Fri, 16 Oct 2020 16:24:44 +0200
3 files changed,
34 insertions(+),
4 deletions(-)
M
babyjub/eddsa.go
→
babyjub/eddsa.go
@@ -178,6 +178,24 @@ return new(Signature).Decompress(*s)
} // Scan implements Scanner for database/sql. +func (s *SignatureComp) Scan(src interface{}) error { + srcB, ok := src.([]byte) + if !ok { + return fmt.Errorf("can't scan %T into Signature", src) + } + if len(srcB) != 64 { + return fmt.Errorf("can't scan []byte of len %d into Signature, want %d", len(srcB), 64) + } + copy(s[:], srcB[:]) + return nil +} + +// Value implements valuer for database/sql. +func (s SignatureComp) Value() (driver.Value, error) { + return s[:], nil +} + +// Scan implements Scanner for database/sql. func (s *Signature) Scan(src interface{}) error { srcB, ok := src.([]byte) if !ok {
M
babyjub/eddsa_test.go
→
babyjub/eddsa_test.go
@@ -135,6 +135,17 @@ assert.Equal(t, true, ok)
} } +func TestSignatureCompScannerValuer(t *testing.T) { + privK := NewRandPrivKey() + var value driver.Valuer //nolint:gosimple this is done to ensure interface compability + value = privK.SignPoseidon(big.NewInt(674238462)).Compress() + scan := privK.SignPoseidon(big.NewInt(1)).Compress() + fromDB, err := value.Value() + assert.Nil(t, err) + assert.Nil(t, scan.Scan(fromDB)) + assert.Equal(t, value, scan) +} + func TestSignatureScannerValuer(t *testing.T) { privK := NewRandPrivKey() var value driver.Valuer@@ -142,8 +153,8 @@ var scan sql.Scanner
value = privK.SignPoseidon(big.NewInt(674238462)) scan = privK.SignPoseidon(big.NewInt(1)) fromDB, err := value.Value() - assert.NoError(t, err) - assert.NoError(t, scan.Scan(fromDB)) + assert.Nil(t, err) + assert.Nil(t, scan.Scan(fromDB)) assert.Equal(t, value, scan) }@@ -157,8 +168,8 @@ var scan sql.Scanner
value = pubKValue scan = pubKScan fromDB, err := value.Value() - assert.NoError(t, err) - assert.NoError(t, scan.Scan(fromDB)) + assert.Nil(t, err) + assert.Nil(t, scan.Scan(fromDB)) assert.Equal(t, value, scan) }
M
go.sum
→
go.sum
@@ -126,6 +126,7 @@ github.com/steakknife/bloomfilter v0.0.0-20180922174646-6819c0d2a570 h1:gIlAHnH1vJb5vwEjIp5kBj/eu99p/bl0Ay2goiPe5xE=
github.com/steakknife/bloomfilter v0.0.0-20180922174646-6819c0d2a570/go.mod h1:8OR4w3TdeIHIh1g6EMY5p0gVNOovcWC+1vpc7naMuAw= github.com/steakknife/hamming v0.0.0-20180906055917-c99c65617cd3 h1:njlZPzLwU639dk2kqnCPPv+wNjq7Xb6EfUxe/oX0/NM= github.com/steakknife/hamming v0.0.0-20180906055917-c99c65617cd3/go.mod h1:hpGUWaI9xL8pRQCTXQgocU38Qw1g0Us7n5PxxTwTCYU= +github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=