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 (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"regexp"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/jsimonetti/pwscheme/ssha"
|
"github.com/jsimonetti/pwscheme/ssha"
|
||||||
"github.com/jsimonetti/pwscheme/ssha256"
|
"github.com/jsimonetti/pwscheme/ssha256"
|
||||||
|
@ -14,6 +16,8 @@ const (
|
||||||
SSHA512 = "{SSHA512}"
|
SSHA512 = "{SSHA512}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var scheme = regexp.MustCompile(`^{([0-9a-zA-Z]+)}`)
|
||||||
|
|
||||||
// Encode encodes the string to ssha512
|
// Encode encodes the string to ssha512
|
||||||
func SSHAEncode(rawPassPhrase string) (string, error) {
|
func SSHAEncode(rawPassPhrase string) (string, error) {
|
||||||
return ssha512.Generate(rawPassPhrase, 16)
|
return ssha512.Generate(rawPassPhrase, 16)
|
||||||
|
@ -21,7 +25,9 @@ func SSHAEncode(rawPassPhrase string) (string, error) {
|
||||||
|
|
||||||
// Matches matches the encoded password and the raw password
|
// Matches matches the encoded password and the raw password
|
||||||
func SSHAMatches(encodedPassPhrase string, rawPassPhrase string) (bool, error) {
|
func SSHAMatches(encodedPassPhrase string, rawPassPhrase string) (bool, error) {
|
||||||
hashType, err := determineHashType(encodedPassPhrase)
|
cleanEncodedPass := uppercaseScheme(encodedPassPhrase)
|
||||||
|
|
||||||
|
hashType, err := determineHashType(cleanEncodedPass)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, errors.New("invalid password hash stored")
|
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")
|
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