2016-07-26 1 views
0

저는 AOSP를 구축 중이므로 안드로이드에있는 모든 모듈에 대해 루트가 있다고 가정 해 보겠습니다. 물론 다른 모듈에서 빌드하고 재사용하는 OpenSSL 라이브러리가 있습니다.안드로이드의 OpenSSL 기존 라이브러리

우리는 원시 코드와 통신하는 기본 응용 프로그램 (시스템, 외부, 기타)을 보유하고 있습니다. 그리고 내 질문은 : 어떻게 그것을 로컬 프로젝트, 기존 안드로이드 OpenSSL 라이브러리에 포함시키는 것인가?

다른 말로, 어떻게 OpenSSL/BoringSSL의 활성 인스턴스를 원시 코드로 가져올 수 있습니까? 또한 Android Keystore engine의 인스턴스를 얻고 작업하는 방법은 무엇입니까?

감사! release notes of Android 6.0에서

답변

1

:

앱의 안드로이드 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 키 스토어 엔진에 대해 알고있을 수도 있습니다 (위 링크). 그 네이티브 클래스를 사용할 수 있을까요? – GensaGames

+0

문제는 내가 패스없이로드 할 수있는 AndroidKeystore에서 PrivateKey를 사용하고 자바에서 암호화, 복호화에 사용할 문제입니다. 그러나! 그 PrivateKey를 네이티브 코드로 사용하고 싶지만 키를 전달할 수 없습니다 (키가 지수가 아닌) 네이티브 코드로 전송할 수 없습니다. – GensaGames

+0

AndroidKeystore에 액세스하고 원시 코드로 변환하기 위해 Java 코드를 사용하여 작성했습니다. 결과 코드는 다소 복잡하지만 Google에서 권장하는 방법입니다. – Robert

관련 문제