Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在没有使用.NET的外部库或工具的情况下,以编程方式将带有时间戳的Authenticode数字签名应用于.NET程序集?_C#_.net_Vb.net_Code Signing_Authenticode - Fatal编程技术网

C# 如何在没有使用.NET的外部库或工具的情况下,以编程方式将带有时间戳的Authenticode数字签名应用于.NET程序集?

C# 如何在没有使用.NET的外部库或工具的情况下,以编程方式将带有时间戳的Authenticode数字签名应用于.NET程序集?,c#,.net,vb.net,code-signing,authenticode,C#,.net,Vb.net,Code Signing,Authenticode,我必须编写一个.NET应用程序,该应用程序应可导出到.NET Framework 4.0.x、.NET Standard 2.0和.NET Core 2.2,该应用程序能够使用带有X509Certificate2对象的Authenticode“格式”对.NET程序集(EXE、DLL)进行签名 到目前为止,我已经找到了利用该应用程序的解决方案,或者。这两种方法都不符合项目要求。程序集可以导出到第一段中提到的目标,但不能使用与Windows XP及以上版本不同的操作系统,也不能使用Windows X

我必须编写一个.NET应用程序,该应用程序应可导出到.NET Framework 4.0.x、.NET Standard 2.0和.NET Core 2.2,该应用程序能够使用带有
X509Certificate2
对象的Authenticode“格式”对.NET程序集(EXE、DLL)进行签名

到目前为止,我已经找到了利用该应用程序的解决方案,或者。这两种方法都不符合项目要求。程序集可以导出到第一段中提到的目标,但不能使用与Windows XP及以上版本不同的操作系统,也不能使用Windows XP及以上版本的非桌面安装

我知道如何简单地使用.NET Framework/Standard/Core托管代码为blob创建签名,但简单地将签名附加到程序集将破坏整个程序集,因为没有Authenticode标记

是否有任何关于格式设计的Authenticode文档,以便我可以使用托管代码重新实现该格式?Authenticode标准中包含的时间戳如何

或者已经有了托管解决方案,而我只是还没有找到它


应用程序必须用VB.NET或C#编写。因此,欢迎对这两种语言进行提示。

什么部分不适用于SignTool解决方案?我不知道.NET标准/核心,但SignTool应该适用于大多数Windows系统上的本机应用程序和.NET Framework应用程序(我曾在我的一个应用程序中使用过它,它适用于Windows 7和10)。@VisualIncent:SignTool使用
SignerSignEx
API(相同的API
CryptoUIWizDigitalSign
使用)。从文档中可以看出,
SignerSignEx
仅适用于启用“桌面体验”功能的Microsoft Windows XP SP3及更高版本(非控制台安装)。我需要能够从(不适用于)MacOSX、Linux和Windows(仅控制台安装)签署.NET程序集。。。这就解释了为什么您希望自己实现它(尽管SignTool可以在任何Windows安装上运行,而不仅仅是XP)。我不知道有任何关于authenticode的文档,但很明显,它可以在Mac和Linux(可能还有Windows)上使用。