Rover12421's Blog

The End.

openssl-1.0.1i for Android

想研究下NDK上使用RSA加密,最方便的应该是openssl了吧.

在github上下了一个openssl 1.0.1c的版本,编译通过.但个人比较追求最新,而且1.01.0f都有Heartbleed漏洞.虽然我只是使用其中的加密算法,这个并不受影响,强迫症,没办法,哈哈. 开始下的1.0.1g,编译完完来才发现不算最新的,于是又编译来最新的1.0.1i(强迫症)

不过简单的对比了1.0.1i1.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

Comments