基于go1.17.5
(目前go版本已升级至1.22
)实现的国密算法库,包括:
emmansun/gmsm
的sm2部分实现部分扩展。tjfoc/gmsm
的sm2部分的纯软实现,仅作验证与参考用。emmansun/gmsm
的sm3部分实现部分扩展。tjfoc/gmsm
的sm3部分的纯软实现,仅作验证与参考用。emmansun/gmsm
的sm4部分实现部分扩展。tjfoc/gmsm
的sm4部分的纯软实现,仅作验证与参考用。go1.17.5
的x509包与本项目的sm2/sm3/sm4/ecbase/ecdsa_ext等包实现国密改造。go1.17.5
的tls包与本项目的相关包实现国密改造。go1.17.5
的net/http
包做了对应的国密改造。google.golang.org/grpc
的v1.44.0
版本做了对应的国密改造。在x509与gmtls的实现中,国密算法采用的是基于
emmansun/gmsm
的国密实现,该开源项目已实现利用amd64与arm64架构CPU实现对应国密算法的硬件加速。sm2soft/sm3soft/sm4soft是对应国密算法的纯软实现,仅用作验证与参考。
go package: gitee.com/zhaochuninhefei/gmgo
本项目涉及到的国密有SM2、SM3和SM4,相关国密标准如下:
从测试用例入手快速了解gmgo的使用。
测试用例代码: sm2test/sm2_test.go
cd sm2test
go test
测试用例代码: sm3/sm3_test.go
cd sm3
go test
测试用例代码: sm4/sm4_test.go
、sm4/sm4_gcm_test.go
cd sm4
go test
测试用例代码: x509test/x509_test.go
cd x509
go test
cd ../x509test
go test
注意,x509/x509_test.go
的TestCreateCertFromCA
系列测试函数生成的sm2系列密钥文件与证书(x509/testdata
目录下)将会用于gmtls
与gmgrpc
的测试用例。
测试用例代码: gmtls/tls_test/tls_test.go
cd gmtls/tls_test
go test
执行之前请确认certs
目录下的sm2系列文件是否最新。可以在该目录下执行copyCerts.sh
直接从x509/testdata
拷贝。
测试用例代码: grpc/grpc_test/grpc_test.go
cd grpc/grpc_test
go test
执行之前请确认testdata
目录下的文件是否最新。可以在该目录下执行copyCerts.sh
直接从x509/testdata
拷贝。
本工程根目录测试脚本run_test.sh
可运行上述测试用例。
gmgo本身不提供入口程序,仅仅作为其他golang项目的依赖包。但依然提供了Makefile用于编译检查代码,一般直接用make
命令编译即可。
本项目自身采用木兰宽松许可证(第2版),具体参考LICENSE
文件。
本项目参考了以下开源项目,基于其代码做了部分二次开发,向对应的开源作者表示感谢!
https://github.com/emmansun/gmsm
https://github.com/tjfoc/gmsm
https://github.com/golang/go
https://github.com/grpc/grpc-go
https://github.com/envoyproxy/go-control-plane
https://github.com/golang/net
https://github.com/gorilla/mux
https://github.com/gorilla/handlers
https://github.com/felixge/httpsnoop
https://github.com/grpc-ecosystem/go-grpc-middleware
https://github.com/prometheus/client_golang
对应的版权声明参见目录thrid_licenses
。
Thanks to JetBrains for supporting open source projects.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。