Ubuntu16 CPABE 环境搭建

cpabe依赖pbc,pbc依赖gmp,gmp依赖M4、bison、flex

  1. 安装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环境配置成功

  1. 安装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)

说明环境搭建成功