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。

utils:工具包,密钥编码转换等

factory:factory是bccsp的一个工厂,可以通过这个工厂返回一个具体的bccsp实例,比如上面说的sw或者pkcs11,如果添加了自己的bccsp实现,也要讲该bccsp添加到factory中。

哎,人是铁饭是钢一顿不吃饿的慌, 吃点东西去

——————————————TODO————————————————————

时间: 2024-08-25 10:04:47

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

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

fabric中通过工厂模式来生成bccsp实例,进而通过bccsp的接口来实现加密.解密.签名验证以及哈希等操作. fabric的factory工厂默认返回的bccsp实例是sw(也就是所有密码操作都是封装go底层算法来实现的),这里的工厂模式代码不多,大家可以自己去fabric/bccsp/factory目录下阅读源代码,以后有时间单独作为一章来介绍. sw在fabric项目发展中又一次较大的改动: 1.在fabric-1.0发布前,代码的结构是通过具体算法来组织的,比如ecdsa相关的生成密

HyperLedger Fabric关键技术(6.4)

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

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概述

综述 Hyperledger Fabric是一个模块化的分布式账本解决方案支撑平台,提供高度的保密性.弹性.灵活性与可扩展性.它的目的是支持不同组件的可插入实现,并适应经济系统中存在的复杂性.Hyperledger Fabric提出了一个独特的高弹性且可扩展的体系结构,此结构使Fabric区别于其他区块链解决方案.在Fabric对企业级区块链的未来规划中,它的架构允许被全面审查且开源. 我们建议新手用户首先阅读接下来的内容以熟悉区块链如何工作,并熟悉Hyperledger Fabric的组成与功

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 学习思路分享

HyperLedger Fabric 学习思路分享 HyperLedger Fabric最初是由Digital Asset和IBM公司贡献的.由Linux基金会主办的一个超级账本项目,它是一个目前非常流行并广为人知的区块链网络框架的实现方案.作为一种基于模块化架构开发应用程序或解决方案的基础,HyperLedger Fabric支持如共识和会员服务等即插即用的组件,它的设计初衷是支持不同组件的可插拔实现,并适应整个经济生态系统的复杂性和高精度性.HyperLedger Fabric利用容器技术运

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为启动这个网络的启动脚本,启动脚本中除建立一个包含

js 代码密码规范系列

在微博上看到一个段子 "老子哪天出任ceo迎娶白富美走上人生巅峰之后,一定要雇两个长腿大熊的妹子.一个帮我想变量名字,一个帮我想git commit的message!" 可以看出 命名方方面面的问题困扰着我这样的人.哈哈哈 函数命名.变量命名等 是频繁困扰我的问题. 函数命名:统一使用动词或者动词+名词形式 ---- fnInit() 如果有内部函数则"_"开头   _fnInit(). 对象方法命名使用fn+对象类名+动词+名词形式   fnAnimateDoRu

在HyperLedger Fabric中启用CouchDB作为State Database

回顾一下我之前的一篇博客,在Fabric 1.0中,我们存在3种类型的数据存储,一种是基于文件系统的区块链数据,这个跟比特币很像,比特币也是文件形式存储的.Fabric1.0中的区块链存储了Transaction订单读写集.而读写集到底是读什么?写什么?其实就是我们的State Database,也叫做World State,里面以键值对的方式存储了我们在ChainCode中操作的业务数据.另外还有就是对历史数据和区块链索引的数据库. 区块链是文件系统,这个目前不支持更改,历史数据和区块链的索引