fabric国密改造记录及思路-具体工作(1)

下边分享国密改造具体工作和方法:

一、国密SM2/SM3/SM4算法代码库,基于国密算法的TLS/SSL代码库

      (1)、在国密改造中我们需要SM2/SM3/SM4的算法库,在github上已经有开源的代码库,将代码库下载到本地开发环境;

     下面简单介绍SM2/SM3/SM4的功能:

         SM2:国密椭圆曲线算法库

         SM3:国密hash算法库

         SM4:国密分组密码算法库,类似于AES加密算法

(2)、国密算法的TLS/SSL代码库,在github上也有开源的代码库,将代码库下载到本地开发环境

上边是国密改造中需要用到的国密算法基础代码库,我们的国密改在也是基于这两个基础库完成。

二、BCCSP模块改造

      (1)、首先我们需要对BCCSP模块做一个初步的了解,看如下源码:

加密服务提供者,bccsp接口定义,源码位置 bccsp/bccsp.go文件尾部位置
key秘钥接口定义,源码位置bccsp/bccsp.go文件头部位置
秘钥存储接口,源码位置bccsp/keystore.go

通过上边的几个接口定义,大致的了解bccsp模块的加密模块需要做哪些工作。

创建bccsp的gm国密模块,这部分的内容比较多,不做详细的文字说明,这部分代码的实现思路是,参照sw模块来实现,这个模块的功能实现后,接下来的工作就相对比较简单,只需要细心完成即可;

修改规则:

  (1)、将调用ecdsa包里边的方法替换成sm2

  (2)、将调用x509包里边的方法替换成sm2

  (3)、将调用crypto/tls包里边的方法替换成 国密 tls

完成这个模块的国密修改的工作后,需要在 bccsp/new.go这文件的 NewWithParams方法里边将实现的国密算法加入到swbccsp中,入下代码:

swbccsp.AddWrapper(reflect.TypeOf(&gmsm2PrivateKey{}), &gmsm2PrivateKeyVerifier{})//sm2 私钥验签

swbccsp.AddWrapper(reflect.TypeOf(&gmsm2PublicKey{}), &gmsm2PublicKeyKeyVerifier{})//sm2 公钥验签

swbccsp.AddWrapper(reflect.TypeOf(&bccsp.GMSM3Opts{}), &hasher{hash:sm3.New})//sm3 Hash选项

swbccsp.AddWrapper(reflect.TypeOf(&bccsp.GMSM2KeyGenOpts{}), &gmsm2KeyGenerator{})

swbccsp.AddWrapper(reflect.TypeOf(&bccsp.GMSM4KeyGenOpts{}), &gmsm4KeyGenerator{length:32})

swbccsp.AddWrapper(reflect.TypeOf(&bccsp.GMSM4ImportKeyOpts{}), &gmsm4ImportKeyOptsKeyImporter{})

swbccsp.AddWrapper(reflect.TypeOf(&bccsp.GMSM2PrivateKeyImportOpts{}), &gmsm2PrivateKeyImportOptsKeyImporter{})

swbccsp.AddWrapper(reflect.TypeOf(&bccsp.GMSM2PublicKeyImportOpts{}), &gmsm2PublicKeyImportOptsKeyImporter{})


下一篇:具体工作(2)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容