github.com/xanzy/ssh-agent v0.1.0/go.mod h1:0NyE30eGUDliuLEHJgYte/zncp2zdTStcOnWhgSqHD8=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd h1:3x5uuvBgE6oaXJjCOvpCC1IpgJogqQ+PqGGU3ZxAgII=
golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
import (
"bufio"
"bytes"
- "crypto/md5"
"io"
"log"
"sync"
+
+ "golang.org/x/crypto/blake2b"
)
type tileVariantID int32 // 1-based
type tileLibrary struct {
taglib *tagLibrary
- variant [][][md5.Size]byte
+ variant [][][blake2b.Size]byte
// count [][]int
- // seq map[[md5.Size]byte][]byte
+ // seq map[[blake2b.Size]byte][]byte
mtx sync.Mutex
}
tilelib.mtx.Lock()
defer tilelib.mtx.Unlock()
// if tilelib.seq == nil {
- // tilelib.seq = map[[md5.Size]byte][]byte{}
+ // tilelib.seq = map[[blake2b.Size]byte][]byte{}
// }
if len(tilelib.variant) <= int(tag) {
- tilelib.variant = append(tilelib.variant, make([][][md5.Size]byte, int(tag)-len(tilelib.variant)+1)...)
+ tilelib.variant = append(tilelib.variant, make([][][blake2b.Size]byte, int(tag)-len(tilelib.variant)+1)...)
+ }
+ hash, err := blake2b.New(32, nil)
+ if err != nil {
+ panic(err)
+ }
+ _, err = hash.Write(seq)
+ if err != nil {
+ panic(err)
}
- seqhash := md5.Sum(seq)
+ var seqhash [blake2b.Size]byte
+ copy(seqhash[:], hash.Sum(nil))
for i, varhash := range tilelib.variant[tag] {
if varhash == seqhash {
return tileLibRef{tag: tag, variant: tileVariantID(i + 1)}