我正在尝试通过 cryptodev 在 i.MX6 上使用 CAAM 硬件。在 openssl 速度基准测试中加速看起来不错。例如运行时:
openssl speed -evp aes-256-cbc -engine cryptodev
我得到了很好的加速,我可以看到 CAAM 的中断在 /proc/interrupts 中迅速增加。但是我需要在应用程序中使用加密,因此我利用 OpenSSL API 函数进行信封加密:
int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, unsigned char **ek, int *ekl, unsigned char *iv, EVP_PKEY **pubk, int npubk);
int EVP_SealUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, unsigned char *in, int inl);
int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out,
int *outl);
将 EVP_aes_256_cbc() 作为 const EVP_CIPHER *类型传递。在这里我没有得到任何加速,我也没有看到 CAAM 的中断在 /proc/interrupts 中增加。谁能指导我在这种情况下出了什么问题?为什么在“openssl 速度”基准运行良好时 API 调用没有使用 CAAM 引擎?