Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3926759
  • 博文数量: 93
  • 博客积分: 3189
  • 博客等级: 中校
  • 技术积分: 4229
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-02 13:29
个人简介

出没于杭州和青岛的程序猿一枚,对内核略懂一二

文章分类

全部博文(93)

文章存档

2016年(2)

2015年(3)

2014年(11)

2013年(29)

2012年(16)

2011年(5)

2010年(5)

2009年(22)

分类: 网络与安全

2012-08-03 15:11:02

Openssl被认为是最好的第三方加密和签名库,没有之一。
但在最近的一个应用却发现了Openssl对线程的支持非常不好。比如开启200个线程对同一个字符串进行RSA_private_encrypt签名操作,就会发现应用程序经常会堆栈异常。如果使用线程锁来控制,就没有问题了。
于是决定查找Openssl是否支持多线程。于是下载了对应的源码openss-0.9.8h,查看代码会发现其中使用的malloc的进程变量来存储信息,而这些变量没有显示的线程保护。
 
在Openssl的头文件中有一个flag标志RSA_FLAG_THREAD_SAFE,但是查找整个源码你会发现,这个标志只在定义中,没有实际的使用。或许Openssl计划在之后的版本中添加线程保护,这样就不用开发者自己来做线程保护了。
 
建议Openssl在没有真正的线程保护之前,取消RSA_FLAG_THREAD_SAFE标志,因为这样会让开发者误以为设置了这个标志就线程安全了。
阅读(4534) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~