OpenSSL/EC GFp 简单方法
椭圆曲线库通过单个通用接口提供许多不同的实现。当使用 EC_GROUP_new(参见 EC_GROUP_new)构造曲线时,必须提供实现方法。此处描述的函数都返回指向 **EC_METHOD** 结构的 const 指针,该指针可以传递给 EC_GROUP_NEW。重要的是,必须使用与所选曲线形式相匹配的正确实现类型。
对于 F2^m 曲线,只有一种实现选择,即 EC_GF2_simple_method。
对于 Fp 曲线,最低公分母实现是 EC_GFp_simple_method 实现。所有其他实现都基于此实现。EC_GFp_mont_method 建立在 EC_GFp_simple_method 基础上,但增加了蒙哥马利乘法(参见 Bignum)。EC_GFp_nist_method 提供了一个针对 NIST 推荐曲线(NIST 曲线可通过 EC_GROUP_new_by_curve_name 获取,如 EC_GROUP_new 所述)优化的实现。
函数 EC_GFp_nistp224_method、EC_GFp_nistp256_method 和 EC_GFp_nistp521_method 为 NIST P224、P256 和 P521 曲线分别提供了 64 位优化实现。但是请注意,这些实现并非在所有平台上都可用。
EC_METHOD_get_field_type 标识 EC_METHOD 结构支持的字段类型,可以是 F2^m 或 Fp。如果字段类型是 Fp,则返回的值为 **NID_X9_62_prime_field**。如果字段类型是 F2^m,则返回的值为 **NID_X9_62_characteristic_two_field**。这些值在 obj_mac.h 头文件中定义。
所有 EC_GFp* 函数和 EC_GF2m_simple_method 始终返回指向 EC_METHOD 结构的 const 指针。
EC_METHOD_get_field_type 返回一个整数,该整数标识 EC_METHOD 结构支持的字段类型。