mirror of
https://github.com/drakkan/sftpgo.git
synced 2025-12-07 23:00:55 +03:00
add support for checking sha256crypt passwords
they will be converted to the configured password hashing algorithm after the first user login Fixes #1000 Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
This commit is contained in:
@@ -51,6 +51,7 @@ import (
|
||||
"github.com/GehirnInc/crypt"
|
||||
"github.com/GehirnInc/crypt/apr1_crypt"
|
||||
"github.com/GehirnInc/crypt/md5_crypt"
|
||||
"github.com/GehirnInc/crypt/sha256_crypt"
|
||||
"github.com/GehirnInc/crypt/sha512_crypt"
|
||||
"github.com/alexedwards/argon2id"
|
||||
"github.com/go-chi/render"
|
||||
@@ -96,6 +97,7 @@ const (
|
||||
pbkdf2SHA256B64SaltPrefix = "$pbkdf2-b64salt-sha256$"
|
||||
md5cryptPwdPrefix = "$1$"
|
||||
md5cryptApr1PwdPrefix = "$apr1$"
|
||||
sha256cryptPwdPrefix = "$5$"
|
||||
sha512cryptPwdPrefix = "$6$"
|
||||
md5LDAPPwdPrefix = "{MD5}"
|
||||
trackQuotaDisabledError = "please enable track_quota in your configuration to use this method"
|
||||
@@ -163,10 +165,10 @@ var (
|
||||
internalHashPwdPrefixes = []string{argonPwdPrefix, bcryptPwdPrefix}
|
||||
hashPwdPrefixes = []string{argonPwdPrefix, bcryptPwdPrefix, pbkdf2SHA1Prefix, pbkdf2SHA256Prefix,
|
||||
pbkdf2SHA512Prefix, pbkdf2SHA256B64SaltPrefix, md5cryptPwdPrefix, md5cryptApr1PwdPrefix, md5LDAPPwdPrefix,
|
||||
sha512cryptPwdPrefix}
|
||||
sha256cryptPwdPrefix, sha512cryptPwdPrefix}
|
||||
pbkdfPwdPrefixes = []string{pbkdf2SHA1Prefix, pbkdf2SHA256Prefix, pbkdf2SHA512Prefix, pbkdf2SHA256B64SaltPrefix}
|
||||
pbkdfPwdB64SaltPrefixes = []string{pbkdf2SHA256B64SaltPrefix}
|
||||
unixPwdPrefixes = []string{md5cryptPwdPrefix, md5cryptApr1PwdPrefix, sha512cryptPwdPrefix}
|
||||
unixPwdPrefixes = []string{md5cryptPwdPrefix, md5cryptApr1PwdPrefix, sha256cryptPwdPrefix, sha512cryptPwdPrefix}
|
||||
sharedProviders = []string{PGSQLDataProviderName, MySQLDataProviderName, CockroachDataProviderName}
|
||||
logSender = "dataprovider"
|
||||
sqlTableUsers string
|
||||
@@ -3067,6 +3069,8 @@ func compareUnixPasswordAndHash(user *User, password string) (bool, error) {
|
||||
var crypter crypt.Crypter
|
||||
if strings.HasPrefix(user.Password, sha512cryptPwdPrefix) {
|
||||
crypter = sha512_crypt.New()
|
||||
} else if strings.HasPrefix(user.Password, sha256cryptPwdPrefix) {
|
||||
crypter = sha256_crypt.New()
|
||||
} else if strings.HasPrefix(user.Password, md5cryptPwdPrefix) {
|
||||
crypter = md5_crypt.New()
|
||||
} else if strings.HasPrefix(user.Password, md5cryptApr1PwdPrefix) {
|
||||
|
||||
Reference in New Issue
Block a user