summaryrefslogtreecommitdiffstats
path: root/vendor/golang.org/x/crypto/scrypt
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/golang.org/x/crypto/scrypt')
-rw-r--r--vendor/golang.org/x/crypto/scrypt/example_test.go26
-rw-r--r--vendor/golang.org/x/crypto/scrypt/scrypt.go7
-rw-r--r--vendor/golang.org/x/crypto/scrypt/scrypt_test.go4
3 files changed, 33 insertions, 4 deletions
diff --git a/vendor/golang.org/x/crypto/scrypt/example_test.go b/vendor/golang.org/x/crypto/scrypt/example_test.go
new file mode 100644
index 000000000..6736479b1
--- /dev/null
+++ b/vendor/golang.org/x/crypto/scrypt/example_test.go
@@ -0,0 +1,26 @@
+// 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 scrypt_test
+
+import (
+ "encoding/base64"
+ "fmt"
+ "log"
+
+ "golang.org/x/crypto/scrypt"
+)
+
+func Example() {
+ // DO NOT use this salt value; generate your own random salt. 8 bytes is
+ // a good length.
+ salt := []byte{0xc8, 0x28, 0xf2, 0x58, 0xa7, 0x6a, 0xad, 0x7b}
+
+ dk, err := scrypt.Key([]byte("some password"), salt, 1<<15, 8, 1, 32)
+ if err != nil {
+ log.Fatal(err)
+ }
+ fmt.Println(base64.StdEncoding.EncodeToString(dk))
+ // Output: lGnMz8io0AUkfzn6Pls1qX20Vs7PGN6sbYQ2TQgY12M=
+}
diff --git a/vendor/golang.org/x/crypto/scrypt/scrypt.go b/vendor/golang.org/x/crypto/scrypt/scrypt.go
index 14375c509..ff28aaef6 100644
--- a/vendor/golang.org/x/crypto/scrypt/scrypt.go
+++ b/vendor/golang.org/x/crypto/scrypt/scrypt.go
@@ -220,9 +220,10 @@ func smix(b []byte, r, N int, v, xy []uint32) {
//
// dk, err := scrypt.Key([]byte("some password"), salt, 16384, 8, 1, 32)
//
-// The recommended parameters for interactive logins as of 2009 are N=16384,
-// r=8, p=1. They should be increased as memory latency and CPU parallelism
-// increases. Remember to get a good random salt.
+// The recommended parameters for interactive logins as of 2017 are N=32768, r=8
+// and p=1. The parameters N, r, and p should be increased as memory latency and
+// CPU parallelism increases; consider setting N to the highest power of 2 you
+// can derive within 100 milliseconds. Remember to get a good random salt.
func Key(password, salt []byte, N, r, p, keyLen int) ([]byte, error) {
if N <= 1 || N&(N-1) != 0 {
return nil, errors.New("scrypt: N must be > 1 and a power of 2")
diff --git a/vendor/golang.org/x/crypto/scrypt/scrypt_test.go b/vendor/golang.org/x/crypto/scrypt/scrypt_test.go
index e096c3a31..766ed8d90 100644
--- a/vendor/golang.org/x/crypto/scrypt/scrypt_test.go
+++ b/vendor/golang.org/x/crypto/scrypt/scrypt_test.go
@@ -153,8 +153,10 @@ func TestKey(t *testing.T) {
}
}
+var sink []byte
+
func BenchmarkKey(b *testing.B) {
for i := 0; i < b.N; i++ {
- Key([]byte("password"), []byte("salt"), 16384, 8, 1, 64)
+ sink, _ = Key([]byte("password"), []byte("salt"), 1<<15, 8, 1, 64)
}
}