【转载】令人作呕的OpenSSL,转自CSDN博主Bomb250
原文:http://blog.csdn.net/dog250/article/details/24552307
作者:Bomb250
日期:2014年04月26日 20:00:02
引子
在 OpenSSL 心脏出血之后,我相信很多人都出了血,并且流了泪...网上瞬间出现了大量吐嘈 OpenSSL 的文章或段子,仿佛内心的窝火一瞬间被释放了出来,跟着这场疯闹,我也吐一下嘈,以雪这些年被 OpenSSL 蹂躏之辱,也许可以顺便展现一下我的无知与愚昧...
典型的OpenSSL代码风格
some_function(...)
{ ... if (s->session->sess_cert != NULL) {
#ifndef OPENSSL_NO_RSA if (s->session->sess_cert->peer_rsa_tmp != NULL) { ... }
#endif ... } else { ...; } ...
#ifndef OPENSSL_NO_RSA if (alg & SSL_kRSA) { ... }
#else /* OPENSSL_NO_RSA */ if (0) ;
#endif
#ifndef OPENSSL_NO_DH else if (alg & SSL_kEDH) { ...
#ifndef OPENSSL_NO_RSA if (alg & SSL_aRSA) ...
#else if (0) ;
#endif
#ifndef OPENSSL_NO_DSA else if (alg & SSL_aDSS) ...;
#endif /* else anonymous DH, so no certificate or pkey. */ ... } else if ((alg & SSL_kDHr) || (alg & SSL_kDHd)) { ... goto f_err; }
#endif /* !OPENSSL_NO_DH */ #ifndef OPENSSL_NO_ECDH else if (alg & SSL_kECDHE) { ... if (0) ;
#ifndef OPENSSL_NO_RSA else if (alg & SSL_aRSA) ...;
#endif
#ifndef OPENSSL_NO_ECDSA else if (alg & SSL_aECDSA) ...;
#endif /* else anonymous ECDH, so no certificate or pkey. */ ... } else if (alg & SSL_kECDH) { ... goto f_err; }
#endif /* !OPENSSL_NO_ECDH */ if (alg & SSL_aFZA) { ... goto f_err; } /* p points to the next byte, there are 'n' bytes left */ /* if it was signed, check the signature */ if (pkey != NULL) { ... if ((i != n) || (n > j) || (n <= 0)) { /* wrong packet length */ ... goto f_err; } #ifndef OPENSSL_NO_RSA if (pkey->type == EVP_PKEY_RSA) { ... for (num=2; num > 0; num--) { ... } ... if (i < 0) { ... goto f_err; } if (i == 0) { /* bad signature */ ... goto f_err; } } else
#endif
#ifndef OPENSSL_NO_DSA if (pkey->type == EVP_PKEY_DSA) { /* lets do DSS */ ... if (EVP_VerifyFinal(&md_ctx,p,(int)n,pkey) <= 0) { /* bad signature */ ... goto f_err; } } else
#endif
#ifndef OPENSSL_NO_ECDSA if (pkey->type == EVP_PKEY_EC) { /* let's do ECDSA */ ... if (EVP_VerifyFinal(&md_ctx,p,(int)n,pkey) <= 0) { /* bad signature */ ... goto f_err; } } else
#endif { ... goto err; } } else { /* still data left over */ if (!(alg & SSL_aNULL)) { ... goto err; } if (n != 0) { ... goto f_err; } } ... return(1);
f_err: ...;
err: ...;
#ifndef OPENSSL_NO_RSA if (rsa != NULL) RSA_free(rsa);
#endif
#ifndef OPENSSL_NO_DH if (dh != NULL) DH_free(dh);
#endif
#ifndef OPENSSL_NO_ECDH ...; if (ecdh != NULL) EC_KEY_free(ecdh);
#endif ...; return(-1);
}
【转载】令人作呕的OpenSSL,转自CSDN博主Bomb250相关推荐
- 【整理自官方公开资料】CSDN博主排名影响因素
我们都知道旧的排名系统是根据积分排名的. 而根据CSDN官方的消息,新的积分系统是在原来积分制的基础上,加上文章的收藏,分享,点赞,评论等数据权重,形成一个新的博客总排名体系. 新排名系统参考的部分指 ...
- 如何增加自己的文章在csdn的曝光量-参考CSDN博主排名更新公告
前言 不知不觉已经在CSDN上3年,但是本人也是刚刚在CSDN上创作文章,成为博主没几天,我看了这几天文章的浏览数据不尽人意,时常开始反思是不是自己的文章不够好.毕竟都是理工科出身,文采水平有限,但是 ...
- CSDN博主排行榜上线!
熬过了困苦的黑夜,算法小哥哥终于迎来了黎明的曙光,在与模型的无数次亲密"调戏"之后,模型终于给出了他想要的答案,与此同时,算法小哥哥的发际线又向资深迈进了一步. 就这样,CSDN博 ...
- 解决树莓派鼠标延迟/迟滞问题-转CSDN博主“Deiki”-sunziren
解决树莓派鼠标延迟/迟滞问题-转CSDN博主"Deiki"-sunziren 参考文章: (1)解决树莓派鼠标延迟/迟滞问题-转CSDN博主"Deiki"-su ...
- 用python实现csdn博主全部博文下载,html转pdf,有了学习的电子书了。。。(附源码)
用python实现csdn博主全部博文下载,html转pdf,有了学习的电子书了...(附源码) 我们学习编程,在学习的时候,会有想把有用的知识点保存下来,我们可以把知识点的内容爬下来转变成pdf格式 ...
- csdn 博主排行榜
没有入口,只能自己找入口 csdn 博主排行榜 https://blog.csdn.net/rank/list/total
- 运用爬虫给喜欢的csdn博主刷评论教程(超简单)
每日分享: 人们看起来好像是有选择的,但这其实是一个错觉.只要你的思维及其受制约的模式控制着你的生活,你还会有什么选择?没有. 重要提示:第一天我大概刷了50个评论(用的同一句话,在同一篇文章刷的), ...
- 沉痛悼念CSDN博主、年仅26岁的音视频专家雷霄骅
CSDN的老朋友.连续两届CSDN博客之星.微软MVP.博客排名52位.在中国传媒大学通信与信息系统专业攻读博士的雷霄骅,于2016年7月17日凌晨猝死在学校主楼五层,并于7月23号安葬.据相关报道称 ...
- CSDN博主排名更新公告
https://blogdev.blog.csdn.net/article/details/101441371CSDN博主排名更新公告
最新文章
- Glib实例学习(5)平衡二叉树
- python进程数上限_python-使用multiprocessing.Process并发进程数最多
- Class类---反射学习笔记(一)
- Avalonia跨平台入门第二十二篇之人脸检测
- 【HDU - 5605】 geometry(水,数学题,推公式)
- 2的次幂表示【递归算法训练】
- JetBrains IDEA实用快捷键
- java 中linux命令参数说明,java中linux命令参数说明
- (转)基于MVC4+EasyUI的Web开发框架形成之旅--权限控制
- Fiddler安装教程(图文版)
- Python+OpenCV:Optical Flow(光流)
- DTO,VO,POJO,JavaBeans之间的区别?
- 力扣-746. 使用最小花费爬楼梯
- 交换机组网最常见的8大故障以及如何解决
- 防火墙限制TCP流量新方法
- 计算机基础access2010实训,大学计算机基础access实验.doc
- DSP SRIO接口认识
- mysql 启动 spawn错误_supervisor ERROR (spawn error):错误解决
- 爬虫软件尝试-后羿采集器:批量免费抓取网页数据
- python3 cookbook中常遇问题的解答记录
热门文章
- Linux type stat file
- nft文件传输_Nancy之文件上传与下载
- oracle安装 插件的执行方法失败_解决 VS Code 中 golang.org 被墙导致的 Go 插件安装失败问题...
- Makefile:GCC CFLAGS变量和LDFLAGS变量
- 797. 差分(有图解)
- 字体图标的使用(HTML、CSS)
- 2018我们要赢 (5 分)
- Qt之QListView使用
- Open3d之交互式可视化
- Linux常用基本命令:三剑客命令之-awk内置函数用法