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文件中,它们都实现了同一个接口KeyImporter,当调用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接口各个函数的具体实现代码。

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

Code is there, it all depends on you to read or not :-)

时间: 2024-12-15 11:54:04

Hyperledger Fabric密码模块系列之BCCSP(三)的相关文章

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

Fabric作为IBM主导的区块链平台,可谓是联盟链中的一枝独秀,现如今已经有100多个大型国际银行.金融以及科技公司的加盟.与其说Fabric是区块链的一种平台,倒不如说是一个区块链框架更加精确,因为如果你渐渐了解熟悉之后,你会发现他并不像Bitcoin和Ethereum一样,可以作为单独的应用来使用.而Fabric就像是其他框架一样,你必须通过智能合约来实现自己的业务才能使用,包括代币(如果你的业务场景需要的话)也需要自己小心翼翼的去自主实现.还有个重要的特点就是Fabric是插件化的,你可

Hyperledger Fabric 1.0 学习搭建 (三)--- 运行测试e2e-Fabric

3.1.运行fabric-samples的问题说明 该问题说明能够解决6.1.平台特定使用的二进制文件配置第一步的问题.可以选择继续阅读该说明,或者等参考到6.1小节时再反向阅读本说明,具体在6.1中会重新指向本步骤. 一般情况下,我们会参照官网来完成第一个网络测试,在该在线文档中会让我们去下载一个fabric-samples,下载地址在github上,我们需要将其下载至本地是一个fabric-samples-release文件夹,将其更名为fabric-samples随后上传至opt/gopa

HyperLedger Fabric关键技术(6.4)

本节介绍从最底层的账本开始,逐一讲解账本的结构和存储.智能合约的编写和部署.通道的操作.节点的背书和提交.排序的共识和客户端SDK的接口调用,与交易流程顺序相反,由里及表的说明Fabric最关键的技术,通过学习了这六种关键技术知识,能初步掌握Fabric的核心,了解Fabric运作原理. 6.3.1 帐本(Ledger) Fabric帐本(Ledger)是一系列有序和防篡改的状态转换的记录,结构由一个区块链构成,并将不可变的.有序的记录存放在区块中:同时包含一个状态数据库来记录当前的状态,账本的

Hyperledger Fabric 1.0 从零开始(三)——内网(准离线)环境构建

有公网环境的服务器可以直接看 Hyperledger Fabric 1.0 从零开始(二)--公网环境构建 ,本篇内容与上篇相似,只不过环境搭建需要在内网下,也就是网络被限制的情况下. 1:环境构建与测试 在本文中用到的宿主机环境是Centos ,版本为Centos.x86_647.2,通过Docker 容器来运行Fabric的节点,版本为v1.0.因此,启动Fabric网络中的节点需要先安装Docker.Docker-compose和Go语言环境,然后在网上拉取相关的Docker镜像,再通过配

(三)Hyperledger Fabric 1.1安装部署-chaincode测试

环境搭建完毕,需要的工具和镜像安装完毕,就可以进行chaincode测试了,接下来参考官方教程运行first-network. 进入first-netwok: cd first-network first-network的文件结构如下 在first-network目录下有两个自动化脚本byfn.sh和eyfn.sh,这两个脚本的启动顺序是先执行byfn.sh再执行eyfn.sh(eyfn.sh不是必须的,eyfn.sh的作用稍后再介绍).byfn.sh的执行格式为:./byfn.sh (up|d

Hyperledger Fabric V1.0 for Centos7.2 开发环境搭建

区块链技术大有可为, 安装组件如下: 1.Docker-compose:Docker 容器管理: 2.Go lang SDK:Go 语言开发.编译环境: 3.Git:git 镜像克隆与提交: 4.Rest Client: rest API 测试: 容器主要运行有:MemberSrv 和Peer; 一.HyperLedger Fabric环境准备 a)检查版本 $ uname –r 3.10.0-229.el7.x86_64 b)更新Centos yum update c)安装需要软件 yum i

Hyperledger Fabric CA的命令行用法

介绍Hyperledger Fabric CA的命令行方式简单用法 Hyperledger Fabric CA由server和client两部分组成. 设置两个环境变量 export FABRIC_CA_SERVER_HOME=/path_to/fabric-ca/server export FABRIC_CA_CLIENT_HOME=/path_to/fabric-ca/client server的操作主要有两个: 1. 初始化Server服务 在server启动之前,需要至少有一个自我认证的

Hyperledger Fabric 建立一个简单网络

p { margin-bottom: 0.25cm; line-height: 120% } Building you first network 网络结构: 2个Orgnizations(每个Org包含2个peer节点)+1个solo ordering service 打开fabric-sample下的示例first-network p { margin-bottom: 0.25cm; line-height: 120% } 其中byfn.sh为启动这个网络的启动脚本,启动脚本中除建立一个包含

Maven提高篇系列之(三)——使用自己Repository(Nexus)

这是一个Maven提高篇的系列,包含有以下文章: Maven提高篇系列之(一)——多模块 vs 继承 Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例) Maven提高篇系列之(三)——使用自己Repository(Nexus) Maven提高篇系列之(四)——使用Profile Maven提高篇系列之(五)——处理依赖冲突 Maven提高篇系列之(六)——编写自己的Plugin(本系列完) 平时我们自己做的项目都是直接使用Maven提供的Cent