我正在构建一个Xamarin应用,该应用应从Android钥匙串中加载X.509证书和RSA公钥。我想将它们转换为X509Certificate2(System.Security.Cryptography.X509Certificates.X509Certificate2)的实例,但是我真的不知道该怎么做。
我能够访问证书链(java.security.cert.X509Certificate [])和私钥(java.security.IPrivateKey),但无法将它们组合为< [X509Certificate2。我发现this个旧线程,作者遇到了类似的问题,但实际上并没有解决他的问题的方法。
这是他使用的代码(自Android 4.1起不再起作用。此外,我不知道他使用了哪个PKCS8类,因为Mono.Security.Cryptography.PKCS8
不公开):] >X509Certificate[] certChain = KeyChain.GetCertificateChain(ctx, Alias);
IPrivateKey privKey = KeyChain.GetPrivateKey(ctx, Alias);
KeyStore pkcs12KeyStore = KeyStore.GetInstance("PKCS12");
pkcs12KeyStore.Load(null, null);
pkcs12KeyStore.SetKeyEntry(Alias, privKey, null, certChain);
X509Certificate javaCertificate = (X509Certificate) pkcs12KeyStore.GetCertificate(Alias);
PKCS8.PrivateKeyInfo privateKeyInfo = new PKCS8.PrivateKeyInfo(privKey.GetEncoded());
RSA privatekeyRsa = PKCS8.PrivateKeyInfo.DecodeRSA(privateKeyInfo.PrivateKey);
X509Certificate2 certificate = new X509Certificate2(javaCertificate.GetEncoded());
certificate.PrivateKey = privatekeyRsa;
从Android 4.1开始,返回null,所以我不能使用这种方式,因此不知道如何将私钥放入certificate。 所以,问题是:如何使用KeyChain API创建X509Certificate2?privKey.GetEncoded()
提前感谢。
我正在构建一个Xamarin应用,该应用应从Android钥匙串中加载X.509证书和RSA公钥。我想将它们转换为X509Certificate2的实例(System.Security.Cryptography ....