WIP: lowercase_scheme #18

Closed
quentin wants to merge 2 commits from lowercase_scheme into main
2 changed files with 30 additions and 1 deletions
Showing only changes of commit ce39432a07 - Show all commits

14
ssha.go
View file

@ -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)
})
}

17
ssha_test.go Normal file
View file

@ -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)
}
}