2011-08-17 3 views
2

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 

に深い起こったということでしょうか?

おかげ

答えて

0

それはあなたがRSA機能を使用する前にOpenSSL_add_all_algorithms()を呼び出す必要がある可能性があります。