2009-02-17 62 views
4

我正在寻找解码.NET中的PKCS#12文件的方法,我需要提取私钥和任何证书,以便我可以通过编程方式访问以下内容。解码PKCS#12文件

  • 模数
  • publicExponent
  • privateExponent
  • prime1
  • prime2
  • exponent1
  • exponent2
  • 系数

我需要此信息,以便我可以成功使用PKCS#11创建私钥并在USB令牌上生效。

我发现了一个网站,使用OpenSSL来输出这些数据。当我发现OpenSSL.NET时,我非常兴奋,但是拆分PKCS#12文件的功能尚未实现。我想知道是否有人知道任何候选人。

感谢

罗汉

回答

2

我最近在其Java端口上使用了bouncy castle API,它可以完美地实现奇迹。

我敢打赌,他们的C#并没有太大的不同,它在目标上做了非常好的工作。

http://www.bouncycastle.org/

0

你应该能够直接通过的PInvoke使用OpenSSL的。也许你可以在开始工作时回馈给OpenSSL.NET项目。

win32加密提供程序是一个很好的选择,但它可以在它可以解析和生成的格式方面有点不灵活。

3

干杯曼努埃尔,

我下载了充气城堡API,它没多久找到我需要的东西。源代码包含大量的单元测试。

static void Main(string[] args) 
{ 
    char[] password = new char[] {'p','a','s','s','w','o','r','d'}; 

    using(StreamReader reader = new StreamReader(@"Test.pfx")) 
    { 
     Pkcs12Store store = new Pkcs12Store(reader.BaseStream,password); 
     foreach (string n in store.Aliases) 
     { 
      if(store.IsKeyEntry(n)) 
      { 
       AsymmetricKeyEntry key = store.GetKey(n); 

       if(key.Key.IsPrivate) 
       { 
        RsaPrivateCrtKeyParameters parameters = key.Key as RsaPrivateCrtKeyParameters; 
        Console.WriteLine(parameters.PublicExponent); 
       }      
      } 
     } 
    } 
}