第二十三章 Engine / 23.2 Engine支持的原理

Openssl中的许多数据结构不仅包含数据本身,还包含各种操作,并且这些操作是可替换的。Openssl中这些结构集合一般叫做XXX_METHOD,有DSO_METHODDSA_METHODEC_METHODECDH_METHODECDSA_METHODDH_METHODRAND_METHODRSA_METHODEVP_CIPHEREVP_MD等。以RSA结构为例(crypto/rsa/rsa.h)RSA结构不仅包含了大数nedp等等数据项目,还包含一个RSA_METHOD回调函数集合。该方法给出了RSA各种运算函数。

对于各种数据类型,要进行计算必须至少有一个可用的方法(XXX_METHOD)。因此,openssl对各种类型都提供了默认的计算方法(软算法)。如果用户实现了自己的XXX_METHOD,那么就能替换openssl提供的方法,各种计算由用户自己控制。硬件Engine就是这种原理。根据需要,一个硬件Engine可实现自己的RAND_METHODRSA_METHODEVP_CIPHERDSA_METHODDH_METHODECDH_METHODEVP_MD等,来替换对应软算法的METHOD