如何确定强名称(sn.exe)工具使用的CSP?

时间:2017-09-17 21:40:09

标签: c# .net code-signing strongname

我最近得到了一个Yubikey,并开始使用它......好吧......我能做的所有与公钥/私钥操作相关的事情。在过去,我在公共git仓库中意外泄露了我的强名称密钥对,我决定将我的项目设置为使用AssemblyKeyNameAttribute,将其指向我的代码签名密钥的容器名称,该密钥存储在Yubikey(我为所有感兴趣的人记录了混乱,here。)

因为当CSP设置为默认值时,sn.exe无法找到密钥集(我假设'Microsoft Base Crypto Provider v1'),所以我必须至少执行一次sn.exe -c "Microsoft Base Smart Card Crypto Provider"运行构建。更糟糕的是,这必须以管理员身份执行,但密钥只能作为非提升用户检索,迫使我编写PowerShell script,在预构建中提升以运行该命令。

问题是,这会提升每个构建,这很烦人。我还遇到了使用不同版本的sn.exe来重置CSP的情况(因此我可以生成一次性的公共/私有密钥对,用于强命名为弱名称的库,但我没有“作者”,停止了构建能够找到我的密钥,尽管使用相同的版本将其设置为返回到智能卡CSP(我可以用错误的版本打破它,但只能修复它特定版本。)

我想在我的脚本中添加一个步骤,以查找当前设置的 CSP,以便它可以跳过提升以更改它,如果它不需要并且能够获得这些信息也可以帮助我解决我在sn.exe没有切换回智能卡提供商时遇到的奇怪问题。

有谁知道如何获得sn.execsc.exe(并希望ilasm.exe和其他人)配置使用的当前CSP的价值?或者,有没有办法指定用于查找AssemblyKeyNameAttribute中指定的密钥的CSP,允许我首先跳过所有这些废话?

0 个答案:

没有答案