Browse Source

add travis, add go.mod go.sum, update babyjub hex encoders to avoid

importing go-iden3
decompress-modsqrt
arnaucube 5 years ago
parent
commit
7b219e15ec
10 changed files with 103 additions and 21 deletions
  1. +8
    -0
      .travis.yml
  2. +1
    -1
      README.md
  3. +2
    -2
      babyjub/babyjub_test.go
  4. +12
    -14
      babyjub/eddsa.go
  5. +0
    -1
      babyjub/eddsa_test.go
  6. +50
    -1
      babyjub/helpers.go
  7. +10
    -0
      go.mod
  8. +18
    -0
      go.sum
  9. +1
    -1
      mimc7/mimc7.go
  10. +1
    -1
      mimc7/mimc7_test.go

+ 8
- 0
.travis.yml

@ -0,0 +1,8 @@
dist: xenial
language: go
go:
- "1.12"
env:
- GO111MODULE=on

+ 1
- 1
README.md

@ -1,3 +1,3 @@
# go-iden3-crypto [![Go Report Card](https://goreportcard.com/badge/github.com/iden3/go-iden3-crypto)](https://goreportcard.com/report/github.com/iden3/go-iden3-crypto) [![GoDoc](https://godoc.org/github.com/iden3/go-iden3-crypto?status.svg)](https://godoc.org/github.com/iden3/go-iden3-crypto)
# go-iden3-crypto [![Go Report Card](https://goreportcard.com/badge/github.com/iden3/go-iden3-crypto)](https://goreportcard.com/report/github.com/iden3/go-iden3-crypto) [![Build Status](https://travis-ci.org/iden3/go-iden3-crypto.svg?branch=master)](https://travis-ci.org/iden3/go-iden3-crypto) [![GoDoc](https://godoc.org/github.com/iden3/go-iden3-crypto?status.svg)](https://godoc.org/github.com/iden3/go-iden3-crypto)
Go implementation of some cryptographic primitives used in iden3 Go implementation of some cryptographic primitives used in iden3

+ 2
- 2
babyjub/babyjub_test.go

