Linux环境下PBC库的安装
The PBC (Pairing-Based Cryptography) library is a free C library (released under the GNU Lesser General Public License) built on the GMP library that performs the mathematical operations underlying pairing-based cryptosystems.
简单记录Linux环境下PBC库的安装过程,已在ubuntu14.04、fedora30上验证。
依赖预安装
安装GMP、PBC过程中会提示有依赖未安装,在此直接预安装。不同系统下可能有其他依赖未安装的情况,按各自configure
脚本提示安装即可。
# 以fedora30的dnf包管理器为例,ubuntu14.04替换为apt-get等命令。
$ sudo dnf install m4
$ sudo dnf install g++
$ sudo dnf install flex
安装GMP
GMP官网下载包(如gmp-6.1.2.tar.lz
)并解压。
$ cd /dir/to/gmp
$ ./configure --enable-cxx
$ make
$ make check
$ sudo make install
Tip:
ubuntu系统下可能有configure
脚本无法执行的问题,使用chmod命令赋予权限:
$ sudo chmod +x ./configure
安装PBC
PBC官网下载包(如pbc-0.5.14.tar.gz
)并解压。
$ cd /dir/to/pbc
$ ./configure
$ make
$ make install
管理库路径
添加pbc库文件libpbc.so.1
路径。
$ cd /etc/ld.so.conf.d
$ sudo vi libpbc.conf
在/etc/ld.so.conf.d
路径下新建libpbc.conf
文件,内容为:
/usr/local/lib
更新cache:
$ sudo ldconfig
测试
新建一个c文件main.c
测试PBC库:
// main.c
#include <stdio.h>
#include "/usr/local/include/pbc/pbc.h"
int main(int argc, char const *argv[]) {
// 初始化pairing
pairing_t pairing;
// pairing_t定义: pairings where elements belong本例子用a.param去初始化pairing; a pairing is a map 例如:e:G1×G2->Gt
// a.param是pbc库中标准的参数集,其提供对称的pairing ,在所有的param中有最高的速度。
char param[1024];
size_t count = fread(param, 1, 1024, stdin); // 读大小为1的个数最大为1024到param,返回真实读入的个数
if (!count) pbc_die("input error");
pairing_init_set_buf(pairing, param, count);
// 生成x
element_t x;
element_init_Zr(x, pairing); //用pairing初始化x
element_random(x); //随机生成x
element_printf("%B\n", x); //打印x
return 0;
}
编译
$ gcc main.c -L. -lpbc -lgmp
运行
初始化pairing时需要传入参数,一组参数已提供于PBC库中/param/a.param
,可将其拷贝到方便的位置使用。
# 此处已将a.param拷贝到工程目录下
$ ./a.out < ./a.param
参考
-
https://blog.csdn.net/just_h/article/details/82667787
-
https://blog.csdn.net/cnzb01/article/details/81320001
-
https://blog.csdn.net/z695516174/article/details/87606726
-
https://blog.csdn.net/u013983667/article/details/60151921