Hyperledger Fabric密码模块系列之BCCSP(一)
Fabric作为IBM主导的区块链平台,可谓是联盟链中的一枝独秀,现如今已经有100多个大型国际银行、金融以及科技公司的加盟。与其说Fabric是区块链的一种平台,倒不如说是一个区块链框架更加精确,因为如果你渐渐了解熟悉之后,你会发现他并不像Bitcoin和Ethereum一样,可以作为单独的应用来使用。而Fabric就像是其他框架一样,你必须通过智能合约来实现自己的业务才能使用,包括代币(如果你的业务场景需要的话)也需要自己小心翼翼的去自主实现。还有个重要的特点就是Fabric是插件化的,你可以方便的实现自己的共识算法、密码算法以及成员服务等,哪里需要换哪里。
这里提到了密码算法插件化(可插拔),对,我们接下来的日子里就针对Fabric的密码算法模块BCCSP(blockchain crypto service provider)进行分析,并且将SMx(国密算法)系列算法进行适配。
————————————进入正题——————————————————
bccsp目录结构如下
简单介绍一下:
bccsp.go: 主要接口声明的文件,比如BCCSP、Key、各种Opts等, 其中BCCSP接口包含了Sign Verify Encrypt Decrypt Hash KeyGen KeyDerive等
sw: bccsp的纯软件实现,内部实现通过调用go原生支持的密码算法,并且提供了一个keystore来保存密钥,密钥默认保存在/tmp目录下
pkcs11: bccsp的pkcs11实现,通过调用pkcs11接口来实现相关的密码操作,仅支持ecdsa、rsa以及aes算法。密钥保存在pkcs11通过pin口令保护的数据库或者硬件设备中。
utils:工具包,密钥编码转换等
signer: 实现了go的crypto.signer接口
factory:factory是bccsp的一个工厂,可以通过这个工厂返回一个具体的bccsp实例,比如上面说的sw或者pkcs11,如果添加了自己的bccsp实现,也要讲该bccsp添加到factory中。
--------------------------------------------------
Well begun is half done.
Hyperledger Fabric密码模块系列之BCCSP(一)的更多相关文章
- Hyperledger Fabric密码模块系列之BCCSP(五) - 国密算法实现
Talk is cheap, show me your code. 代码也看了,蛋也扯了,之后总该做点什么.响应国家政策,把我们的国密算法融合进去吧-- 先附两张bccsp下国密算法的设计实现图. ...
- Hyperledger Fabric密码模块系列之BCCSP(三)
fabric中通过工厂模式来生成bccsp实例,进而通过bccsp的接口来提供加密.解密.签名验证以及哈希等操作. fabric的factory工厂默认返回的bccsp实例是sw(也就是所有密码操作都 ...
- Hyperledger Fabric密码模块系列之BCCSP(四)
前面说过要找时间介绍一下bccsp包下面的工厂factory,so here it is. 通过factory目前可以获得两类BCCSP实例,一个是上文说的sw,还有一个是通过pkcs11实现的. B ...
- Hyperledger Fabric密码模块系列之BCCSP(二)
上一篇简单介绍了bccsp包下面的目录结构,这一篇本来想讲sw的,忽然感觉少点什么,对哈,得先将下bccsp这个接口,sw只是个实现啊.
- HyperLedger Fabric 1.4 关键技术(6.4)
本节介绍从最底层的账本开始,逐一讲解账本的结构和存储.智能合约的编写和部署.通道的操作.节点的背书和提交.排序的共识和客户端SDK的接口调用,与交易流程顺序相反,由里及表的说明Fabric最关键的技术 ...
- HyperLedger Fabric部署与链码解读
1.Fabric简介 Fabric是超级账本中的一个项目,用以推进区块链技术.和其他区块链类似,它也有一个账本,使用智能合约,且是一个参与者可以分别管理自身交易的系统.它是一个联盟链.Fabric与其 ...
- Centos7 HyperLedger Fabric 1.4 生产环境部署
Kafka生产环境部署案例采用三个排序(orderer)服务.四个kafka.三个zookeeper和四个节点(peer)组成,共准备八台服务器,每台服务器对应的服务如下所示: kafka案例网络拓扑 ...
- Hyperledger Fabric CA的命令行用法
介绍Hyperledger Fabric CA的命令行方式简单用法 Hyperledger Fabric CA由server和client两部分组成. 设置两个环境变量 export FABRIC_C ...
- HyperLedger Fabric 学习思路分享
HyperLedger Fabric 学习思路分享 HyperLedger Fabric最初是由Digital Asset和IBM公司贡献的.由Linux基金会主办的一个超级账本项目,它是一个目前非常 ...
随机推荐
- Java并发编程:volatile关键字
volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volatile关键字才得以 ...
- sleep() 和 wait() 区别
sleep()不释放同步锁,wait()释放同步锁 sleep()的作用是让线程休眠指定的时间,时间到后自动恢复线程执行.运行的主动权是由线程决定的. wait()可以用notify()直接唤起,运行 ...
- C++ MFC棋牌类小游戏day5
先整理一下之前的内容: 1.画了棋盘,把棋盘的每个点的状态都保存起来. 2.画棋子,分别用tiger类和people类画了棋子,并且保存了棋子的初始状态. 下面开始设计棋子的移动: 1.单机棋子,选中 ...
- Azkaban使用安装文档
Azkaban使用安装文档 Azkaban简介 Azkaban的是什么 Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程.Az ...
- Hibernate配置文件的书写
Hibernate主要配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibern ...
- Django同步数据库(/manage.py makemigrations) 报错
新起了环境,创建models.py 内容,想要同步到数据库,执行以下操作时 报错: ./manage.py makemigrations ./manage.py migrate *(第一个步骤为在该项 ...
- 设计一个BCD码计数器。
BCD码计数器的定义: 对于机器语言,机器与人不同,为了让人更好的了解机器语言的数据输出,选用4位二进制数据表示十进制里的每位数据,这便是BCD码. 以下便是BCD码与十进制对应的码表 0------ ...
- (转)web前端知识精简
Web前端技术由 html.css 和 javascript 三大部分构成,是一个庞大而复杂的技术体系,其复杂程度不低于任何一门后端语言.而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学 ...
- 另一个画风的GSS1 - Can you answer these queries I(猫树)
前言 其实我觉得你看猫锟的解释也看不懂(主要是还有一些不良心的讲解者不讲清楚,当然这里不是针对了qwq) 猫锟链接 Solution 考虑我们的线段树是个啥玩意? 每一层都是一堆区间叠在一起. 我们在 ...
- Behavior Tree 用 Lua 实现一个最简行为树
local function Traverse(node, ...) local t = node.type if t == SELECTOR then , #node do if Traverse( ...