标签: strongname

对于强版命名库的每个版本,是否需要新的.snk密钥文件?

如果我强烈命名一个带有.snk文件的类库,如果我创建同一个库的新版本,是否需要用新的.snk文件替换?

.net strongname snk

6
推荐指数
1
解决办法
715
查看次数

为什么可以使用反射从已签名的程序集中加载未签名的程序集中的类型?

我有两个组件A和B. A是强名称而B不是.

根据MSDN,我不能从A引用B,因为强名称程序集只能引用另一个强名称程序集.

但是为什么可以加载程序集B,实例化它的类并使用反射从程序集A调用它们的方法?

// Inside assembly A
Assembly b = Assembly.LoadFrom("B");
obj myObj = b.CreateInstance("MyClass");
Run Code Online (Sandbox Code Playgroud)

这是否会破坏不允许在签名组中引用未签名组件的目的?

.net reflection strongname assemblies

6
推荐指数
1
解决办法
1847
查看次数

单声道的PFX/PKCS12到SNK转换

这是对Mono xbuild错误CS1548的跟进 - 密钥文件格式不正确

嗨,我有一个使用VS2008用C#编写的应用程序.目前我们正在使用Mono将此应用程序移植到Mac.

我试图从pfx文件中提取密钥.我先用过

`sn -pc key.pfx key.snk`
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误

'Failed to extract public key for key pair -- Keyset does not exist'.
Run Code Online (Sandbox Code Playgroud)

然后我用了

`sn -p key.pfx key.snk`
Run Code Online (Sandbox Code Playgroud)

这创建了我想要的snk文件.然后我在单声道选择了项目选项>程序集签名时构建错误

'key.snk is missing private key needed for signing'.
Run Code Online (Sandbox Code Playgroud)

我想我明白,如果我创建一个新的snk密钥,我可以在其中包含私钥和公钥.只是因为遗留问题,我们真的希望能够使用原始的pfx密钥值.

mono strongname snk pfx pkcs#12

6
推荐指数
1
解决办法
2478
查看次数

使用强名称工具在.NET中创建强名称

从谷歌获得指令后,我尝试使用以下命令创建StrongNameFile:

C:\Program Files\Microsoft Visual Studio 9.0\VC\sn -k StrongNameFile.snk
Run Code Online (Sandbox Code Playgroud)

当我运行该命令时,我收到一条错误消息:

'sn' is not recognized as an internal or external command, operable program or batch file.
Run Code Online (Sandbox Code Playgroud)

我用以下方式尝试了它:

C:\Program Files\Microsoft Visual Studio 9.0\SDK\v3.5\Bin>sn -k StrongNameFile.snk
Run Code Online (Sandbox Code Playgroud)

但得到了同样的错误.请有人帮我解决这个问题.

.net strongname visual-studio

5
推荐指数
1
解决办法
1万
查看次数

有什么理由将 .snk 文件与项目源一起发送?

我时不时地在网络上看到一个示例项目,其中包含一个 .snk 文件,用于使用强名称对编译结果进行签名。

AFAIK这是完全错误的- 一旦 .snk 文件被披露,任何人都可以生成一个程序集,该程序集可用于替换原始代码供应商提供的程序集,但现在包含恶意代码。我想传送 .snk 文件的人不会认真对待这种风险而只是传送文件,否则项目将无法编译现成的。

除了“方便”之外,是否有任何理由发送 .snk 文件?

.net strongname assemblies snk

5
推荐指数
1
解决办法
1185
查看次数

如何强烈命名非托管C++ DLL?

我正在使用一个C#应用程序,它使用EasyHook库进行DLL注入.EasyHook要求使用它的任何应用程序都有很强的名称.为了强烈命名应用程序,我需要确保我使用的所有库都具有强名称.

这对我的所有托管库都很容易,但我还有一个非托管的c ++库,我需要强烈命名.经过一些搜索,我似乎无法找到一种方法来签署我的非托管DLL,即使使用源代码也是如此.可以这样做,如果是这样,我还需要做什么?

感谢您的任何建议或帮助!

c# strongname unmanaged dll-injection

5
推荐指数
1
解决办法
2869
查看次数

resouce resx文件中的强命名程序集引用

场景

GreatLib.dll的供应商部署了一个自定义控件。它正在客户Winforms应用程序中使用。GreatLib具有很强的命名能力,并公开了一些类型。当这些类型用作客户窗体中的公共属性时,它们也可以在Windows窗体设计器中使用。这是麻烦开始的地方:

设计人员将在表单的资源文件中为所有这些类型创建项目,并在这些项目中序列化其default(?)值。由于GreatLib是严格命名的,因此引用将包含程序集的完全限定名称。(我认为这就是Resgen所做的事情?)。这些项目可能如下所示:

