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.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM