2016-07-26 6 views
0

私はAOSPを構築していますので、Androidのすべてのモジュールのルートを持っています。もちろん、他のモジュールでビルドして再利用するOpenSSLライブラリがあります。AndroidのOpenSSLの既存のライブラリ

また、ネイティブコードと通信する基本アプリケーション(システム、外部、その他)があります。 私の質問は次のとおりです。ローカルのプロジェクト、既存のAndroid OpenSSLライブラリをどのように使って作業するのですか?

別の言い方をすれば、OpenSSL/BoringSSLのアクティブインスタンスをネイティブコードで取得する方法があります。 また、Android Keystore engineのインスタンスを取得してそれを使用するにはどうすればよいですか?

ありがとうございました! release notes of Android 6.0から

答えて

1

:アプリでのAndroid NDKを使用している場合

は、libcrypto.soとしてNDK APIの一部ではありません暗号化ライブラリ、にリンクしていないとlibssl.so。これらのライブラリはパブリックAPIではなく、リリースやデバイス間で予告なく変更または破損する可能性があります。さらに、セキュリティの脆弱性にさらされる可能性があります。代わりに、ネイティブコードを変更してJNI経由でJava暗号化APIを呼び出したり、選択した暗号化ライブラリと静的にリンクしたりしてください。

ネイティブコードでは、C /ネイティブAPIに加えて、Java APIにもアクセスできます。したがって、AndroidKeyStoreにアクセスするための通常のJava APIを呼び出すCコードを記述することができます。 JavaコードをCコードに変換するだけです。この方法でJava APIにアクセスするのは少し複雑ですが、最も安全な方法です(互換性に関して)。

はちょっと

+0

も参照してください!答えをありがとう、それは私の最初の質問に答えた。また、あなたはAndroid Keystoreエンジン(上記のリンク)について知っているかもしれません。そのネイティブクラスを使用してもいいですか? – GensaGames

+0

私はAndroidKeystoreのPrivateKeyを使用したいと思っています。私はPassを使わずに読み込み、Javaでの暗号化、復号化に使用できます。しかし!私はネイティブコードでそのPrivateKeyを使用したいが、ネイティブコードでキー(キーには指数がない)を転送することはできないが、これは問題である! – GensaGames

+0

私はAndroidKeystoreにアクセスしてネイティブコードに変換するためのJavaコードを使用しています。結果のコードは少し複雑になりますが、Googleが推奨する方法です。 – Robert

関連する問題