问题标签 [assembly-signing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 我是否需要为开源项目保护我的强名称密钥文件?
我正在创建一个入门工具包,它将来自开源项目的已编译程序集安装到 GAC 中,以便更轻松地在模板中引用程序集。由于他们要加入 GAC,因此需要签署。
我是否需要密码保护和保护密钥文件,或者是否可以将其保持打开状态并将文件包含在源代码管理中?
c# - 如何声明朋友集会?
我的解决方案中有 2 个项目:
- 装配(基本库)
- 测试组装 (NUnit)
我在第一个项目中将测试程序集声明为朋友程序集:
一切正常,直到我意识到我忘记设置解决方案来签署我的程序集。因此创建了一个 snk 文件并设置了 Visual Studio 项目以签署第一个程序集(基本库)。现在,当我编译第一个项目时,出现以下错误:
朋友程序集引用“Company.Product.Tests”无效。强名称签名的程序集必须在其 InternalsVisibleTo 声明中指定一个公钥。
我尝试使用 sn 实用程序从我的 snk 文件中提取公钥,但它会生成一个我不确定如何使用的有线二进制文件。我该如何解决这个问题?
c# - .NET 程序集的签名
数字签名与强命名程序集有什么关系。我读到一个强命名的程序集有公钥和数字签名。
“对程序集进行签名涉及获取程序集重要部分的哈希,然后用私钥加密哈希。签名的哈希与公钥一起存储在程序集中。公钥将解密签名的哈希。当 CLR加载一个强命名的程序集,它将从程序集生成一个哈希,然后将其与解密的哈希进行比较。如果比较成功,则意味着文件中的公钥(以及公钥令牌)与私钥相关联用于对程序集进行签名。这意味着程序集中的公钥是程序集发布者的公钥,因此可以阻止欺骗攻击。
以上信息准确吗?它没有任何对数字签名的引用。我找不到 MSDN 页面来解释程序集如何签名、签名如何验证以及如何消除黑客攻击的可能性。我想了解更多关于这些的信息。
asp.net - 我如何对已经内置到 dll 中的程序集进行签名,特别是 flute.dll
我想签署 dll 的原因是因为我想将它添加到全局程序集缓存中。该程序集是一个用 Java 编写并移植到 J# 的 css 解析引擎。我使用 VS2008,所以我无法制作 J# 项目。它没有分配给它的强名称键,我不知道现在它已经构建了怎么做。
有人有想法么?
.net - 与多个项目和开发人员签署程序集的最佳实践
我正在寻找在拥有 30 多个开发人员、20 多个解决方案和 60 多个项目的组织中应用签名程序集的建议和最佳实践。我们正在使用 Visual Studio Team System 2008 和 TFS。
虽然创建密钥和签署程序集是一个非常简单直接的过程,但我担心我们如何以最佳方式管理它。
到目前为止我的想法:
- 每个解决方案(通常包含 3 到 20 个项目)都将在解决方案根文件夹中放置一个 .pfx 密钥文件。
- 每个解决方案都有一个唯一的密钥强密码。
我们会遇到这种方法的任何问题吗?
其他一些想法:
- 跨解决方案的所有项目使用相同的密钥文件。这会让我们的事情变得更容易吗?这是个坏主意吗?甚至可能吗?
- 每个项目都应该有自己唯一的密钥吗?为什么,为什么不呢?
欢迎任何意见,好的/坏的经验和建议。:)
visual-studio-2008 - 使用脚本删除 Visual Studio 中的 dll 签名
我们有一个带有 ca 的 C# 解决方案。55个项目,包括测试项目。
由于项目的一部分是共享点,所有 dll 都已签名。
我们想运行具有代码覆盖率的单元测试。然后我们得到代码覆盖率无法检测签名 dll 的问题。
因此,我们需要取消对 dll 的签名,运行测试,然后将它们退出。对于大量的项目文件,这很麻烦。
问题是:有可能以任何方式自动化吗?(要辞职,我可以撤消结帐)
visual-studio - 何时应使用密码保护强名称密钥文件?
在 Visual Studio 项目设置中,您可以选择一个强名称密钥文件来对程序集进行签名。创建新文件时,您可以选择使用密码保护它。你什么时候应该这样做?什么时候不应该?
我在想,如果项目是托管在 Codeplex 或类似项目上的开源项目,那么用密码保护它可能就不那么聪明了。还是应该保护它?如果密钥文件受到保护,人们将无法下载源代码并进行编译吗?或者,这究竟是如何工作的?
c# - 为开源项目管理强名称密钥对的推荐方法是什么?
我管理一个开源项目,并希望签署项目二进制包中发布的二进制文件。我使用 Visual Studiocsproj和sln文件来管理和构建我的项目,并将这些文件作为项目源包的一部分进行分发。
如何签署我的构建生成的二进制文件而不必分发snk密钥对文件?如果我使用 Visual Studio 对程序集进行签名,则每个项目文件现在都需要密钥对的副本才能构建。我对分发密钥对感到不舒服,即使它受密码保护。
编辑:
另一个需要注意的是,项目中的某些程序集通过 授予朋友访问权限InternalsVisibleToAttribute,并通过项目引用构建这些朋友。因此,此类程序集在引用已签名程序集时需要使用强名称。但是,如果密钥对未分发,那么最终用户如何构建源代码并维护项目关系?如果使用临时密钥对文件,签名程序集的公钥令牌不会更改,从而破坏InternalsVisibleToAttribute引用吗?
c# - c# - 你可以对强命名程序集进行“弱”程序集引用吗
由于各种原因,我宁愿不在我的项目中使用强命名(签名)程序集。但是,其中一个项目被 Sharepoint Web 部件引用,这意味着它必须经过签名。
是否可以签署这个程序集,但是当我从其他项目中引用它时,使用非强引用来这样做。这将为我的其余代码提供未签名程序集的优势,但仍允许它由共享点加载。
.net - 有没有一种简单的方法可以在 VS 2010 中签署 C++ CLI 程序集?
现在我正在设置 Linker/Advanced/KeyFile 选项。
我收到“mt.exe:一般警告 810100b3:是强名称签名程序集,嵌入清单会使签名无效。您需要重新签署此文件以使其成为有效程序集。” .
从网上阅读,听起来我必须设置延迟签名选项,下载 SDK,并将 sn.exe 作为构建后事件运行。在VS2010中肯定有更简单的方法来做这个常见的操作吗?