【问题标题】:How to display x509certifcate in android app如何在 Android 应用中显示 x509 证书
【发布时间】:2016-08-19 22:37:12
【问题描述】:

我使用海绵城堡。我从android应用程序中的webservice下载了字节数组证书(我认为是base64字节数组)并想在屏幕上显示它。我写了下面的代码,但它不起作用并且 c 变量为空。 另外我不知道如何在屏幕上显示。

  SoapObject result = (SoapObject)envelope.bodyIn;           

                   if(result != null)
                    {
                        Object cert= result.getProperty(0);   
                        InputStream is = new ByteArrayInputStream(cert.toString().getBytes());
                        CertificateFactory cf = CertificateFactory.getInstance("X.509","BC");
                        java.security.cert.Certificate c = cf.generateCertificate(is);
                        X509Certificate t = (X509Certificate) c;
                        System.out.println("ca=" + t.getSubjectDN());


                   }

【问题讨论】:

    标签: android web-services x509certificate2


    【解决方案1】:

    可能cert.toString().getBytes() 是问题所在。证书以二进制格式编码。要构建它,您需要一个字节数组,而不是转换为字节的字符串。

    确保您以哪种格式接收证书,以便将其转换为二进制文件。如果你认为证书是base64编码的,就这样解码

     byte[] data = Base64.decode(base64, Base64.DEFAULT);
    

    另请注意,SpongyCastle 的 Java 安全 API 提供程序名称是 SC 而不是 BC

    要显示文本,您需要例如在 Activity 或 Fragment 中设置 TextView 的内容。建议你先上教程

    【讨论】:

    • 非常感谢。我写了我的代码“InputStream is = new ByteArrayInputStream(Base64.decode(cert.toString(), Base64.DEFAULT));”没关系。但我对“SC”有错误,我使用了“BC”。我想在屏幕上显示 x509certificate 文件,Textview 用于显示文本。你能帮帮我吗?
    • 检查将此简单示例添加到您的应用程序mkyong.com/android/android-hello-world-example
    • 提前感谢 pedrofb 但我想在屏幕上加载 x509certificate 文件,用户可以查看 x509 证书文件中的常规选项卡、详细信息选项卡和证书路径选项卡,例如在 android 应用程序中打开谷歌证书。但我想在屏幕上打开我的证书而不是谷歌证书
    • 对不起,我误会了。使用X509Certificate,您可以提取大部分这些字段,但如果您不想处理 asn1 进行扩展,请使用 spongycastle API 来解析证书。我无法为您提供完整的示例。在 SO 中查找带有“bouncycastle”标签的特定示例。 api 基本相同,但使用 spongycastle,因为在新版本的 android 中删除了“bouncycastle”
    • 非常感谢 pedrofb
    猜你喜欢
    • 1970-01-01
    • 2012-10-06
    • 2022-01-03
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 2020-05-23
    • 2018-09-07
    相关资源
    最近更新 更多