Merge branch 'feat/scrypt-cost-param' into 'feat/pmapi-crypto-refactoring'

Parameterize cost factor N of scrypt

See merge request ProtonMail/go-pm-crypto!6
This commit is contained in:
Jakub Cuth 2019-01-07 12:42:14 +00:00
commit ec2deeb892
2 changed files with 4 additions and 4 deletions

View file

@ -25,7 +25,7 @@ func DecryptWithoutIntegrity(key, input, iv []byte) ([]byte, error) {
return EncryptWithoutIntegrity(key, input, iv)
}
// DeriveKey derives a key from a password using scrypt.
func DeriveKey(password string, salt []byte) ([]byte, error) {
return scrypt.Key([]byte(password), salt, 32768, 8, 1, 32)
// DeriveKey derives a key from a password using scrypt. N should be set to the highest power of 2 you can derive within 100 milliseconds.
func DeriveKey(password string, salt []byte, N int) ([]byte, error) {
return scrypt.Key([]byte(password), salt, N, 8, 1, 32)
}

View file

@ -29,7 +29,7 @@ func TestSubtle_DecryptWithoutIntegrity(t *testing.T) {
func TestSubtle_DeriveKey(t *testing.T) {
salt, _ := hex.DecodeString("c828f258a76aad7b")
dk, _ := DeriveKey("some password", salt)
dk, _ := DeriveKey("some password", salt, 32768)
if hex.EncodeToString(dk) != "9469cccfc8a8d005247f39fa3e5b35a97db456cecf18deac6d84364d0818d763" {
t.Fatal("DeriveKey returned unexpected result")
}