当前位置: 首页 > 知识库问答 >
问题:

使用Bouncy Castle后Android上没有系统TLS

谢翰学
2023-03-14

我正在使用Bouncy Castle安全提供程序进行加密/解密。我还确保在每次Bouncy castle调用后删除BC提供程序。这是BC代码:

public static boolean pubVerifySign(
        String pKey, String sSignature, String sChallenge) throws UnsupportedEncodingException{
    BouncyCastleProvider bcp = initSecuritySubsystem();
    
    boolean bOutput = false;
    try{
        ECPublicKey ecPublicKey = 
                getPublicKeyForBytes(Hex.decode(pKey));
    
        bOutput =
                pubVerifySign(ecPublicKey, 
                        sSignature, sChallenge);
    }finally{
        Security.removeProvider(BouncyCastleProvider.PROVIDER_NAME);
    }
    return bOutput;
}
cz.msebera.android.httpclient.ssl.SSLInitializationException: java.security.KeyStoreException: java.security.NoSuchAlgorithmException: KeyStore BKS implementation not found
at cz.msebera.android.httpclient.ssl.SSLContexts.createDefault(SSLContexts.java:57)
at cz.msebera.android.httpclient.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:978)
at cz.msebera.android.httpclient.impl.client.HttpClients.createDefault(HttpClients.java:56)
at org.nebucoin.user.utils.URLUtils.getHttp(URLUtils.java:63)Caused by: java.security.KeyManagementException: java.security.KeyStoreException:       java.security.NoSuchAlgorithmException: KeyStore BKS implementation not found
at org.conscrypt.SSLParametersImpl.createDefaultX509KeyManager(SSLParametersImpl.java:534)
at org.conscrypt.SSLParametersImpl.getDefaultX509KeyManager(SSLParametersImpl.java:515)
at org.conscrypt.SSLParametersImpl.<init>(SSLParametersImpl.java:126)
at org.conscrypt.OpenSSLContextImpl.engineInit(OpenSSLContextImpl.java:104)
at javax.net.ssl.SSLContext.init(SSLContext.java:349)
at cz.msebera.android.httpclient.ssl.SSLContexts.createDefault(SSLContexts.java:52)
Security.insertProviderAt(Conscrypt.newProvider(), 1);

任何想法都欢迎!

注意:当我在使用URL.OpenConnection之前使用基于BC/的pubVerifySign,一切都很好!

共有1个答案

祝叶五
2023-03-14

BouncyCastle有两个提供程序,您可能需要删除这两个提供程序。

    Security.insertProviderAt(BouncyCastleProvider(), 1)
    Security.insertProviderAt(BouncyCastleJsseProvider(), 2)

如果JSSE提供程序仍然存在,那么当它没有找到所需的密钥存储库时,它将失败。

 类似资料:
  • 我刚开始使用Docker Desktop for Windows。当我尝试hello world示例时,我遇到了一个错误,如下所示。更新 下面是我遵循的步骤: 1已安装Docker for Windows,稳定版本 2 Hyper-V和虚拟化都已在我的Windows 10上启用 但是,切换到Linux容器时会出现以下错误: 发生错误。必须在BIOS中启用硬件辅助虚拟化和数据执行保护。请参阅http

  • 我使用javamail api发送邮件。首先,我尝试了gmail smtp服务器,一切正常。但现在我想使用自己的邮件服务器(通过cPanel)。但我的财产有问题。有人能帮我吗? 这是我的属性代码: 以下是cPanel的服务器信息: 用户名:blabllabla@blabla.com 密码:blablabla。 输出服务器:cpanel4.onofis.com SMTP:端口465 IMAP、POP

  • 我正在使用Actionbar和它的“up”按钮从一个细节活动返回到主活动,这很好。类似地,用户可以按系统“后退”按钮返回到主活动。 在我的主要活动中,在中,从internet下载数据,以便在应用程序启动时显示。我注意到,当我使用Actionbar“up”按钮从细节转到主要活动时,运行,重新下载数据。但是当我使用系统“后退”按钮时,没有运行,因此立即显示主活动视图。 我在详细信息活动中用于实现“向上

  • 在Android系统上,开发者可以使用两种不同的语言来开发应用程序,一种是Java语言,开发者使用的是Android SDK来配置和编译这些代码,生成Java语言的class文件,也就是Java虚拟机运行的二进制代码。Android系统使用.dex文件将一系列的class文件压缩在一起。另外一种是C/C++语言,使用Android NDK来配置和编译这些代码。这些代码经过NDK编译后就是汇编码并合

  • 我目前正在开发一个Flink 1.4应用程序,它从Hadoop集群读取一个Avro文件。然而,在我的IDE上以本地模式运行它是非常好的。但当我将其提交给Jobmanager Flink时,它总是失败,并显示以下消息: 我使用官方的Flink Docker image运行集群,该集群应该已经包含Hadoop发行版。 我还试图将依赖项添加到我的应用程序jar中,但这也没有帮助。以下是我的sbt依赖项:

  • 本文向大家介绍Android系统中使用shareuserid获取系统权限的教程,包括了Android系统中使用shareuserid获取系统权限的教程的使用技巧和注意事项,需要的朋友参考一下 Android会为每个apk进程分配一个单独的空间(比如只能访问/data/data/自己包名下面的文件),一般情况下apk之间是禁止相互访问数据的。通过Shared User id,拥有同一个User id