天天看點

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下的檔案清單圖:

Hyperledger Fabric密碼子產品系列之BCCSP(三)

好了,這就是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.

作者:warm3snow

出處:http://www.cnblogs.com/informatics/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須在文章頁面給出原文連接配接,否則保留追究法律責任的權利。