我正在构建一个动态引擎,以支持我在FPGA逻辑中实现的自定义AES硬件模块**,但在阅读完所有可用文档后,并且倾注了源代码,我就是这样做的。我仍然对以下两件事感到困惑.....
EVP_[En/De]cryptInit_ex(..)
,EVP_[En/De]cryptUpdate(..)
和EVP_[En/De]cryptFinal_ex(..)
函数? 在此之前,我成功为我的sha256加速器构建了一个引擎,现在我尝试按照AES的相同步骤进行操作。对于sha256,EVP_MD
结构允许我声明指向init,update和final函数的指针。这一切都完美无缺。
现在,当我构建AES引擎时,我发现EVP_CIPHER
结构没有这些指针(init,update,final),而是有一个指向init_key和do_cipher函数的指针。但是,EVP加密接口仍然定义了这些功能。
AFAIK(如果这是错误的话请纠正我)当我调用init_key
函数时,EVP接口会调用EVP_[En/De]cryptInit_ex
函数,do_cipher
函数被调用{ {1}}。但是我应该如何处理EVP_[En/De]cryptUpdate
函数?我不应该在我的引擎中实现它们吗?或者我在这里错过了什么......
如果您希望查看源代码,请参阅源代码HERE,但我不认为这个问题是必要的。
回顾一下,有两个问题:
EVP_[En/De]cryptFinal
和EVP_[En/De]cryptInit_ex(..)
函数时,如何明确定义引擎中的哪些操作?提前致谢!
**我使用Xilinx Zynq SoC,因此我可以在可编程逻辑中创建自定义硬件,然后通过存储器映射从处理器上运行的软件与其进行交互,就像任何外围设备一样...... .details无关紧要