Xamarin.Android CertificateFactory.GetInstance("X.509").GenerateCertificate with MemoryStream 结果为“inStream is empty”

问题描述

有我的上下文:我们有 Xamarin.Forms 应用程序,它从带有 \n\r 的 Base64 字符串中的服务器接收证书。我想将此证书放在 KeyStore 中,所以我正在执行此代码

        var ks = KeyStore.GetInstance("AndroidKeyStore");
        ks.Load(null);

        if (ks.ContainsAlias(RSAStrings.ServerCertificateName))
        {
            ks.DeleteEntry(RSAStrings.ServerCertificateName);
        }

        var cerBase64 = "-----BEGIN CERTIFICATE-----" + Environment.NewLine + cer + "-----END CERTIFICATE-----" + Environment.NewLine;
        var cerBytes = System.Text.UTF8Encoding.UTF8.GetBytes(cerBase64);
        var memStream = new MemoryStream(cerBytes);
        this.serverCertificate = CertificateFactory.GetInstance("X.509").GenerateCertificate(memStream);
        ks.SetCertificateEntry(RSAStrings.ServerCertificateName,this.serverCertificate);

当 GenerateCertificate 时,我收到错误“inStream is empty”,但我的 MemoryStream 包含所有字节,我可以看到它。

任何帮助将不胜感激。

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)