国密算法的相关知识请看:密码学系列 - 国密算法
在Fabric上扩展国密方法
一种是基于Fabric本身扩展国密包
这种改法不用对Golang标准库做任何地改动,所有的修改都在Fabric项目源码上进行
- 其一,把国密的库进行移植,封装
gm-crypto
; - 其二,扩展Fabric现有的
bccsp
模块; - 其三,修改
x509证书
相关的地方。- Fabric-CA主要是为了实现对加入联盟链的成员的身份控制以及数据生成保管。Fabric-CA中:
Lib
,主要是接口的实现,主要在解析申请证书请求以及签发证书流程要替换为国密算法;Util
,该包数据工具类,主要在证书的编解码等操作中扩展国密算法;Vendor
中,替换对Fabric的包的引用,提供对国密算法的支持
- Fabric-CA主要是为了实现对加入联盟链的成员的身份控制以及数据生成保管。Fabric-CA中:
在Fabric中扩展国密算法,大概有以下几个方面:
- 第一,Fabric框架扩展支持国密算法;
- 第二,Fabric-CA扩展支持国密算法;
- 第三,Fabric-SDK扩展支持国密算法;
- 第四,fabric-baseimage、fabric-baseos镜像扩展支持国密算法;
- 第五,Fabirc框架扩展支持加载.so库。
另一种方法是基于Golang标准库扩展国密
这种方案是直接扩充Golang标准库,改法更为清晰。
基于Go语言的国密算法:
SM2: 国密椭圆曲线算法库
- 支持Generate Key, Sign, Verify基础操作
- 支持加密和不加密的pem文件格式(加密方法参见RFC5958, 具体实现参加代码)
- 支持证书的生成,证书的读写(接口兼容rsa和ecdsa的证书)
- 支持证书链的操作(接口兼容rsa和ecdsa)
- 支持crypto.Signer接口
SM3: 国密Hash算法库(摘要算法)
- 支持基础的sm3Sum操作
- 支持hash.Hash接口
SM4: 国密分组密码算法库
- 支持Generate Key, Encrypt, Decrypt基础操作
- 提供Cipher.Block接口
- 支持加密和不加密的pem文件格式(加密方法为pem block加密, 具体函数为x509.EncryptPEMBlock)