C# strong使用SHA256时,使用InternalsVisibleTo标记命名失败
使用时C# strong使用SHA256时,使用InternalsVisibleTo标记命名失败,c#,visual-studio-2012,strongname,C#,Visual Studio 2012,Strongname,使用时 C#strong DLL上的名称和 使用InternalsVisibleTo标记和 当公钥使用SHA256(或SHA512)时 我们注意到编译过程失败,就好像从未声明过InternalsVisibleTo标记一样。我们得到的错误是由于MyInternalClass的保护级别而无法访问 当公钥使用sha1(在上面的步骤#3中)时,编译过程可以完美地工作,没有任何问题,并且内部构件可以正确地暴露在测试项目中。我们创建strongname键的方式是 sn -k 4096 SignKey.snk
InternalsVisibleTo
标记一样。我们得到的错误是由于MyInternalClass的保护级别而无法访问
当公钥使用sha1(在上面的步骤#3中)时,编译过程可以完美地工作,没有任何问题,并且内部构件可以正确地暴露在测试项目中。我们创建strongname键的方式是
sn -k 4096 SignKey.snk
sn -p SignKey.snk SignKeyPublic.snk sha256
sn -tp SignKeyPublic.snk
我们将项目的内部结构暴露于测试项目的方式是:
[assembly: InternalsVisibleTo("MyProjectTest, PublicKey=LongPublicKeyHere")]
我们将其粘贴在MyProject
项目的Properties\AssemblyInfo.cs
中
问题:如何在strongname流程中使用SHA256或更高版本?
编辑:或者这是VS2012工具中的错误?
平台、工具:VS2012(更新3)、.NET 4.5、Windows 8 x64中非常明确地提到: 使用各种机制来实现数字签名。NET Framework中强名称的当前实现依赖于RSA公钥算法和SHA-1哈希算法
大概您希望发生的是,当CLR检查强名称时,您用于sn.exe的命令行参数对CLR也是可见的。那是不存在的。谢谢!有趣的是,在CLR文章发表前几个月,NIST提出了一个从SHA1=>SHA2系列()转换的指南。由于CLR文章和NIST指南都是7年前的事了,因此在这方面,.NET似乎需要一个早该升级的版本!