diff options
author | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2024-08-24 11:26:55 +0200 |
---|---|---|
committer | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2024-08-24 11:26:55 +0200 |
commit | 4dfe046390d467dd8572b9b4876a8e823098d3e2 (patch) | |
tree | fe5527fd172282684263a335e3f9d032f5ca5186 /src/Common/EncryptionThreadPool.c | |
parent | 25c88fe3d30c4df4aa8bf7c64b165f92886965b9 (diff) | |
download | VeraCrypt-4dfe046390d467dd8572b9b4876a8e823098d3e2.tar.gz VeraCrypt-4dfe046390d467dd8572b9b4876a8e823098d3e2.zip |
Windows: Implement foundations for Argon2 support as a KDF in addition to PBKDF2
Diffstat (limited to 'src/Common/EncryptionThreadPool.c')
-rw-r--r-- | src/Common/EncryptionThreadPool.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/Common/EncryptionThreadPool.c b/src/Common/EncryptionThreadPool.c index 79f1c890..a4be9a54 100644 --- a/src/Common/EncryptionThreadPool.c +++ b/src/Common/EncryptionThreadPool.c @@ -100,6 +100,7 @@ typedef struct EncryptionThreadPoolWorkItemStruct LONG *CompletionFlag; char *DerivedKey; int IterationCount; + int Memorycost; TC_EVENT *NoOutstandingWorkItemEvent; LONG *OutstandingWorkItemCount; char *Password; @@ -273,6 +274,11 @@ static TC_THREAD_PROC EncryptionThreadProc (void *threadArg) workItem->KeyDerivation.IterationCount, workItem->KeyDerivation.DerivedKey, GetMaxPkcs5OutSize()); break; + case ARGON2: + derive_key_argon2(workItem->KeyDerivation.Password, workItem->KeyDerivation.PasswordLength, workItem->KeyDerivation.Salt, PKCS5_SALT_SIZE, + workItem->KeyDerivation.IterationCount, workItem->KeyDerivation.Memorycost, workItem->KeyDerivation.DerivedKey, GetMaxPkcs5OutSize()); + break; + default: TC_THROW_FATAL_EXCEPTION; } @@ -533,7 +539,7 @@ void EncryptionThreadPoolStop () } -void EncryptionThreadPoolBeginKeyDerivation (TC_EVENT *completionEvent, TC_EVENT *noOutstandingWorkItemEvent, LONG *completionFlag, LONG *outstandingWorkItemCount, int pkcs5Prf, char *password, int passwordLength, char *salt, int iterationCount, char *derivedKey) +void EncryptionThreadPoolBeginKeyDerivation (TC_EVENT *completionEvent, TC_EVENT *noOutstandingWorkItemEvent, LONG *completionFlag, LONG *outstandingWorkItemCount, int pkcs5Prf, char *password, int passwordLength, char *salt, int iterationCount, int memoryCost, char *derivedKey) { EncryptionThreadPoolWorkItem *workItem; @@ -556,6 +562,7 @@ void EncryptionThreadPoolBeginKeyDerivation (TC_EVENT *completionEvent, TC_EVENT workItem->KeyDerivation.CompletionFlag = completionFlag; workItem->KeyDerivation.DerivedKey = derivedKey; workItem->KeyDerivation.IterationCount = iterationCount; + workItem->KeyDerivation.Memorycost = memoryCost; workItem->KeyDerivation.NoOutstandingWorkItemEvent = noOutstandingWorkItemEvent; workItem->KeyDerivation.OutstandingWorkItemCount = outstandingWorkItemCount; workItem->KeyDerivation.Password = password; |