使用Org.BouncyCastle.Crypto从.p12文件获取私钥时出错



我使用以下代码获得私钥使用"Org.BouncyCastle。.Net

        FileStream keyFileStream = File.OpenRead(FileName);
        char[] pwd = Password.ToCharArray();
        Org.BouncyCastle.Pkcs.Pkcs12Store store = new Org.BouncyCastle.Pkcs.Pkcs12Store(keyFileStream, pwd);
        System.Collections.IEnumerator h = store.Aliases.GetEnumerator();
        h.MoveNext();
        object o = h.Current;
        string alias = o.ToString();
        Org.BouncyCastle.Pkcs.AsymmetricKeyEntry privAsymKey = store.GetKey(alias);// as RsaKeyParameters;
        RsaKeyParameters privRSAKey = (RsaKeyParameters)privAsymKey.Key;

但是我得到"privAsymKey"为null

我尝试了使用OpenSSl手动获取私钥的方法,我可以获得私钥,这意味着。p12文件是正确的。

谁能帮我解决我到底在哪里出错从。p12文件获得私钥

经过太多的谷歌搜索,我发现以下代码可以帮助我使用Org.BouncyCastle.Crypto从。p12文件中获得私钥

//This is the function call
 AsymmetricKeyParameter privateKey = TransformRSAPrivateKey(Certi.PrivateKey);

//这是返回私钥的函数定义

 RSACryptoServiceProvider prov = privateKey as RSACryptoServiceProvider;
        RSAParameters parameters = prov.ExportParameters(true);
        return new RsaPrivateCrtKeyParameters(
            new BigInteger(1, parameters.Modulus),
            new BigInteger(1, parameters.Exponent),
            new BigInteger(1, parameters.D),
            new BigInteger(1, parameters.P),
            new BigInteger(1, parameters.Q),
            new BigInteger(1, parameters.DP),
            new BigInteger(1, parameters.DQ),
            new BigInteger(1, parameters.InverseQ));

最新更新