我正在寻找在.NET中解码PKCS#12文件的方法,我需要提取私钥和任何证书,以便我可以以编程方式访问以下内容。
我需要这些信息,以便我可以成功使用PKCS#11创建私钥并在USB令牌上进行验证。
我找到了一个使用OpenSSL输出此数据的网站。当我发现OpenSSL.NET时,我非常兴奋,但是尚未实现拆分PKCS#12文件的功能。我想知道是否有人知道任何替代品。
由于
罗汉
答案 0 :(得分:4)
干杯曼努埃尔,
我下载了Bouncy Castle 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);
}
}
}
}
}
答案 1 :(得分:2)
我在最近的项目中,在其Java端口上可扩展地使用了bouncy castle API,它可以完美地运行奇迹。
我敢打赌他们的C#并没有太大的不同,而且它在目标方面做得非常好。
答案 2 :(得分:0)
AFAIK你必须向win32加密库发送信息,请参阅此MSDN文章:http://msdn.microsoft.com/en-us/library/ms867088.aspx
答案 3 :(得分:0)
您应该可以通过pInvoke直接使用OpenSSL。也许你可以在开始工作时回馈OpenSSL.NET项目。
win32加密提供程序是一个不错的选择,但就它可以解析和生成的格式而言,它可能有点不灵活。