Что заменяет 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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