加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 从KeyStore传输PrivateKey,在OpenSSL中使用JNI

发布时间:2020-12-15 03:07:19 所属栏目:Java 来源:网络整理
导读:我有使用WebRTC的 Android应用程序.一切都很完美.但现在,主要问题是加密. 为了拨打电话和转接数据,WebRTC为每次通话创建并使用一个KeyPair.但我想使用AndroidKeyStore中的自定义KayPair.对于这个问题,我需要将自己的KeyPair发送到OpenSSL共享对象才能工作.
我有使用WebRTC的 Android应用程序.一切都很完美.但现在,主要问题是加密.

为了拨打电话和转接数据,WebRTC为每次通话创建并使用一个KeyPair.但我想使用AndroidKeyStore中的自定义KayPair.对于这个问题,我需要将自己的KeyPair发送到OpenSSL共享对象才能工作.

修复程序将在NATIVE OpenSSL代码中,其中WebRTC使用此函数获取加密数据的OpenSSL上下文(opensslidnetity.cc):

bool OpenSSLIdentity::ConfigureIdentity
{
    ...
}

如何将PK从AndroidKeyStore转移到WebRTC本机代码?另一种情况,如何为WebRTC加密设置自定义PK工作?

AndroidKeyStore

在Java中,我可以打开KeyStore(AndroidKeyStore)并获取准备传输的公钥(具有方法的密钥字节 – getEncoded()).此外,我可以获取加密数据的私钥,但我不能以字节为单位发送此密钥,因为getEncoded()返回null.在这种情况下,我想,我可以获得PublicKey abd PrivateKey并将它们保存在bytes数组中.然后,在本机代码中调用准备好的方法.

更新:google.source.chromium中有类似的内容.他们从Android KeyStore获取密钥并在本机代码中创建OpenSSL上下文.用于获取和使用AndroidKeyStore for TLS-Link 1和Link 2的本机类.

解决方法

Android Keystore不会按设计公开私钥或密钥的密钥材料(参见 https://developer.android.com/training/articles/keystore.html).您的选择是:

>将Android Key Key PrivateKey签名或密码显示为OpenSSL EVP_PKEY.>不要使用Android Keystore.与在存储过程中存储私钥相比,您可能不需要提供额外的保护吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读