Как обновить IV ctx типа EVP_CIPHER_CTX (open ssl 1.1.0) - PullRequest
0 голосов
/ 03 октября 2018

Я в процессе обновления моего пакета Openssl до серии 1.1.0.Однако, поскольку Openssl сделал многие структуры непрозрачными, я не могу обновить iv конкретного ctx.

EVP_CIPHER_CTX *ctx; // This was EVP_CIPHER_CTX ctx; for version 1.0.x series

EVP_DecryptInit(ctx, cipher, keydata, iv);

для конкретного сценария, мне нужно обновить iv.в более ранней версии серии openssl 1.0.x я делал это с

memcpy(nextIv, &ctx.iv, DES3_BLOCK_SIZE);

, но после изменения на

memcpy(nextIv, ctx->iv, DES3_BLOCK_SIZE);

я получаю ошибку компилятора

ошибка: разыменование указателя на неполный тип 'EVP_CIPHER_CTX' {aka 'struct evp_cipher_ctx_st'} memcpy (nextIv, ctx-> iv, DES3_BLOCK_SIZE);

Я предполагаю, что это сделаноopaque.

Чем можно заменить оператор memcpy для обновления iv ctx, чтобы избавиться от ошибки?

1 Ответ

0 голосов
/ 11 октября 2018

Ну, я прошел код Openssl и выяснил, что

EVP_DecryptInit_ex ()

Внутренне выполняет memcpy () для iv для ctx.То, что я делал ниже, сработало для меня.

EVP_DecryptInit_ex (ctx, шифр, NULL, ключ, newIv);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...