md5 -> blake2b
authorTom Clegg <tom@tomclegg.ca>
Wed, 15 Jan 2020 19:37:43 +0000 (14:37 -0500)
committerTom Clegg <tom@tomclegg.ca>
Wed, 15 Jan 2020 19:37:43 +0000 (14:37 -0500)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@tomclegg.ca>

go.mod
go.sum
tilelib.go

diff --git a/go.mod b/go.mod
index f5a865159fca6e30e29bd59988a1b6635e6dcb01..37e886665e78b9b1a88e5f57df1d3d57a70573c2 100644 (file)
--- a/go.mod
+++ b/go.mod
@@ -4,5 +4,6 @@ go 1.13
 
 require (
        git.arvados.org/arvados.git v0.0.0-20200107160329-7db3857d78a0
+       golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2
        gopkg.in/check.v1 v1.0.0-20161208181325-20d25e280405
 )
diff --git a/go.sum b/go.sum
index 14e3b4755927d277a94c38d7290af9a012e7be70..ad97e7060bde6e6225abac3438a5e7550bb21245 100644 (file)
--- a/go.sum
+++ b/go.sum
@@ -109,6 +109,7 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P
 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=
@@ -139,6 +140,7 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h
 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=
index 894364488eea93cf583c9609af78062b0590032c..0a8ebfac6497688e38184909acea5bd9ed12875e 100644 (file)
@@ -3,10 +3,11 @@ package main
 import (
        "bufio"
        "bytes"
-       "crypto/md5"
        "io"
        "log"
        "sync"
+
+       "golang.org/x/crypto/blake2b"
 )
 
 type tileVariantID int32 // 1-based
@@ -20,9 +21,9 @@ type tileSeq map[string][]tileLibRef
 
 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
 }
@@ -81,12 +82,21 @@ func (tilelib *tileLibrary) getRef(tag tagID, seq []byte) tileLibRef {
        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)}