2013-05-28 60 views
0

我使用下面的代碼獲得私有密鑰來獲得使用「Org.BouncyCastle.Crypto」私鑰淨錯誤而從.p12文件使用Org.BouncyCastle.Crypto

 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」爲空

我累了手動方法Getting private key using OpenSSl,我可以得到私鑰,這意味着.p12文件是適當的。

誰能幫我解決正是我從.p12文件獲取專用密鑰

回答

0

後過多使用Google的腳麻,我發現下面的代碼,可以幫助我從拿到名爲.p12私有密鑰文件中使用Org.BouncyCastle.Crypto

//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));