<data name="vector3Control1.value" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
    AAEAAAD/////AQAAAAAAAAAMAgAAAFRJTE51bWVyaWNzLCBWZXJzaW9uPTQuMi41MzM4LjQ4MDIxLCBD
    dWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPThkOWJmNTBlZjg1NDczNGQFAQAAABpJTE51bWVy
    aWNzLkRyYXdpbmcuVmVjdG9yMwMAAAADbV94A21feQNtX3oAAAALCwsCAAAAAAAAAAAAAAAAAAAACw==
</value>
</data>
Run Code Online (Sandbox Code Playgroud)

设计器在Form.Designer.cs文件中生成一些与此类似的代码,以便读取资源项:

this.vector3Control1.value = ((ILNumerics.Drawing.Vector3)(resources.GetObject("vector3Control1.value")));
Run Code Online (Sandbox Code Playgroud)

问题

供应商提供了对GreatLib的更新,客户将旧版本替换为新版本。但是资源文件将保持不变!因此,我们可以在Designer.cs代码上获得InvalidCastExeption,或者-如果不再找到旧程序集-则是FileNotFoundException。

建议使用哪种方式处理resx文件中的强名称?

通过使用完全防止它们

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
Run Code Online (Sandbox Code Playgroud)

?还是按照HansPassant的建议在每次更新时手动转换base64数据?

resources strongname windows-forms-designer visual-studio winforms

5
推荐指数
0
解决办法
230
查看次数

对强命名的 .NET 程序集进行数字签名

我有一个 .NET 程序集,我对其进行了强命名,并将其放入 GAC 中。.pfx但是,稍后还会使用文件对同一程序集进行数字签名,以进行数字签名。
我注意到这个经过双重签名的程序集未通过强名称验证,并且不会安装在目标计算机的 GAC 中。

数字签名过程是否有可能删除 SN 密钥生成的强命名过程?

数字签名是必不可少的,如果两者不兼容,那么文件可以由数字签名吗?.pfx像 SN 命名过程一样简单地由文件对文件进行签名?

另外,程序集位于C++/CLI,而不是C#

编辑:查看MSDN 文档,它说是否使用链接器选项进行强命名,以及是否使用像这样的后处理工具mt.exe(我不确定是否Signtool.exe属于这些工具),则需要重新签署程序集。

另外,这个声明:

如果在开发环境中生成时使用签名属性,则可以通过在生成后事件中显式调用 sn.exe(Sn.exe(强名称工具))来成功对程序集进行签名。

...有点令人困惑。它指的是哪些属性,CLR属性还是Linker选项?

.net strongname c++-cli authenticode digital-signature

5
推荐指数
1
解决办法
1227
查看次数

单元测试公共签名的 .NET Core/框架库

我有一个针对 .NET Core 和 .NET Framework 进行编译的 NuGet 包库项目。它还使用新的公共签名

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup Label="Build">
    <TargetFrameworks>netstandard2.0;net472</TargetFrameworks>
  </PropertyGroup>

  <PropertyGroup Label="Signing">
    <SignAssembly>true</SignAssembly>
    <AssemblyOriginatorKeyFile>../../Key.snk</AssemblyOriginatorKeyFile>
    <PublicSign>true</PublicSign>
  </PropertyGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)

我有一个 xUnit 测试项目,使用它也可以交叉编译到 .NET Core 和 .NET Framework。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup Label="Build">
    <TargetFrameworks>netcoreapp3.1;net472</TargetFrameworks>
  </PropertyGroup>

  <ItemGroup Label="Package References">
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
    <PackageReference Include="xunit" Version="2.4.1" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" />
  </ItemGroup>

  <ItemGroup Label="Project References">
    <ProjectReference Include="..\..\Source\Foo\Foo.csproj" />
  </ItemGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)

当我在此项目中运行测试时,.NET Core 测试运行成功,但 .NET Framework 测试运行失败,并显示:

System.IO.FileLoadException:无法加载文件或程序集“Foo,Version=0.0.1.0,Culture=neutral,PublicKeyToken=fc5550082a9c642c”或其依赖项之一。无法验证强名称签名。该程序集可能已被篡改,或者已延迟签名但未使用正确的私钥完全签名。(HRESULT 异常:0x80131045)

我怎样才能让他们都工作?

.net c# strongname xunit .net-core

5
推荐指数
1
解决办法
246
查看次数

拥有两个不同的依赖程序集但具有相同的公钥令牌是否正常?

System.IO.FileSystem.Primitives -> b03f5f7f11d50a3a

System.Runtime.CompilerServices.Unsafe -> b03f5f7f11d50a3a

<dependentAssembly>
            <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

我有这个错误:

具有相同标识“ System.IO.FileSystem.Primitives , Version=4.0.2.0, Culture=neutral, PublicKeyToken= b03f5f7f11d50a3a ”的程序集已导入。尝试删除重复的引用之一。

c# asp.net model-view-controller strongname .net-assembly

5
推荐指数
1
解决办法
463
查看次数