想研究下NDK上使用RSA加密,最方便的应该是openssl了吧.
在github上下了一个openssl 1.0.1c
的版本,编译通过.但个人比较追求最新,而且1.0
到1.0f
都有Heartbleed
漏洞.虽然我只是使用其中的加密算法,这个并不受影响,强迫症,没办法,哈哈.
开始下的1.0.1g
,编译完完来才发现不算最新的,于是又编译来最新的1.0.1i
(强迫症)
不过简单的对比了1.0.1i
和1.0.1g
,还是做来很多容错处理的.下面记录两个注意的地方.
编译ARM还需要生成汇编文件
1
2
3
4
5
perl crypto/aes/asm/aes-armv4.pl > crypto/aes/asm/aes-armv4.S
perl crypto/bn/asm/armv4-mont.pl > crypto/bn/asm/armv4-mont.S
perl crypto/sha/asm/sha1-armv4-large.pl > crypto/sha/asm/sha1-armv4-large.S
perl crypto/sha/asm/sha256-armv4.pl > crypto/sha/asm/sha256-armv4.S
perl crypto/sha/asm/sha512-armv4.pl > crypto/sha/asm/sha512-armv4.S
其中一个错误是:
1
2
3
functions:openssl.c( .data.rel+0x200) : error: undefined reference to 'ts_main'
collect2: ld returned 1 exit status
make: *** [ obj/local/armeabi/openssl] Error 1
需要修改apps/progs.h
1
2
3
#if 0 /* ANDROID */
{ FUNC_TYPE_GENERAL,"ts" ,ts_main} ,
#endif
实际就算删除这行
代码均下自openssl
官方站:
1
http://www.openssl.org/source/openssl-1.0.1i.tar.gz
可以正常编译的代码已经同步到GitHub
上了
openssl 1.0.1g
: https://github.com/rover12421/openssl-1.0.1g4android
openssl 1.0.1i
: https://github.com/rover12421/openssl-1.0.1i4android