簡體   English   中英

創建EVP_CIPHER_CTX陣列

[英]Create EVP_CIPHER_CTX array

我正在使用CentOS 7和OpenSSL v1.1.0。

由於OpenSSL更改了他們的API,因此出現以下錯誤: invalid use of incomplete type struct evp_cipher_ctx_st

static void InitAESKey(AES_KEY_CTX* ctx, BYTE* keybytes, int numkeys)
        {
                BYTE* pBufIdx = keybytes;
                for (int i = 0; i < numkeys; i++)
                {
                        OTEXT_AES_KEY_INIT(ctx + i, pBufIdx);
                        pBufIdx += AES_KEY_BYTES;
                }
        }

雖然AES_KEY_CTXOTEXT_AES_KEY_INIT是定義的宏:

#define AES_KEY_CTX EVP_CIPHER_CTX
#define OTEXT_AES_KEY_INIT(ctx, buf) { \
        EVP_CIPHER_CTX_init(ctx); \
        EVP_EncryptInit_ex(ctx, EVP_aes_128_ecb(), NULL, buf, ZERO_IV); \
        }

我試圖將宏更改為#define AES_KEY_CTX EVP_CIPHER_CTX* ,但是錯誤仍然存​​在。

在咨詢了OpenSSL用戶的電子郵件列表之后,我進行了以下更改,以便編譯代碼:

#define AES_KEY_CTX *EVP_CIPHER_CTX;
static void InitAESKey(AES_KEY_CTX* ctx, BYTE* keybytes, int numkeys)
{
    BYTE* pBufIdx = keybytes;
    for (int i = 0; i < numkeys; i++)
    {
        EVP_CIPHER_CTX_init(*(ctx + i));
        EVP_EncryptInit_ex(*(ctx + i), EVP_aes_128_ecb(), NULL, pBufIdx, ZERO_IV);
        pBufIdx += AES_KEY_BYTES;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM