NDKを使用して、最も基本的なx509公開鍵証明書ファイルをAndroidのC言語で作成しようとしています。 https://github.com/guardianproject/openssl-androidのものを使ってlibcryptoとlibsslをビルドしました(私は現在libcryptoのものしか使っていませんが)。Openssl X509_set_pubkey()Android NDKでクラッシュする
私はこの問題を解決するためにいくつかの問題を抱えていたので、私はより快適なデバッグ設定を持つlinuxで動作するようになりました。次のように私のLinuxボックスに取り組んでいる私が持っているコードは次のとおりです。
void x509(RSA *rsa_keys) {
EVP_PKEY *evp = EVP_PKEY_new();
X509 *x509 = X509_new();
EVP_PKEY_assign_RSA(evp, rsa_keys);
X509_gmtime_adj(X509_get_notBefore(x509),0);
X509_gmtime_adj(X509_get_notAfter(x509), (long) 60*60*24*365);
X509_set_pubkey(x509, evp);
unsigned char *out = NULL;
int length = i2d_X509(x509, &out);
FILE *x509_file = fopen("cert.cer", "w");
fwrite(out, 1, length, x509_file);
}
このコードは正常に動作し、私は同じことを実行すると
openssl x509 -inform DER -text -in cert.cer
でのopensslで細かい解析されたファイルを書き出しますAndroid上のNDKのコードERR_get_error()によって報告されたopensslエラーを発生させずにX509_set_pubkey(x509、evp)呼び出しを行い、シグナル11(SIGSEGV)、コード1(SEGV_MAPPER)大きなスタックトレース
非常に役に立つと思われる唯一のものスタックトレースは、クラッシュが、私は考えることができる唯一のことは、そこに私が構築されたOpenSSLの問題ですが、それは、どんな考えをややそう思われることであるlibcrypto.so
08-17 01:40:41.261: INFO/DEBUG(10354): #00 pc 00041d1a /system/lib/libcrypto.so
08-17 01:40:41.261: INFO/DEBUG(10354): #01 pc 000357c6 /system/lib/libcrypto.so
08-17 01:40:41.261: INFO/DEBUG(10354): #02 pc 000337ba /system/lib/libcrypto.so
08-17 01:40:41.261: INFO/DEBUG(10354): #03 pc 000338c8 /system/lib/libcrypto.so
08-17 01:40:41.268: INFO/DEBUG(10354): #04 pc 000339e6 /system/lib/libcrypto.so
08-17 01:40:41.268: INFO/DEBUG(10354): #05 pc 00033f00 /system/lib/libcrypto.so
08-17 01:40:41.268: INFO/DEBUG(10354): #06 pc 00033b20 /system/lib/libcrypto.so
08-17 01:40:41.268: INFO/DEBUG(10354): #07 pc 00033f44 /system/lib/libcrypto.so
08-17 01:40:41.268: INFO/DEBUG(10354): #08 pc 00033f9c /system/lib/libcrypto.so
08-17 01:40:41.268: INFO/DEBUG(10354): #09 pc 000770e6 /system/lib/libcrypto.so
08-17 01:40:41.268: INFO/DEBUG(10354): #10 pc 00076fec /system/lib/libcrypto.so
08-17 01:40:41.268: INFO/DEBUG(10354): #11 pc 00036b68 /system/lib/libcrypto.so
08-17 01:40:41.268: INFO/DEBUG(10354): #12 pc 0007ed1a /system/lib/libcrypto.so
に深い起こったということでしょうか?
おかげ