【发布时间】:2021-05-07 08:33:33
【问题描述】:
我知道,对于 Windows,X509Certificate2 使用 Crypt32,X509Certificate2.Handle 指向 CERT_CONTEXT 结构。
另一方面,Linux X509Certificate2 在后台使用 Open SSL。那么,在这种情况下,X509Certificate2.Handle 指向的结构是什么?
是同一个CERT_CONTEXT还是别的什么?
【问题讨论】:
-
见这里,这是 x509 的 Unix PAL 句柄调用创建(以及它上面的 cmets)source.dot.net/#System.Security.Cryptography.X509Certificates/…
-
我知道这不会给你直接的答案,但你可以使用评论中的信息和 extern 方法引用的入口点来回答你的问题。它与windows版本明显不同,但这是我能说的最多
-
另一方面,
CERT_CONTEXT是 Windows 源代码的一部分(但是没有直接引用它)......它是Interop.WinCrypt的一部分,所以我认为它可能没有在 Linux 中使用(但不能绝对肯定)source.dot.net/#Microsoft.DotNet.SignCheckLibrary/Interop/… -
这里是我在第一条评论中如何找到它的链接。对
CertificatePal.FromHandle的调用传递了由第一个链接中的调用创建的句柄:source.dot.net/#System.Security.Cryptography.X509Certificates/… 这是Unix PAL 本身source.dot.net/#System.Security.Cryptography.X509Certificates/… - - 由source.dot.net/#System.Security.Cryptography.X509Certificates/… 调用 -
最后,您可以通过查看导航中的扩展文件夹 (Internal/Cryptogtaphy/PAL.Unix) 从最后三个链接中的任何一个链接中看到整个 Unix PAL 层,您几乎可以在其中找到证书的整个 Linux 实现。它可能会提供更多信息,引导您找到您想要的。
标签: c# .net-core x509certificate .net-5