文件名称:Engine数据结构-树莓派4b+opencv4+python 打开摄像头的实现方法
文件大小:2.26MB
文件格式:PDF
更新时间:2024-06-22 11:26:05
opensll 加密 解密 数据安全 网络安全
23.1 Engine概述 Openssl 硬件引擎(Engine)能够使用户比较容易地将自己的硬件加入到 openssl 中去, 替换其提供的软件算法。一个 Engine 提供了密码计算中各种计算方法的集合,它用于控制 openssl的各种密码计算。 23.2 Engine支持的原理 Openssl 中的许多数据结构不仅包含数据本身,还包含各种操作,并且这些操作是可替 换的。 Openssl 中这些结构集合一般叫做 XXX_METHOD,有 DSO_METHOD、 DSA_METHOD、EC_METHOD、ECDH_METHOD、ECDSA_METHOD、DH_METHOD、 RAND_METHOD、RSA_METHOD、EVP_CIPHER 和 EVP_MD 等。以 RSA 结构为例 (crypto/rsa/rsa.h),RSA 结构不仅包含了大数 n、e、d 和 p 等等数据项目,还包含一个 RSA_METHOD回调函数集合。该方法给出了 RSA各种运算函数。 对于各种数据类型,要进行计算必须至少有一个可用的方法(XXX_METHOD)。因此, openssl 对各种类型都提供了默认的计算方法 (软算法 )。如果用户实现了自己的 XXX_METHOD,那么就能替换 openssl提供的方法,各种计算由用户自己控制。硬件 Engine 就是这种原理。根据需要,一个硬件Engine可实现自己的RAND_METHOD、RSA_METHOD、 EVP_CIPHER、DSA_METHOD、DH_METHOD、ECDH_METHOD 和 EVP_MD 等,来替 换对应软算法的 METHOD。 23.3 Engine数据结构 Engine 数据结构定义在 crypto/engine/eng_int.h 文件中,是对用户透明的数据结构,如 下: struct engine_st { const char *id; const char *name; const RSA_METHOD *rsa_meth; const DSA_METHOD *dsa_meth; const DH_METHOD *dh_meth; const ECDH_METHOD *ecdh_meth; const ECDSA_METHOD *ecdsa_meth; const RAND_METHOD *rand_meth; const STORE_METHOD *store_meth; ENGINE_CIPHERS_PTR ciphers; ENGINE_DIGESTS_PTR digests; ENGINE_GEN_INT_FUNC_PTR destroy;