查看: 699|回复: 1

[源码分享] SSPI 打造纯API+汇编 winhttp及socket支持SSL安全连接

[复制链接]
发表于 2017-3-8 14:04 | 显示全部楼层 |阅读模式
cc、小米 2017-3-8 14:04 699 1 显示全部楼层
抛弃累赘的OpenSSL,拥抱windows SSPI !

背景:这也是在使用当中遇到的坑,winhttp组件在某些电脑上无法使用,要么open卡死,要么send卡死,后面用了hpsocket,封装了iwinhttp(hpsocket <-前面是可以点的哦~)。但是hpsocket也有各种不安逸的地方,httpsync组件读文件在网速很慢的时候要设置超大的超时时间才能全部读取完,不能读写回调,所以就萌生了一个自己打造的念头。

前辈:然而自己论坛也有开源的基于OpenSSL+Socket的WinHttp(anthttp<-前面是可以点的哦~),我看了下,分块没处理,还有就是强制recv返回0的时候才跳出读取循环,这个就有点尴尬了,而且还带两个dll比较麻烦。

SSPI:再来SSPI是什么?SSPI是Security Support Provider Interface(Microsoft安全支持提供器接口)的英文缩写。SSPI是定义得较全面的公用API,用来获得验证、信息完整性、信息隐私等集成安全服务,以及用于所有分布式应用程序协yi的安全方面的服务。

通过科学上网发现这个是可以用来进行SSL加密的,所以潜心研究,在这也感谢心宇kyozy的指导,因为C的自定义数据类型有些和易语言是不一样的,特别是在数组的情况下.也感谢MSDN上的demo和一些开源作品(curl,sslsocket)

这次开源的呢算是个半成品,代码也写得比较乱,但是勉强能看懂吧。因为我发现易语言没有任何关于SSPI的demo以及稍微淡到一点的,算是开了个先驱吧。

本次开源的模块实现了http和https的访问,分块处理,SSPI的创建、握手、加密、解密(本次开源的重点)


把 _SSL_Init 下的_CreateCredentials (TargetName, m_hCreds, Protocol)  这一句改为_CreateCredentials (字符 (0), m_hCreds, Protocol)  就可以正常运行了。

这次算是bate1.0版本吧,可能会有许多问题,后面会继续完善,也会把SSPI整个封装出来,感觉非常有用。
发表于 2017-3-9 15:57 | 显示全部楼层
真的不错啊。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表 发新帖

快速回复 返回顶部 返回列表