linux下C语言实现:使用openssl中的DH算法结构,将其转换成为DER编码和将DER编码转换为结构。
简单的说就是两个函数的使用:DH * d2i_DHparams(DH **a,const unsigned char **pp, long length); //将DER编码转换为DH结构
int i2d_DHparams(const DH *a,unsigned char **pp); //将DH结构转换成为DER编码。
关于这个两个函数介绍一下:
int i2d_DHparams(const DH *a,unsigned char **pp)
i2d系列函数将一个内部结构(C语言结构体)转换成DER编码的对象, 参数a是一个指向一个结构体的指针,参数pp是一个指向并创建的DER编码字符串对象指针的指针。调用成功完成后,pp指针将被指向新生成的DER字符串的结束位置,并返回该字符串的长度。所以参数pp可以被相同的函数对此调用,以处理多个对象,并将这写对象存储成一个长DER编码的字符串,如果参数pp为NULL,则仅仅返回有效数据的长度,这种性质可以在首次调用的时候来决定要分配的字符串长度.
DH * d2i_DHparams(DH **a,const unsigned char **pp, long length)
d2i系列函数将一个DER编码的对象转换成一个内部的结构(C语言结构体)。参数a是一个指向一个结构体指针的指针,用来存放转换好的内部结构对象,参数pp是一个指向DER编码字符串对象指针的指针,参数length是*pp里面有限数据的长度。如果a为NULL, 则仅仅将内部结构对象作为返回之返回;如果,a不为NULL而*a为NULL,则将为*a分配内存并存储生成的内部结构对象。如果调用失败,则返回NULL,调用成功完成后,*pp将被重置到*pp+length的位置,并返回生成的内部结构对象的地址。
求大神给个实现:
linux 下 用C语言实现,万分感激