zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    [转载]Python爬虫之xpath使用技巧
    手机自动化脚本
    英镑像素转换
    小程序路径存入数据库
    avalonia项目在银河麒麟操作系统arm架构上运行报错:default font family is not be null or empty
    http 301、304状态码
    一文完全理解IP
    TCP是如何保证可靠传输的?
    一文弄懂TCP常见面试题
    一文弄懂HTTP常见面试题
  • 原文地址:https://www.cnblogs.com/informatics/p/7604461.html
Copyright © 2011-2022 走看看