github.com/cozy/cozy-stack@v0.0.0-20240603063001-31110fa4cae1/pkg/crypto/scrypt_test.go (about) 1 package crypto 2 3 import ( 4 "bytes" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 var pass = []byte("This is secret") 11 12 var oldhash = []byte("scrypt$16384$8$1$172721d78c4dc2d6$d74e5214536e31193b5300d6e162e2fdcb9f0c1bffc5be446b93edee65a0570d") 13 var goodhash = []byte("scrypt$32768$8$1$bc39ced1a16922f626b7036edc2711a9$84a3e30dbde37dcb1b169365a8f7b88c5d0dde057d8b85e3a361fedf8a80d1ef") 14 var badhash = []byte("scrypt$16384$8$1$3a371fe057cef0063d01fce866acb989$3228bf807f307badbadbadbadbadbadbadbad09fc011f5859ad6a1504de56455") 15 16 func TestGenerateFromPassphrase(t *testing.T) { 17 val, err := GenerateFromPassphrase(pass) 18 assert.NoError(t, err) 19 assert.Equal(t, 5, bytes.Count(val, sep), "hash should have 6 parts") 20 algo := string(bytes.Split(val, sep)[0]) 21 assert.Equal(t, "scrypt", algo, "hash should contain algo") 22 } 23 24 func TestCompareGoodHashAndPassphrase(t *testing.T) { 25 _, err := CompareHashAndPassphrase(goodhash, pass) 26 assert.NoError(t, err) 27 } 28 29 func TestCompareBadHashAndPassphrase(t *testing.T) { 30 _, err := CompareHashAndPassphrase(badhash, pass) 31 assert.Error(t, err) 32 } 33 34 func TestUpdateHashNoUpdate(t *testing.T) { 35 needUpdate, err := CompareHashAndPassphrase(goodhash, pass) 36 assert.NoError(t, err) 37 assert.False(t, needUpdate) 38 } 39 40 func TestUpdateHashNeedUpdate(t *testing.T) { 41 needUpdate, err := CompareHashAndPassphrase(oldhash, pass) 42 assert.NoError(t, err) 43 assert.True(t, needUpdate) 44 }