OpenSSL密码库算法笔记——第5.2章 椭圆曲线算法的函数架构图

OpenSSL密码库算法笔记——第5.2章 椭圆曲线算法的函数架构图椭圆曲线算法中涉及的函数纷繁复杂,比如为了实现“复制点群”功能,就定义了四个函数,有:intEC_GROUP_copy(EC_GROUP*dest,constEC_GROUP*src)、intec_GFp_mont_group_copy(EC_GROUP*dest,constEC_GROUP*src)、intec_GFp_simple_group_copy(…

大家好,又见面了,我是你们的朋友全栈君。

椭圆曲线算法中涉及的函数纷繁复杂,比如为了实现“复制点群”功能,就定义了四个函数,有:

int EC_GROUP_copy (EC_GROUP *dest, const EC_GROUP *src)

int ec_GFp_mont_group_copy (EC_GROUP *dest, const EC_GROUP *src)

int ec_GFp_simple_group_copy (EC_GROUP *dest, const EC_GROUP *src)

int ec_GF2m_simple_group_copy (EC_GROUP *dest, const EC_GROUP *src)

怎么会有这么多函数呢,它们之间有什么关系呢?在这一节里将会向你详细解释。

首先,实现椭圆曲线中算法的函数大部分在文件ec_lib.cecp_mont.cecp_smpl.cec2_smpl.c里面。这四个文件所起作用各不相同:

文件

大致作用

备注

ec_lib.c

提供统一的对外接口

个别函数接口未统一

ecp_mont.c

专门处理field_data1、field_data2和函数field_mod_func

只针对素域时处理点群的部分函数

ecp_smpl.c

素域底层基本功能的具体实现

只针对素域

ec2_smpl.c

二元域底层基本功能的具体实现

只针对二元域

5.1 ec_lib.cecp_mont.cecp_smpl.cec2_smpl.c的作用

接着,来看看它们之间的关系。

  1. ec_lib.c中的函数(无论接口是否统一)会根据有限域类型调用ecp_mont.c素域、点群)ecp_smpl.c(素域)或者ec2_smpl.c(二元域)。
  2. 对素域而言,ecp_mont.c专门处理field_data1、field_data2和函数field_mod_func(二元域没有这三个参数),剩下的底层基本功能的具体实现需要去调用ecp_smpl.c。如果不需要处理field_data1、field_data2和函数field_mod_func,则直接调用ecp_smpl.c,而不需要调用ecp_ mont.c
  3. 对二元域而言,ec2_smpl.c是底层基本功能的具体实现,被ec_lib.c直接调用。

以上关系的图示如下:

OpenSSL密码库算法笔记——第5.2章 椭圆曲线算法的函数架构图

5.2 ec_lib.cecp_mont.cecp_smpl.cec2_smpl.c的调用关系

        接下来,举两个例子来说明。

例1:分析本小节开始部分提到的“复制点群”各函数之间的相互关系。

注意:以下用记号“EC_GROUP_copy @ec_lib.c”表示函数EC_GROUP_copy是在文件ec_lib.c中,其余类似。

OpenSSL密码库算法笔记——第5.2章 椭圆曲线算法的函数架构图

5.3 “复制点群”函数的调用关系

例2:“设置群信息”。该例中不需要处理field_data1、field_data2和函数field_mod_func,所以就没有调用ecp_mont.c文件,而是直接调用ecp_smpl.c

OpenSSL密码库算法笔记——第5.2章 椭圆曲线算法的函数架构图

5.4 “设置群信息”函数的调用关系

        最后再多说两句。其实每个函数的函数名都写的非常清楚,从函数名中就可以读出该函数是在哪个文件中,是对素域还是二元域进行操作,亦或是作为一个统一的接口。

  1. 如果函数名中带有“GFp”,则函数是对素域进行操作;如果函数名中带有“GF2m”,则函数是对二元域进行操作。
  2. 如果函数名中带有“mont”,则函数在ecp_mont.c文件中。
  3. 如果函数名中带有“smpl”,则函数在ecp_smpl.c或者ec2m_smpl.c文件中。至于具体在哪个文件,就看文件名里面是带有“GFp”还是“GF2m”。

另外,ec_lib.c中还有部分函数的接口并没有统一(比如例2),其实这部分函数同样可以做到接口的统一,但这是后一步的工作了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162135.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • web安全概述_网络安全和web安全

    web安全概述_网络安全和web安全域名什么是域名?域名(DomainName),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。例:www.baidu.comDNS什么是DNS?域名系统(DomainNameSystem,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过2

    2022年9月20日
    0
  • vb.net python哪个好_VS VB

    vb.net python哪个好_VS VBPublicClassForm1   PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load       get_CPU_info()       get_net_info()       get_op_info()       get

    2022年9月27日
    0
  • .pfx 证书和 .cer 证书

    .pfx 证书和 .cer 证书证书系列:1:.pfx证书和.cer证书2:导入pfx证书通常情况下,作为文件形式存在的证书一般有三种格式:第一种:带有私钥的证书,由PublicKeyCryptographyStandards#12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以.pfx作为证书文件后缀名。 第二种:DEREncodedBinary(.cer)二进制编码的证书,证书中没有私钥,DER编码二进制格式的证书文件,以.cer作为证书文件后缀名。 第三种:Bas.

    2022年6月3日
    92
  • python图像处理之scikit-image基本用法

    python图像处理之scikit-image基本用法本文介绍Python语言用于数字图像处理,那么要使用python进行各种开发和科学计算,需要对应相对的python包,python有很多的数字图像处理相关的包,像PILPillowOpenCVscikit-image等等其中PIL和Pillow只提供最基础的数字图像处理,功能有限;opencv实际上是一个c++库,只是提供了python接口,scikit-image…

    2022年10月9日
    0
  • 测试bolgo

    测试bolgo

    2021年10月25日
    54
  • Vs2013 简单定制安装

    Vs2013 简单定制安装

    2022年3月5日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号