Ubuntu16 CPABE 环境搭建
cpabe依赖pbc,pbc依赖gmp,gmp依赖M4、bison、flex
- 安装M4、bison、flex
M4、bison、flex 均可以在terminal中通过sudo apt-get install方式直接安装
sudo apt-get install M4 sudo apt-get install flex sudo apt-get install bison
2.安装GMP
GMP下载地址:https://gmplib.org/
下载后解压到gmp-6.1.2.tar.bz2文件夹中,然后进入目录gmp-6.1.1,命令:
tar -xvf gmp-6.1.2.tar.bz2 cd gmp-6.1.2
安装
./configure sudo make check sudo make sudo make install
3.安装PBC
PBC下载地址:http://crypto.stanford.edu/pbc/download.html,下载pbc-0.5.14.tar.gz版本,解压文件夹安装,命令:
tar -xvf pbc-0.5.14.tar.gz cd pbc-0.5.14
安装
./configure sudo make sudo make install
到此PBC环境配置完成
测试 pbc
进入pbc-0.5.14 —example目录下,里面有一些案例,随便复制一个.c文件,自定义命名为foo.c,更改里面的内容成:
//#include "pbc.h" /*PBC按照默认配置安装后,so和a文件存放于/usr/local/lib/文件夹中,一般的软件也都是这样。但是头文件放置在/usr/local/include/pbc/文件夹中,也就是说PBC库在/usr/local/include中建了一个文件夹,然后把头文件放在了里面*/ #include int main(void) { printf("hello world\n"); return 0; }
编译成功后,会发现在该目录下生成一个可执行文件foo,
然后在终端运行该文件:
./foo
运行成功会打印出:
hello world
这表明,PBC环境配置成功
- 安装CPABE
安装CPABE前,先安装openssl 和glib ,直接在线安装就可以:
sudo apt-get install libssl-dev sudo apt-get install libglib2.0-dev
在http://acsc.cs.utexas.edu/cpabe/下载libbswabe-0.9.tar.gz 和cpabe-0.11.tar.gz,必须先安装libbswabe
tar -xvf libbswabe-0.9.tar.gz cd libbswabe-0.9 ./configure sudo make sudo make install
安装cpabe
tar -xvf cpabe-0.11.tar.gz cd cpabe-0.11 ./configure sudo make
这一步后会出现错误
/usr/bin/ld: /usr/local/lib/libpbc.so: undefined reference to symbol '__gmpz_init' /usr/local/lib/libgmp.so: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status Makefile:34: recipe for target 'cpabe-setup' failed make: *** [cpabe-setup] Error 1
解决方法:修改Makefile
vim Makefile
进入Makefile,M是大写,进入后找到找到以LDFLAGS开头的以下部分:
LDFLAGS = -O3 -Wall \ -lglib-2.0 \ -Wl,-rpath /usr/local/lib -lgmp \ -Wl,-rpath /usr/local/lib -lpbc \ -lbswabe \ -lcrypto -lcrypto \
在最后加入-lgmp,加入后变成:
LDFLAGS = -O3 -Wall \ -lglib-2.0 \ -Wl,-rpath /usr/local/lib -lgmp \ -Wl,-rpath /usr/local/lib -lpbc \ -lbswabe \ -lcrypto -lcrypto \ -lgmp
注意:在-lcrypto -lcrypto后输入” \”,然后enter,另起一行,输入-lgmp,不要按空格去输入-lgmp,否则报错
Makefile 修改完成后,
sudo make
可能还会出现问题
policy_lang.y: In function ‘yyparse’: policy_lang.y:67:38: error: expected ‘;’ before ‘}’ token Makefile:50: recipe for target 'policy_lang.o' failed make: *** [policy_lang.o] Error 1
修改policy_lang.y文件
vim policy_lang.y
进入policy_lang.y后,在67行的 } 前加入;即可
完成后:
sudo make sudo make install
就不会有问题了
编译成功后进行测试
cpabe-setup -h
这时显示
Usage: cpabe-setup [OPTION ...] Generate system parameters, a public key, and a master secret key for use with cpabe-keygen, cpabe-enc, and cpabe-dec. Output will be written to the files "pub_key" and "master_key" unless the --output-public-key or --output-master-key options are used. Mandatory arguments to long options are mandatory for short options too. -h, --help print this message -v, --version print version information -p, --output-public-key FILE write public key to FILE -m, --output-master-key FILE write master secret key to FILE -d, --deterministic use deterministic "random" numbers (only for debugging)
说明环境搭建成功