Openssl的Engine源码分为四类:
1) 核心实现
在crypto/engine目录下,是其核心实现。当同时有多个硬件Engine时,openssl分别为cipher对称算法(tb_cipher.c)、dh算法(tb_dh.c)、digest摘要算法(tb_digest.c)、dsa算法(tb_dsa.c)、ecdh算法(tb_ecdh.c)、ecdsa算法(tb_ecdsa.c)、rand随机数算法(tb_rand.c)、rsa算法(tb_rsa.c)和存储方式(tb_store.c)维护一个哈希表。所有用户实现的硬件Engine都注册在这些全局的哈希表中。同时,用户使用的时候,能够指定各种算法默认的硬件Engine。
2) 内置硬件Engine
源码位于engines目录,实现了一些硬件Engine。
3) 范例
源码位于demos/engines目录下,供用户学习参考。
4) 分散于其他各个运算模块用于支持Engine
各个运算模块都支持Engine,当提供了Engine时,将会采用Engine中的算法。