Botan在windows和linux平台下的编译
由于项目中的需要,需要引用Botan的库,找了一个别人编译好的发现,debug下运行缺少MSVCP90.dll, release下运行正常。
于是自己编译Botan库。
上网down最近的稳定版本的源码,
安装python
将安装位置加入到系统环境变量中(path)
打开vs2008命令行编译工具
开始-vs2008-vs2008tools-命令行提示符
python configure.py --help
从帮助文档上面可以看出需要指定cc,
另外之前debug不能运行是由于需要指定enable-debug选项
于是
python configure.py --cc=msvc --enable-debug
nmake
nmake check
nmake install
装好之后在c:\botan
over!
顺便记录一下在fedora12下交叉编译的命令
目标平台是arm,编译器是arm-none-linux-gnueabi-g++
python configure.py --cpu=arm --cc=arm-none-linux-gnueabi-g++ --prefix=../armbuild
make
make install
over!
使用的是AES加密功能,做了两个函数来调用。
Pipe * g_pipe = NULL ;
int InitializeAESEncyption ( char * password , int opt )
{
std :: string key_str ( password );
HashFunction * hash = get_hash ( "MD5" );
SymmetricKey key = hash -> process ( key_str );
SecureVector < byte > raw_iv = hash -> process ( '0' + key_str );
InitializationVector iv ( raw_iv , 16);
if ( opt == AES_ENCYPTION )
{
g_pipe = new Pipe ( get_cipher ( "AES-128/CBC" , key , iv , ENCRYPTION ));
} else
{
g_pipe = new Pipe ( get_cipher ( "AES-128/CBC" , key , iv , DECRYPTION ));
}
if ( g_pipe == NULL )
{
return -1;
}
return 0;
}
void AESEncyption ( char * msgInput , char * output )
{
std :: string inputStr ( msgInput );
g_pipe -> process_msg ( inputStr );
std :: string outputStr = g_pipe -> read_all_as_string ();
strcpy ( output , outputStr . c_str ());
}