From d4e0e419dceda892946d508a039781ddc783f730 Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Wed, 6 Jul 2016 23:01:09 -0700 Subject: [PATCH] auth: set bcrypt cost to minimum for test cases DefaultCost makes auth tests 10x more expensive than MinCost. Fixes #5851 --- auth/store.go | 7 +++++-- auth/store_test.go | 3 +++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/auth/store.go b/auth/store.go index 4ba76db0b..719a1acb9 100644 --- a/auth/store.go +++ b/auth/store.go @@ -52,6 +52,9 @@ var ( ErrRoleNotGranted = errors.New("auth: role is not granted to the user") ErrPermissionNotGranted = errors.New("auth: permission is not granted to the role") ErrAuthNotEnabled = errors.New("auth: authentication is not enabled") + + // BcryptCost is the algorithm cost / strength for hashing auth passwords + BcryptCost = bcrypt.DefaultCost ) const ( @@ -240,7 +243,7 @@ func (as *authStore) Recover(be backend.Backend) { } func (as *authStore) UserAdd(r *pb.AuthUserAddRequest) (*pb.AuthUserAddResponse, error) { - hashed, err := bcrypt.GenerateFromPassword([]byte(r.Password), bcrypt.DefaultCost) + hashed, err := bcrypt.GenerateFromPassword([]byte(r.Password), BcryptCost) if err != nil { plog.Errorf("failed to hash password: %s", err) return nil, err @@ -287,7 +290,7 @@ func (as *authStore) UserDelete(r *pb.AuthUserDeleteRequest) (*pb.AuthUserDelete func (as *authStore) UserChangePassword(r *pb.AuthUserChangePasswordRequest) (*pb.AuthUserChangePasswordResponse, error) { // TODO(mitake): measure the cost of bcrypt.GenerateFromPassword() // If the cost is too high, we should move the encryption to outside of the raft - hashed, err := bcrypt.GenerateFromPassword([]byte(r.Password), bcrypt.DefaultCost) + hashed, err := bcrypt.GenerateFromPassword([]byte(r.Password), BcryptCost) if err != nil { plog.Errorf("failed to hash password: %s", err) return nil, err diff --git a/auth/store_test.go b/auth/store_test.go index ccf05a1de..68174ea39 100644 --- a/auth/store_test.go +++ b/auth/store_test.go @@ -20,9 +20,12 @@ import ( pb "github.com/coreos/etcd/etcdserver/etcdserverpb" "github.com/coreos/etcd/mvcc/backend" + "golang.org/x/crypto/bcrypt" "golang.org/x/net/context" ) +func init() { BcryptCost = bcrypt.MinCost } + func TestUserAdd(t *testing.T) { b, tPath := backend.NewDefaultTmpBackend() defer func() {