diff --git a/wrappers/aes.go b/wrappers/aes.go index 18e1d73..45f5922 100644 --- a/wrappers/aes.go +++ b/wrappers/aes.go @@ -19,7 +19,7 @@ func encryptAES(decBytes []byte, passphrase []byte) []byte { io.ReadFull(rand.Reader, salt) // derive key from passphrase using the salt - key := deriveKeyScrypt(passphrase, salt) + key := deriveKey(passphrase, salt) // create AES-256 cipher block, _ := aes.NewCipher(key) @@ -55,7 +55,7 @@ func decryptAES(encBytes []byte, passphrase []byte) ([]byte, error) { ciphertext := encBytes[saltSize+nonceSizeAES:] // derive key from passphrase using the salt - key := deriveKeyScrypt(passphrase, salt) + key := deriveKey(passphrase, salt) // create AES-256 cipher block, _ := aes.NewCipher(key) diff --git a/wrappers/chacha.go b/wrappers/chacha.go index 10f44eb..270a277 100644 --- a/wrappers/chacha.go +++ b/wrappers/chacha.go @@ -19,7 +19,7 @@ func encryptCha(data []byte, passphrase []byte) []byte { io.ReadFull(rand.Reader, salt) // derive key from passphrase using the salt - key := deriveKeyArgon2(passphrase, salt) + key := deriveKey(passphrase, salt) // create ChaCha20-Poly1305 cipher stream, _ := chacha20poly1305.NewX(key) @@ -52,7 +52,7 @@ func decryptCha(encryptedData []byte, passphrase []byte) ([]byte, error) { ciphertext := encryptedData[saltSize+nonceSizeCha:] // derive key from passphrase using the salt - key := deriveKeyArgon2(passphrase, salt) + key := deriveKey(passphrase, salt) // create ChaCha20-Poly1305 cipher stream, _ := chacha20poly1305.NewX(key) diff --git a/wrappers/keyDeriv.go b/wrappers/keyDeriv.go index 09d4265..d6f6bce 100644 --- a/wrappers/keyDeriv.go +++ b/wrappers/keyDeriv.go @@ -4,7 +4,6 @@ import ( "runtime" "golang.org/x/crypto/argon2" - "golang.org/x/crypto/scrypt" ) const ( @@ -12,25 +11,14 @@ const ( argonTime = 8 // set to pass 1-second test in dev environment argonMemory = 384 * 1024 // 384 MB - // parameters for Scrypt - scryptN = 262144 - scryptR = 8 // block size, recommended to be 8 - scryptP = 1 // parallelization factor, recommended to be 1 - // general constants keyLen = 32 // 256 bits, key length for both algorithms saltSize = 16 // 128 bits, recommended salt size for both algorithms ) -var threads = uint8(runtime.NumCPU()) +var argonThreads = uint8(runtime.NumCPU()) -// DeriveKeyArgon2 derives an encryption key from a passphrase using Argon2. -func deriveKeyArgon2(passphrase []byte, salt []byte) []byte { - return argon2.IDKey(passphrase, salt, argonTime, argonMemory, threads, keyLen) -} - -// DeriveKeyScrypt derives an encryption key from a passphrase using Scrypt. -func deriveKeyScrypt(passphrase []byte, salt []byte) []byte { - key, _ := scrypt.Key(passphrase, salt, scryptN, scryptR, scryptP, keyLen) - return key +// DeriveKey derives an encryption key from a passphrase using Argon2. +func deriveKey(passphrase []byte, salt []byte) []byte { + return argon2.IDKey(passphrase, salt, argonTime, argonMemory, argonThreads, keyLen) }