mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-03-16 04:20:49 +00:00
Enable empty salt as input for pbkdf2
Signed-off-by: Kusumit Ghoderao <Kusumit.Ghoderao@silabs.com>
This commit is contained in:
parent
6731a2580c
commit
d0422f30c5
@ -6449,31 +6449,27 @@ static psa_status_t psa_pbkdf2_set_salt(psa_pbkdf2_key_derivation_t *pbkdf2,
|
||||
return PSA_ERROR_BAD_STATE;
|
||||
}
|
||||
|
||||
if (data_length != 0) {
|
||||
if (pbkdf2->state == PSA_PBKDF2_STATE_INPUT_COST_SET) {
|
||||
pbkdf2->salt = mbedtls_calloc(1, data_length);
|
||||
if (pbkdf2->salt == NULL) {
|
||||
return PSA_ERROR_INSUFFICIENT_MEMORY;
|
||||
}
|
||||
|
||||
memcpy(pbkdf2->salt, data, data_length);
|
||||
pbkdf2->salt_length = data_length;
|
||||
} else if (pbkdf2->state == PSA_PBKDF2_STATE_SALT_SET) {
|
||||
prev_salt = pbkdf2->salt;
|
||||
prev_salt_length = pbkdf2->salt_length;
|
||||
pbkdf2->salt = mbedtls_calloc(1, data_length + prev_salt_length);
|
||||
if (pbkdf2->salt == NULL) {
|
||||
return PSA_ERROR_INSUFFICIENT_MEMORY;
|
||||
}
|
||||
|
||||
memcpy(pbkdf2->salt, prev_salt, prev_salt_length);
|
||||
memcpy(pbkdf2->salt + prev_salt_length, data,
|
||||
data_length);
|
||||
pbkdf2->salt_length += data_length;
|
||||
mbedtls_free(prev_salt);
|
||||
if (pbkdf2->state == PSA_PBKDF2_STATE_INPUT_COST_SET) {
|
||||
pbkdf2->salt = mbedtls_calloc(1, data_length);
|
||||
if (pbkdf2->salt == NULL) {
|
||||
return PSA_ERROR_INSUFFICIENT_MEMORY;
|
||||
}
|
||||
} else {
|
||||
return PSA_ERROR_INVALID_ARGUMENT;
|
||||
|
||||
memcpy(pbkdf2->salt, data, data_length);
|
||||
pbkdf2->salt_length = data_length;
|
||||
} else if (pbkdf2->state == PSA_PBKDF2_STATE_SALT_SET) {
|
||||
prev_salt = pbkdf2->salt;
|
||||
prev_salt_length = pbkdf2->salt_length;
|
||||
pbkdf2->salt = mbedtls_calloc(1, data_length + prev_salt_length);
|
||||
if (pbkdf2->salt == NULL) {
|
||||
return PSA_ERROR_INSUFFICIENT_MEMORY;
|
||||
}
|
||||
|
||||
memcpy(pbkdf2->salt, prev_salt, prev_salt_length);
|
||||
memcpy(pbkdf2->salt + prev_salt_length, data,
|
||||
data_length);
|
||||
pbkdf2->salt_length += data_length;
|
||||
mbedtls_free(prev_salt);
|
||||
}
|
||||
|
||||
pbkdf2->state = PSA_PBKDF2_STATE_SALT_SET;
|
||||
|
Loading…
x
Reference in New Issue
Block a user