lib/config: Accept pre-hashed password (fixes #9123) (#9124)

This commit is contained in:
Jakob Borg
2023-09-24 19:23:49 +02:00
committed by GitHub
parent 19bbf4f6bf
commit 6ed9c0c34c
5 changed files with 32 additions and 9 deletions
+13 -1
View File
@@ -22,6 +22,7 @@ import (
"testing"
"github.com/d4l3k/messagediff"
"golang.org/x/crypto/bcrypt"
"github.com/syncthing/syncthing/lib/build"
"github.com/syncthing/syncthing/lib/events"
@@ -773,8 +774,9 @@ func TestGUIConfigURL(t *testing.T) {
func TestGUIPasswordHash(t *testing.T) {
var c GUIConfiguration
// Setting a plaintext password should work
testPass := "pass"
if err := c.HashAndSetPassword(testPass); err != nil {
if err := c.SetPassword(testPass); err != nil {
t.Fatal(err)
}
if c.Password == testPass {
@@ -789,6 +791,16 @@ func TestGUIPasswordHash(t *testing.T) {
if err := c.CompareHashedPassword(failPass); err == nil {
t.Errorf("Match on different password: %v", err)
}
// Setting a bcrypt hash directly should also work
hash, err := bcrypt.GenerateFromPassword([]byte("test"), bcrypt.MinCost)
if err != nil {
t.Fatal(err)
}
c.SetPassword(string(hash))
if err := c.CompareHashedPassword("test"); err != nil {
t.Errorf("No match on hashed password: %v", err)
}
}
func TestDuplicateDevices(t *testing.T) {