gpt4 book ai didi

java - 从 KeyStore 传输私钥,在带有 JNI 的 OpenSSL 中使用

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:22 25 4
gpt4 key购买 nike

我有一个使用 WebRTC 的 Android 应用程序。一切都很完美。但现在,主要问题是加密。

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

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

bool OpenSSLIdentity::ConfigureIdentity
{
...
}

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


安卓 keystore

在 Java 中,我可以打开 KeyStore (AndroidKeyStore) 并获取公钥 - 准备传输(具有 key 字节和方法 - getEncoded())。我也可以获得加密数据的私钥,但我不能以字节为单位发送这个 key ,因为 getEncoded() 返回 null。在这种情况下,我想,我可以获得 PublicKeyPrivateKey 并将它们保存在字节数组中。然后,在 native 代码中调用准备好的方法。


更新:google.source.chromium 中有类似的内容。他们从 Android KeyStore 获取 key 并在 native 代码中创建 OpenSSL 上下文的位置。为 TLS 获取和使用 AndroidKeyStore 的 native 类 - Link 1Link 2 .

最佳答案

根据设计,Android Keystore 不会公开私钥或 secret key 的 key Material (参见 https://developer.android.com/training/articles/keystore.html )。您的选择是:

  • 将 Android keystore 私钥 + 签名或密码作为 OpenSSL EVP_PKEY。

  • 不要使用 Android Keystore。与在您的进程中存储私钥相比,您可能不需要它提供的额外保护?

关于java - 从 KeyStore 传输私钥,在带有 JNI 的 OpenSSL 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37521225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com