diff options
author | Quentin Dufour <quentin@deuxfleurs.fr> | 2022-07-19 17:18:14 +0200 |
---|---|---|
committer | Quentin Dufour <quentin@deuxfleurs.fr> | 2022-07-19 17:18:14 +0200 |
commit | ce39432a07ee74723b611fc3060357f0782cd783 (patch) | |
tree | 2ff86bd5c5dc889b6ab91747d6438fb632a81bb4 | |
parent | aac8ee19d7ef80f437714f882ec8e32b06d00f41 (diff) | |
download | bottin-ce39432a07ee74723b611fc3060357f0782cd783.tar.gz bottin-ce39432a07ee74723b611fc3060357f0782cd783.zip |
Try to fix SSHA conversionlowercase_scheme
-rw-r--r-- | ssha.go | 14 | ||||
-rw-r--r-- | ssha_test.go | 17 |
2 files changed, 30 insertions, 1 deletions
@@ -2,6 +2,8 @@ package main import ( "errors" + "regexp" + "strings" "github.com/jsimonetti/pwscheme/ssha" "github.com/jsimonetti/pwscheme/ssha256" @@ -14,6 +16,8 @@ const ( SSHA512 = "{SSHA512}" ) +var scheme = regexp.MustCompile(`^{([0-9a-zA-Z]+)}`) + // Encode encodes the string to ssha512 func SSHAEncode(rawPassPhrase string) (string, error) { return ssha512.Generate(rawPassPhrase, 16) @@ -21,7 +25,9 @@ func SSHAEncode(rawPassPhrase string) (string, error) { // Matches matches the encoded password and the raw password func SSHAMatches(encodedPassPhrase string, rawPassPhrase string) (bool, error) { - hashType, err := determineHashType(encodedPassPhrase) + cleanEncodedPass := uppercaseScheme(encodedPassPhrase) + + hashType, err := determineHashType(cleanEncodedPass) if err != nil { return false, errors.New("invalid password hash stored") } @@ -51,3 +57,9 @@ func determineHashType(hash string) (string, error) { return "", errors.New("no valid hash found") } + +func uppercaseScheme(hash string) string { + return scheme.ReplaceAllStringFunc(hash, func(w string) string { + return strings.ToUpper(w) + }) +} diff --git a/ssha_test.go b/ssha_test.go new file mode 100644 index 0000000..7620436 --- /dev/null +++ b/ssha_test.go @@ -0,0 +1,17 @@ +package main + +import ( + "testing" +) + +func TestUpper(t *testing.T) { + r1 := uppercaseScheme("{ssha}ss4654654") + if r1 != "{SSHA}ss4654654" { + t.Fatal(r1) + } + + r2 := uppercaseScheme("{ssha512}fdbgf6546") + if r2 != "{SSHA512}fdbgf6546" { + t.Fatal(r2) + } +} |