PBC庫
PBC(Pairing-Based Cryptography Library) 是實現雙線性對運算的函數庫 . 這個開源代碼 C 函數庫是由Stanford 大學開發 , 庫的地址爲 http://crypto.stanford.edu/pbc/
安裝過程在前面的文檔
ubuntu安裝過程:https://blog.csdn.net/TBBetter/article/details/103587977
手冊
PBC:https://crypto.stanford.edu/pbc/manual/
GMP:https://gmplib.org/manual/Concept-Index.html#Concept-Index
基礎
1. 使用PBC庫的程序應包含文件pbc.h:
#include <pbc.h>
2. 執行代碼要鏈接到PBC庫和GMP庫,例如:
$ gcc program.c -L. -lpbc -lgmp
3. pbc.h 已經包含 gmp.h
4. PBC在幾個方面遵循GMP:
4.1 輸出參數通常在輸入參數之前。
4.2 變量可以被一條命令的輸入、輸出同時使用
4.3 在使用變量之前,必須將其初始化一次。當不再需要時,必須清除它。爲了提高效率,應避免不必要的初始化和清除。
4.4 以_t結尾的PBC變量在函數調用中的行爲與GMP變量相同:有效地作爲調用引用。換句話說,就像在GMP中一樣,如果一個函數修改了輸入變量,則當控制返回返回給調用者時,該變量將保持修改狀態。
4.5 與GMP一樣,變量會在需要時自動分配內存。默認情況下,調用malloc()和friends,但是可以更改。
4.6 PBC功能大部分是可重入的。
5. 由於PBC庫基於GMP構建,因此可以使用GMP類型。PBC類型類似於GMP類型。以下示例摘自GMP手冊中的示例,並說明了如何聲明PBC數據類型element_t。
element_t sum;
struct foo { element_t x, y; };
element_t vec[20];
6. GMP具有用於整數的mpz_t類型,用於有理數的mpq_t等。
相反,PBC將element_t數據類型用於不同代數結構的元素,例如橢圓曲線組,多項式環和有限域。
函數假定其輸入來自適當的代數結構。
7. PBC數據類型和功能可以分類如下。(僅前兩個足以滿足一系列應用)
element_t :代數結構的元素。
pairing_t :配對(包含一系列元素);可以根據param子目錄中與PBC捆綁在一起的配對參數進行初始化。
pbc_param_t :用於生成配對參數。
pbc_cm_t :通過CM方法構造麴線的參數;有時是pbc_param_t需要的。
field_t :代數結構:羣,環和場;由pairing_t內部使用。
還有一些其他功能,例如控制如何生成隨機位的功能。在給定數據類型上運行的函數通常具有相同的前綴,例如那些涉及element_t對象的對象以element_開頭。