summaryrefslogtreecommitdiffstats
path: root/vendor/golang.org/x/crypto/argon2/blake2b.go
diff options
context:
space:
mode:
authorJesús Espino <jespinog@gmail.com>2018-04-30 23:35:10 +0200
committerChristopher Speller <crspeller@gmail.com>2018-04-30 14:35:10 -0700
commitbaba8fa92f47cad604f6d2a2714d09f89178fbff (patch)
tree0b751ac64e9dd13fd544e37a6bf11c2f90ae9f36 /vendor/golang.org/x/crypto/argon2/blake2b.go
parenta5f006b8a94bdadf5343aacd2b58c5bad4485153 (diff)
downloadchat-baba8fa92f47cad604f6d2a2714d09f89178fbff.tar.gz
chat-baba8fa92f47cad604f6d2a2714d09f89178fbff.tar.bz2
chat-baba8fa92f47cad604f6d2a2714d09f89178fbff.zip
Upgrading minio-go library to 6.0.0 (#8651)
* Upgrading minio-go library to 6.0.0 * Removing unnecesary Gopkg constraint
Diffstat (limited to 'vendor/golang.org/x/crypto/argon2/blake2b.go')
-rw-r--r--vendor/golang.org/x/crypto/argon2/blake2b.go53
1 files changed, 53 insertions, 0 deletions
diff --git a/vendor/golang.org/x/crypto/argon2/blake2b.go b/vendor/golang.org/x/crypto/argon2/blake2b.go
new file mode 100644
index 000000000..10f46948d
--- /dev/null
+++ b/vendor/golang.org/x/crypto/argon2/blake2b.go
@@ -0,0 +1,53 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package argon2
+
+import (
+ "encoding/binary"
+ "hash"
+
+ "golang.org/x/crypto/blake2b"
+)
+
+// blake2bHash computes an arbitrary long hash value of in
+// and writes the hash to out.
+func blake2bHash(out []byte, in []byte) {
+ var b2 hash.Hash
+ if n := len(out); n < blake2b.Size {
+ b2, _ = blake2b.New(n, nil)
+ } else {
+ b2, _ = blake2b.New512(nil)
+ }
+
+ var buffer [blake2b.Size]byte
+ binary.LittleEndian.PutUint32(buffer[:4], uint32(len(out)))
+ b2.Write(buffer[:4])
+ b2.Write(in)
+
+ if len(out) <= blake2b.Size {
+ b2.Sum(out[:0])
+ return
+ }
+
+ outLen := len(out)
+ b2.Sum(buffer[:0])
+ b2.Reset()
+ copy(out, buffer[:32])
+ out = out[32:]
+ for len(out) > blake2b.Size {
+ b2.Write(buffer[:])
+ b2.Sum(buffer[:0])
+ copy(out, buffer[:32])
+ out = out[32:]
+ b2.Reset()
+ }
+
+ if outLen%blake2b.Size > 0 { // outLen > 64
+ r := ((outLen + 31) / 32) - 2 // ⌈τ /32⌉-2
+ b2, _ = blake2b.New(outLen-32*r, nil)
+ }
+ b2.Write(buffer[:])
+ b2.Sum(out[:0])
+}