• Hyperledger Fabric密码模块系列之BCCSP(三)


    fabric中通过工厂模式来生成bccsp实例,进而通过bccsp的接口来提供加密、解密、签名验证以及哈希等操作。 fabric的factory工厂默认返回的bccsp实例是sw(也就是所有密码操作都是封装go底层算法来实现的),这里的工厂模式代码不多,大家可以自己去fabric/bccsp/factory目录下阅读源代码,以后有时间单独作为一章来介绍。

    sw在fabric项目发展中有一次较大的改动:

    1、在fabric-1.0发布前,代码的结构是通过具体算法来组织的,比如ecdsa相关的生成密钥、签名以及验证等编写在同一个go文件中。

    2、fabric-1.0发布后,代码按照bccsp接口实现来组织代码,比如关于密钥生成的操作KeyGen,aes,rsa以及ecdsa的密钥生成操作都组织到一个go文件中,它们都实现了同一个接口KeyGenerator,当调用bccsp的密钥生成算法KeyGen的时候,通过反射的机制来判断具体需要生成什么类型的密钥。新版本的优点是更加容易扩展,bccsp实现代码更加简洁。

    以下不作说明,以fabric-1.0版本以后的sw来介绍。本着“无图说个j8”原则,先附一张sw下的文件列表图:

    好了,这就是bccsp子包sw里面的代码,从文件名字上来看,主要分为6类:

    1、internals.go:定义了一组接口,每个接口对应bccsp接口中的一个函数,internals.go中的接口简化了bccsp的实现。

    2、fileks.go:与密钥存储和读取相关

    3、impl.go:sw的主文件,通过调用6中的函数来实现bccsp的各个接口。

    4、以算法名字开头的:密码算法实现相关。

    5、以算法名字+key开头的: 定义该算法密钥的具体数据结构,并实现Key接口

    6、以bccsp接口函数名开头的:包含了bccsp接口各个函数的具体实现代码。

    -------------代码包含了一切,想要深入了解,只能近距离接触------------------------------

    If you want to understand it further,  you'd better go to view the code.

  • 相关阅读:
    「学习笔记」杂项算法学习笔记
    「CF484E」Sign on Fence「整体二分」「线段树」
    「BZOJ 2653」middle「主席树」「二分」
    「BZOJ 5010」「FJOI 2017」矩阵填数「状压DP」
    jmeter阶梯式加压测试
    jmeter监控内存,CPU等方法
    jmeter 读取多个用户名并同时发
    APP性能测试工具
    Android--iOS抓取崩溃日志
    安装并使用PICT,生成测试用例
  • 原文地址:https://www.cnblogs.com/informatics/p/7604461.html
Copyright © 2020-2023  润新知