guanzhi / GmSSL

支持国密SM2/SM3/SM4/SM9/SSL的密码工具箱
http://gmssl.org
Apache License 2.0
5.25k stars 1.68k forks source link

工业中使用GmSSL遇到的问题--2 #1443

Open yuesong-feng opened 1 year ago

yuesong-feng commented 1 year ago

目前某大型国产商业数据库需要集成GmSSL来做TLCP加密通信,遇到编译器版本的问题: GmSSL3.0、3.1版本在VS2010环境均编译不通过,推测因为GmSSL开发使用的MSVC编译器版本过高,VS2017也不通过。 GmSSL3.0版本在linux gcc4.8.5环境下编译通过、可以正常使用,但GmSSL3.1版本在同样的环境编译不通过,因为使用了高版本编译器提供的一些函数/特性(如getentropy等),在最新版本的gcc下都没有问题。 目前最新稳定版为gcc 12.2,但工业上尤其是数据库领域使用的编译器版本都偏低(考虑大量老平台兼容),如openGauss官方使用gcc 7.3.0,OceanBase官方推荐gcc 4.8.5 参考OpenSSL稳定版,在最新版和很老版本的编译器中也都编译通过。 所以目前项目中的GmSSL只能使用3.0版本、且只能支持linux 作者后期是否考虑支持一下较低版本的编译器呢?

YanTianshi commented 1 year ago

我用vs2022,编译3.1的没问题,已经在项目中集成了。

guanzhi commented 1 year ago

getentropy的问题可以通过修改CMakeLists.txt来强制使用默认的/dev/random设备。 更多问题请贴上具体的编译输出。 欢迎老版本编译器的用户加入项目维护团队,项目开发组没有丰富的老版本编译器环境。