add bcrypt support

This commit is contained in:
Philip Hofstetter 2019-07-26 08:00:14 +02:00 committed by drakkan
parent 88a288ccfe
commit be9a1fb7c4
2 changed files with 12 additions and 0 deletions

View file

@ -22,6 +22,7 @@ const (
logSender = "dataProvider" logSender = "dataProvider"
argonPwdPrefix = "$argon2id$" argonPwdPrefix = "$argon2id$"
bcryptPwdPrefix = "$2a$"
manageUsersDisabledError = "please set manage_users to 1 in sftpgo.conf to enable this method" manageUsersDisabledError = "please set manage_users to 1 in sftpgo.conf to enable this method"
trackQuotaDisabledError = "please enable track_quota in sftpgo.conf to use this method" trackQuotaDisabledError = "please enable track_quota in sftpgo.conf to use this method"
) )

View file

@ -10,6 +10,8 @@ import (
"golang.org/x/crypto/ssh" "golang.org/x/crypto/ssh"
"github.com/alexedwards/argon2id" "github.com/alexedwards/argon2id"
"golang.org/x/crypto/bcrypt"
"github.com/drakkan/sftpgo/logger" "github.com/drakkan/sftpgo/logger"
"github.com/drakkan/sftpgo/utils" "github.com/drakkan/sftpgo/utils"
) )
@ -44,6 +46,15 @@ func sqlCommonValidateUserAndPass(username string, password string) (User, error
logger.Warn(logSender, "error comparing password with argon hash: %v", err) logger.Warn(logSender, "error comparing password with argon hash: %v", err)
return user, err return user, err
} }
} else if strings.HasPrefix(user.Password, bcryptPwdPrefix){
err = bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(password))
if err != nil {
logger.Warn(logSender, "error comparing password with bcrypt hash: %v", err)
return user, err
}else{
match = true
}
} else { } else {
// clear text password match // clear text password match
match = (user.Password == password) match = (user.Password == password)