![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
综合
hudaiqian
这个作者很懒,什么都没留下…
展开
-
blog开张了
马上上班了,开始在blog上写点自己的技术,生活方面的体会了。希望这里能成为我交流技术,认识朋友的一个好场所,希望大家多多捧场,谢谢!原创 2007-01-13 16:11:00 · 582 阅读 · 0 评论 -
openssl 代码分析(1)
openssl支持的平台非常多,至少我就在windows,linux,以及mips上编译且运行过。而且按照openssl的整个设计,我想移植到任何平台都是没有多少障碍的,openssl已经很好的将平台依赖的部分独立开来,通过callback的方式来实现。比如内存分配函数,malloc,free等,就可以通过CRYPTO_set_mem_functions函数将目标平台的内存分配函数指针传入,这样openssl所有的内存分配就会最终调入到用户传入的函数里面。其他类似的callback机制还有很多,包括为了多任原创 2011-02-27 18:45:00 · 13086 阅读 · 2 评论 -
openssl 代码分析(2)----i2d和d2i系列函数
在openssl crypto库中,有很多形似i2d_xxx和d2i_xxx的函数,而且用source insight这样的代码浏览工具是没法找到其定义的,在我刚刚接触openssl的时候,着实郁闷了一阵子,就是找不到定义。后来才发现了这一系列函数的来源。原来他们是通过宏定义的方式来实现的。 在asn1.h中,有一系列的宏定义,其中DECLARE_ASN1_ENCODE_FUNCTIONS就是用于d2i和i2d的原型。 #define DECLARE_ASN1_ENCODE_FUNCTIONS(t原创 2011-03-01 10:58:00 · 13333 阅读 · 2 评论 -
openssl 代码分析(3) 深入d2i_x509
首先是几个结构体的定义 struct ASN1_TLC_st{ char valid; /* Values below are valid */ int ret; /* return value */ long plen; /* length */ int ptag; /* class value */ int pclass; /* class value */ int hdrlen; /原创 2011-03-05 23:13:00 · 16147 阅读 · 0 评论 -
另外一个阅读openssl code的tip
由于openssl代码非常复杂,尤其是用到了非常多不太常用的C技巧,像n多的宏定义,使得我们在查找一些函数,变量定义的时候非常麻烦,无论什么样的代码工具都没法定位到函数的原始定义处。 对于通过宏来定义的函数和变量,如果我们去一层层的将宏扩展开来分析,将会是非常麻烦的,就像我之前所作的那样,需要不少的时间,而且有的时候不一定对。 幸好编译器在预编译阶段已经帮我们将所有的宏都展开,所以我们可以利用这一点来获取预编译的结果。 对于MSVC的编译器CL,有一个选项/P可以将预编译的结果写到一个文件中,如xxx原创 2011-03-13 19:56:00 · 2704 阅读 · 1 评论 -
磨刀不误砍柴工
这是一句广为流传的俗语,表面意思就是磨刀并不会耽误砍柴的时间,在软件开发过程中,似乎也有同样的情况出现。有的时候,项目为了赶进度,需要快速实现,于是我们就马不停蹄的加班加点的去写代码了,其他周边的功夫能少耽误就少耽误,但是是不是除了写代码,其他什么事情都可以省原创 2011-07-05 20:56:49 · 1051 阅读 · 0 评论