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.