@ -1,11 +1,11 @@
package babyjub package babyjub
import ( import (
// "fmt"
"encoding/hex" "encoding/hex"
"github.com/stretchr/testify/assert"
"math/big" "math/big"
"testing" "testing"
"github.com/stretchr/testify/assert"
) )
func TestAdd1(t *testing.T) { func TestAdd1(t *testing.T) {

+ 12
- 14
babyjub/eddsa.go

@ -2,11 +2,9 @@ package babyjub
import ( import (
"crypto/rand" "crypto/rand"
// "encoding/hex"
// "fmt"
common3 "github.com/iden3/go-iden3/common"
"github.com/iden3/go-iden3/crypto/mimc7"
// "golang.org/x/crypto/blake2b"
"github.com/iden3/go-iden3-crypto/mimc7"
"math/big" "math/big"
) )
@ -78,17 +76,17 @@ type PublicKey Point
func (pk PublicKey) MarshalText() ([]byte, error) { func (pk PublicKey) MarshalText() ([]byte, error) {
pkc := pk.Compress() pkc := pk.Compress()
return common3.Hex(pkc[:]).MarshalText()
return Hex(pkc[:]).MarshalText()
} }
func (pk PublicKey) String() string { func (pk PublicKey) String() string {
pkc := pk.Compress() pkc := pk.Compress()
return common3.Hex(pkc[:]).String()
return Hex(pkc[:]).String()
} }
func (pk *PublicKey) UnmarshalText(h []byte) error { func (pk *PublicKey) UnmarshalText(h []byte) error {
var pkc PublicKeyComp var pkc PublicKeyComp
if err := common3.HexDecodeInto(pkc[:], h); err != nil {
if err := HexDecodeInto(pkc[:], h); err != nil {
return err return err
} }
pkd, err := pkc.Decompress() pkd, err := pkc.Decompress()
@ -108,9 +106,9 @@ func (p *PublicKey) Point() *Point {
// point. // point.
type PublicKeyComp [32]byte type PublicKeyComp [32]byte
func (buf PublicKeyComp) MarshalText() ([]byte, error) { return common3.Hex(buf[:]).MarshalText() }
func (buf PublicKeyComp) String() string { return common3.Hex(buf[:]).String() }
func (buf *PublicKeyComp) UnmarshalText(h []byte) error { return common3.HexDecodeInto(buf[:], h) }
func (buf PublicKeyComp) MarshalText() ([]byte, error) { return Hex(buf[:]).MarshalText() }
func (buf PublicKeyComp) String() string { return Hex(buf[:]).String() }
func (buf *PublicKeyComp) UnmarshalText(h []byte) error { return HexDecodeInto(buf[:], h) }
func (p *PublicKey) Compress() PublicKeyComp { func (p *PublicKey) Compress() PublicKeyComp {
return PublicKeyComp((*Point)(p).Compress()) return PublicKeyComp((*Point)(p).Compress())
@ -134,9 +132,9 @@ type Signature struct {
// SignatureComp represents a compressed EdDSA signature. // SignatureComp represents a compressed EdDSA signature.
type SignatureComp [64]byte type SignatureComp [64]byte
func (buf SignatureComp) MarshalText() ([]byte, error) { return common3.Hex(buf[:]).MarshalText() }
func (buf SignatureComp) String() string { return common3.Hex(buf[:]).String() }
func (buf *SignatureComp) UnmarshalText(h []byte) error { return common3.HexDecodeInto(buf[:], h) }
func (buf SignatureComp) MarshalText() ([]byte, error) { return Hex(buf[:]).MarshalText() }
func (buf SignatureComp) String() string { return Hex(buf[:]).String() }
func (buf *SignatureComp) UnmarshalText(h []byte) error { return HexDecodeInto(buf[:], h) }
// Compress an EdDSA signature by concatenating the compression of // Compress an EdDSA signature by concatenating the compression of
// the point R8 and the Little-Endian encoding of S. // the point R8 and the Little-Endian encoding of S.

+ 0
- 1
babyjub/eddsa_test.go

@ -7,7 +7,6 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
// "golang.org/x/crypto/blake2b"
"math/big" "math/big"
"testing" "testing"
) )

+ 50
- 1
babyjub/helpers.go

@ -1,8 +1,13 @@
package babyjub package babyjub
import ( import (
"github.com/dchest/blake512" // I have personally reviewed that this module doesn't do anything suspicious
"bytes"
"encoding/hex"
"fmt"
"math/big" "math/big"
"strings"
"github.com/dchest/blake512" // I have personally reviewed that this module doesn't do anything suspicious
) )
// SwapEndianness swaps the endianness of the value encoded in xs. If xs is // SwapEndianness swaps the endianness of the value encoded in xs. If xs is
@ -37,3 +42,47 @@ func Blake512(m []byte) []byte {
h.Write(m[:]) h.Write(m[:])
return h.Sum(nil) return h.Sum(nil)
} }
// Hex is a byte slice type that can be marshalled and unmarshaled in hex
type Hex []byte
// MarshalText encodes buf as hex
func (buf Hex) MarshalText() ([]byte, error) {
return []byte(hex.EncodeToString(buf)), nil
}
// String encodes buf as hex
func (buf Hex) String() string {
return hex.EncodeToString(buf)
}
// HexEncode encodes an array of bytes into a string in hex.
func HexEncode(bs []byte) string {
return fmt.Sprintf("0x%s", hex.EncodeToString(bs))
}
// HexDecode decodes a hex string into an array of bytes.
func HexDecode(h string) ([]byte, error) {
if strings.HasPrefix(h, "0x") {
h = h[2:]
}
return hex.DecodeString(h)
}
// HexDecodeInto decodes a hex string into an array of bytes (dst), verifying
// that the decoded array has the same length as dst.
func HexDecodeInto(dst []byte, h []byte) error {
if bytes.HasPrefix(h, []byte("0x")) {
h = h[2:]
}
if len(h)/2 != len(dst) {
return fmt.Errorf("expected %v bytes in hex string, got %v", len(dst), len(h)/2)
}
n, err := hex.Decode(dst, h)
if err != nil {
return err
} else if n != len(dst) {
return fmt.Errorf("expected %v bytes when decoding hex string, got %v", len(dst), n)
}
return nil
}

+ 10
- 0
go.mod

@ -0,0 +1,10 @@
module github.com/iden3/go-iden3-crypto
go 1.12
require (
github.com/dchest/blake512 v1.0.0
github.com/ethereum/go-ethereum v1.8.27
github.com/stretchr/testify v1.3.0
golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4 // indirect
)

+ 18
- 0
go.sum

@ -0,0 +1,18 @@
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dchest/blake512 v1.0.0 h1:oDFEQFIqFSeuA34xLtXZ/rWxCXdSjirjzPhey5EUvmA=
github.com/dchest/blake512 v1.0.0/go.mod h1:FV1x7xPPLWukZlpDpWQ88rF/SFwZ5qbskrzhLMB92JI=
github.com/ethereum/go-ethereum v1.8.27 h1:d+gkiLaBDk5fn3Pe/xNVaMrB/ozI+AUB2IlVBp29IrY=
github.com/ethereum/go-ethereum v1.8.27/go.mod h1:PwpWDrCLZrV+tfrhqqF6kPknbISMHaJv9Ln3kPCZLwY=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4 h1:ydJNl0ENAG67pFbB+9tfhiL2pYqLhfoaZFw/cjLhY4A=
golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=

+ 1
- 1
mimc7/mimc7.go

@ -6,7 +6,7 @@ import (
"math/big" "math/big"
"github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/crypto"
"github.com/iden3/go-iden3/crypto/field"
"github.com/iden3/go-iden3-crypto/field"
) )
const SEED = "mimc" const SEED = "mimc"

+ 1
- 1
mimc7/mimc7_test.go

@ -5,7 +5,7 @@ import (
"math/big" "math/big"
"testing" "testing"
"github.com/iden3/go-iden3/crypto/field"
"github.com/iden3/go-iden3-crypto/field"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )

Loading…
Cancel
Save