Ubuntu15.10下CPABE环境搭建

谨以此篇博文献给折腾了好几天的自己,尴尬
cpabe依赖pbc,pbc依赖gmp,gmp依赖M4、bison、flex,所以我们一步步开始,首先登陆root账户,否则权限不够。

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.1.tar.bz2版本
下载后解压到gmp-6.1.1.tar.bz2文件夹中,然后进入目录gmp-6.1.1,命令:

tar -xvf gmp-6.1.1.tar.bz2 
cd gmp-6.1.1

然后安装

./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版本,下载后在terminal里解压文件夹安装,命令:

tar -xvf pbc-0.5.14.tar.gz
cd pbc-0.5.14

然后安装

./configure
sudo make
sudo make install

到此PBC环境配置完成,然后进行测试
进入pbc-0.5.14 —example目录下,里面有一些案例,随便复制一个.c文件,自定义命名为foo.c,更改里面的内容成:

#include "pbc.h"
int main(void) 
{ 
printf("this is a test\n");
return 0; 
} 

(当然你也可以新建一个.c文件)
在terminal终端下键入如下代码

gcc -o foo foo.c

应该会有两个错误,错误原因请查看链接:http://crypto.stanford.edu/pbc/howto.html
我们可以通过如下的代码编译文件:

gcc -o foo foo.c -I /usr/local/include/pbc -L /usr/local/lib -Wl,-rpath /usr/local/lib -l pbc

注意:如果此处出错,试着把 -Wl,-rpath 改为 -Wl,-R
编译成功后,会发现在该目录下生成一个可执行文件foo,
然后在终端运行该文件:

./foo

运行成功会打印出:

this is a test 

这表明,PBC环境配置成功

4. 安装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,

vi 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 

注意:这里需要用到vi编辑的一些知识。在进入Makefile后,将光标移至-lcrypto -lcrypto后面,输入i进入编辑模式,输入”\”,然后enter,另起一行,然后直接按Tab,输入-lgmp (-lgmp前面必须是TAB键)。输入的时候小心,多任何一个空格都会出错!完成后按Ese退出编辑模式,然后输入冒号“:”进入命令模式,会发现光标定位到了最低端,此时输入wq即保存退出vi了,如果编辑错了也不用担心,在“:”后输入 q! 即可不保存退出,然后重新进入修改。

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文件

vi 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)

说明环境搭建成功!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值