| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2179 人关注过本帖
标题:linux下C语言实现:使用openssl中的DH算法结构,将其转换成为DER编码和将DE ...
只看楼主 加入收藏
todayzjs
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:30
专家分:121
注 册:2013-7-1
结帖率:50%
收藏
 问题点数:0 回复次数:1 
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语言实现,万分感激
搜索更多相关主题的帖子: linux C语言 结构体 字符串 
2013-08-20 14:55
todayzjs
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:30
专家分:121
注 册:2013-7-1
收藏
得分:0 
哦喔,看来没有人接触这方面,调试了半天,终于是解决了,写一下我的程序,供可能会用到的人去察看。

d1,d2为两个DH结构,len_der为DER长度。P就是一个指针。


 /*i2d_(const *a, unsigned char **p)*/
  len_der = i2d_DHparams(d1, NULL);
  p = (unsigned char *)malloc (sizeof(unsigned char) * len_der);
  printf("%d\n", len_der);
  len_der = i2d_DHparams(d1, &p);
  p -= len_der;
  for (j = 0; j < len_der; j++)
    {
      printf("%x", p[j]);
    }
  printf("\n");

  d2i_DHparams(&d2, &p, len_der);
  p -= len_der;
  free(p);

  len_der = i2d_DHparams(d2, NULL);
  p = (unsigned char *)malloc (sizeof(unsigned char) * len_der);
  printf("%d\n", len_der);
  len_der = i2d_DHparams(d2, &p);
  p -= len_der;
  for (j = 0; j < len_der; j++)
    {
      printf("%x", p[j]);
    }
  printf("\n");
  free(p);
2013-08-20 16:10
快速回复:linux下C语言实现:使用openssl中的DH算法结构,将其转换成为DER编码和 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014912 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved