Что заменяет AES_set_decrypt_key и AES_unwrap_key в OpenSSL 3? ⇐ C++

Программы на C++. Форум разработчиков
Anonymous
Что заменяет AES_set_decrypt_key и AES_unwrap_key в OpenSSL 3?

Сообщение Anonymous »

Функции AES_set_decrypt_key и AES_unwrap_key устарели в OpenSSL 3. Я поддерживаю функцию, использующую их, и хотел бы обновить ее для использования неустаревших функций:

Код: Выделить всё

std::unique_ptr rfc3394_key_unwrap(const uint8_t* key, size_t key_len,
const void *input, size_t input_len, const void *iv) noexcept
{
AES_KEY aes_key;
AES_set_decrypt_key(key, key_len * 8, &aes_key);

const int output_len = input_len - 8;

auto out = std::make_unique(output_len);

const auto ret = AES_unwrap_key(&aes_key, (const uint8_t*)iv, out.get(),
(const uint8_t*)input, input_len);

if (ret != output_len) {
return nullptr;
}

return out;
}
Или, если хотите, на C:

Код: Выделить всё

uint8_t* rfc3394_key_unwrap(const uint8_t *key, size_t key_len, const void *input,
size_t input_len, const void *iv)
{
AES_KEY aes_key;
AES_set_decrypt_key(key, key_len * 8, &aes_key);

const int output_len = input_len - 8;

uint8_t* out = (uint8_t*) malloc(output_len);

const int ret = AES_unwrap_key(&aes_key, (const uint8_t*)iv, out,
(const uint8_t*)input, input_len);

if (ret != output_len) {
free(out);
return NULL;
}

return out;
}
Мне не удалось определить, какие замены (возможно, среди функций EVP_CIPHER?). Что мне следует искать?


Подробнее здесь: https://stackoverflow.com/questions/790 ... -openssl-3

Вернуться в «C++»