WIP: lowercase_scheme #18
2 changed files with 30 additions and 1 deletions
14
ssha.go
14
ssha.go
|
@ -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
17
ssha_test.go
Normal 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)
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue