CP-ABE ToolKit 安裝筆記

博主論文狗,很久沒有來貼博客,最近作實驗須要用到屬性加密,瞭解了下CP-ABE,前來記錄一下:php

網上相關的博文較多,博主看了大部分的,認爲下面這兩個看完了基本就能夠成功安裝。html

可參見博文:前端

http://blog.csdn.net/hlsdbd1990/article/details/48291359算法

http://blog.csdn.net/huifeideyema/article/details/51695231ubuntu

 (一)相關概念ide

cp-abe須要用到許多算法庫,像M四、bison、flex、gmp、pbc,且cpabe依賴pbc,pbc依賴gmp,gmp依賴M四、bison、flex函數

M4 :是一個宏處理器.將輸入拷貝到輸出,同時將宏展開. 宏能夠是內嵌的也能夠是用戶定義的. 除了能夠展開宏,m4還有一些內建的函數,用來引用文件,執行Unix命令,整數運算,文本操做,循環等. m4既能夠做爲編譯器的前端也能夠單獨做爲一個宏處理器.M4 依賴於: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed等;工具

bison: Bison其實是使用最普遍的Yacc-like分析器生成器,使用它能夠生成解釋器,編譯器,協議實現等多種程序. flex

flex:是一個產生掃描器的工具;能識別文本模式的詞句的程序.flex讀入給定的文件,或沒有文件名給定時的標準輸入,即要產生的掃描器的說明.說明按照正規表達式和C代碼的格式,叫作規則.flex產生定義了例程'yylex()'的'lex.yy.c'C源碼文件,該文件被編譯和用'-lfl'標誌連接庫以產生可執行文件,當可執行文件被運行後,它分析以正規表達式出現的輸入.不管什麼時候它找到匹配,都將執行相應的C代碼.(bison flex實際上就是用於實現屬性加密中訪問控制策略)ui

gmp:GMP是一個任意精度的開源算術庫,可用於符號整數,有理數,浮點數計算。

pbc:基於對數運算的算法庫

 

(二)安裝

一、安裝m4

sudo apt-get install m4

二、安裝gmp
http://gmplib.org/   下載gmplib

./configure
make
make check
sudo make install

三、安裝pbc
http://crypto.stanford.edu/pbc/download.html  下載pbc
解壓,安裝

./configure

出現

 flex not found

執行

sudo apt-get install flex

安裝成功後繼續執行

./configure

出現

bison not found

 

運行 

sudo apt-get install bison

成功後執行

./configure 
make
sudo make install

四、安裝cpabe toolkit

http://hms.isi.jhu.edu/acsc/cpabe/ 或者 http://acsc.cs.utexas.edu/cpabe/ 下載cpabe-0.11和libbswabe-0.9

安裝openSSL

sudo apt-get install libssl-dev

進入libbswabe-0.9解壓目錄

/configure 

報錯

checking for GLIB - version >= 2.0.0... no
*** Could not run GLIB test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means GLIB is incorrectly installed.

執行

sudo apt-get install libglib2.0-dev

安裝成功後,執行

./configure
make
sudo make install

進入cpabe-0.11解壓目錄

./configure 

出錯

/usr/bin/ld: note: '__gmpz_init' is defined in DSO /usr/local/lib/libgmp.so so try adding it to the linker command line
/usr/local/lib/libgmp.so: could not read symbols: 無效的操做

改成另外一種方式編譯:

sudo apt-get install checkinstall

修改Makefile,LDFLAGS後加入-lgmp

sudo checkinstall

編譯成功~

 

(三)報錯

除了上述報錯外,執行checkinstall之後也有可能出現這種錯誤

 gcc -o cpabe-setup setup.o common.o -O3 -Wall -lglib-2.0 -Wl,-rpath /usr/local/lib -lgmp -Wl,-rpath /usr/local/lib -lpbc -lbswabe -lcrypto -lcrypto  
 /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</pre></code

或者出現這種錯誤

    policy_lang.y: In function ‘yyparse’:
    policy_lang.y:67:38: error: expected ‘;’ before ‘}’ token
    result: policy { final_policy = $1 }


***解決方法***
https://ubuntuforums.org/showthread.php?t=2254939
或者http://stackoverflow.com/questions/17373306/error-in-linking-gmp-while-compiling-cpabe-package-from-its-source-code

 

 安裝成功之後出現以下界面

 

圖片摘自http://blog.csdn.net/guomutian911/article/details/42558155

相關文章
相關標籤/搜索