问题标签 [capicom]

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.

0 投票
2 回答
685 浏览

php - 如何在 PHP 中使用 activex dll?

我想在我的 PHP 页面中加载一个 ActiveX DLL 并加载它的函数。

例如:CAPICOM.DLL

0 投票
1 回答
4311 浏览

c# - 如何使用 PFX(Bouncy Castle 或其他)以编程方式对可执行文件进行代码签名

我正在尝试确定使用 Bouncy Castle、托管代码或 C# 中的非托管代码对可执行文件进行代码签名的最佳方法。由于现在不推荐使用 CAPICOM,我想如果需要非托管方式,mssign32.dll 中的 SignerSign 方法之一是最好的方法。

这个答案(https://stackoverflow.com/a/3952235/722078)似乎很接近,但它会产生一个 .p7m 文件,虽然看起来是正确的大小,但不会正确运行(显然在运行之前重命名为 .exe )。

提问者在这里给出的解决方案(API/Library to replace signtool.exe)似乎很有希望和管理,但就像 Tom Canham 在下面的评论中提到的那样,“这似乎是为了签署封装的消息。Authenticode - 代码-signtool 所做的签名 - 是不同的,这就是为什么 EXE 在签名后不运行的原因。” 当我使用提问者的解决方案或之前引用的 Bouncy Castle 解决方案签名时,我收到了与 Tom 相同的错误。

此处给出了我尚未尝试过的唯一选项(https://stackoverflow.com/a/6429860/722078),虽然它看起来很有希望,但我并不肯定它使用“authenticode”代码签名而不是“封装消息”代码签名。此答案还具有不使用现在已弃用的 CAPICOM 互操作方法的好处,因此我想我今天将使用此方法报告我的结果。如果这是最好的选择,那么有人可以谈谈从 mssign32.dll 导出的SignerSignSignerSignExSignerSignEx2函数之间的区别吗?我已阅读 SignerSignEx2 应与 Windows 8 及更高版本一起使用...

长话短说,我想复制 signtool.exe 对给定 .exe 文件、.pfx 文件和密码的可执行文件进行签名的能力,如下所示:

我正在寻找使用身份验证签名以编程方式对可执行文件(如果重要,则为 PE)进行代码签名的最佳选择,如果可能的话,我更愿意使用充气城堡或托管代码,尽管如果它有效并且不可用,我将使用非托管的东西目前已弃用。

谢谢!

0 投票
0 回答
649 浏览

delphi - 从 X.509 证书导入公钥时出现“ASN1 标签错误值”错误

我需要使用 X.509 证书提供的公钥使用 RSA 加密某些内容。证书是有序的(在 Windows 资源管理器中检查显示公钥,RSA 20148 位。)

我尝试执行第一个基本步骤(导入公钥)失败 - 我在标记的源行(由 Win32Check 抛出)上收到 EOSError 异常“ASN1 tag bad value”。我该如何解决这个问题?

我在用:

  • Rudy Velthuis 的 WinCrypt(最后修改于 2008 年 3 月 7 日)
  • 德尔福 (XE2)

源代码:

  1. 我是否正确阅读了证书文件?我应该使用其他东西吗?
  2. 我使用 API 方法对吗?
  3. 这个错误的原因是什么(“ASN1 tag bad value”)?
0 投票
0 回答
233 浏览

javascript - 如何使用 USB 令牌和 capicom 工具在 ASP.NET 中对 XML 文件进行数字签名?

我想知道如何使用 USB 令牌在 ASP.NET C# 中对 XML 文件进行数字签名?

我想知道如何从 mosearbear USB 令牌中获取证书并使用其中包含的私钥对 XML 文件进行数字签名

由于USB 在客户端机器上,我想在客户端系统上签署 XMl 文件,那么该怎么做呢?

我所知道的是,在客户端机器上访问设备并不容易,我知道可以使用 capicom 完成,但不知道如何

我最近知道的是,微软停止了 capicom。那么它的替代方案是什么?

我有一段代码,但这似乎不是我想要的。谁能帮我吗?

0 投票
1 回答
2253 浏览

itext - 如何使用 iText 在 Web 环境中使用智能卡签署 PDF?

通读以下参考资料:

哈希码:

只是一个简单的测试——在初始页面请求时创建一个虚拟的 Pdf 文档,计算哈希,并放入一个隐藏的输入字段 Base64 编码。(hashedValue以上)

然后在客户端使用 CAPICOM 发布表单并获取用户的签名响应:

所以现在我不确定我是在搞乱哈希部分、签名部分还是两者兼而有之。在上面的签名代码片段和客户端代码(未显示)中,我正在调用我认为是签名验证代码,但这也可能是错误的,因为这对我来说是第一次。打开 PDF 时收到臭名昭著的“文档自签名后已被更改或损坏”无效签名消息。

可以在此处找到客户端代码(不是我编写的)。源有一个变量命名错误,已更正。作为参考,CAPICOM 文档说签名响应采用 PKCS#7 格式

编辑 2015-03-12

经过@mkl 的一些不错的指导和更多的研究,似乎 CAPICOM在这种情况下实际上是不可用的。虽然没有清楚地记录,(还有什么新的?)根据herehere,CAPICOM期望一个utf16字符串(Encoding.Unicode在.NET中)作为输入来创建一个数字签名。如果长度是奇数,它会从那里填充或截断(取决于前一句中正确的源)它接收到的任何数据。即,如果PdfSignatureAppearance.GetRangeStream()返回的长度为奇数,则签名创建将始终失败。也许我应该创造一个我很幸运Stream选项:如果远程流长度为偶数,则标记,InvalidOperationException如果奇数则抛出。(可悲的幽默尝试)

作为参考,这里是测试项目

编辑 2015-03-25

为了结束这个循环,这里有一个 VS 2013 ASP.NET MVC 项目的链接。可能不是最好的方法,但它确实为问题提供了一个完全有效的解决方案。由于 CAPICOM 的奇怪且不灵活的签名实现,如上所述,如果PdfSignatureAppearance.GetRangeStream()的返回值(再次,Stream.Length)是奇数,则可能的解决方案可能需要第二次传递和注入额外字节的方法。我打算通过填充 PDF 内容来尝试漫长而艰难的方法,但幸运的是,一位同事发现填充 PDF 内容要容易得多PdfSignatureAppearance.Reason。要求第二次通过 iText[Sharp] 做某事并非史无前例 - 例如为文档页眉/页脚添加第 x 页,共 y 页

0 投票
0 回答
112 浏览

javascript - Windows 虚拟智能卡 (VSC) 安全错误

使用 javascript 和 activeX (CAPICOM Store api),我试图通过 IE 11 从用户存储中删除证书。

我使用的 javascript 代码如下:

oldCertificate 是一个 Capicom 证书对象,而 userCertificateStore 是一个 Capicom 存储对象。

为了进行测试,我之前在 Windows 8.1 触摸板和金雅拓智能卡读卡器上使用带有 TPM 和密钥存储的智能卡作为假 VSC。一切正常。

现在我在触摸板上安装了 VSC,当我尝试删除 VSC 上的证书时,我在 Windows 安全提示上收到错误,允许我选择智能卡(即:智能卡选择

当我选择我的 VSC 时,它说:“安全驱动程序需要不在系统中的飞行员。请联系您的管理员。”。

这似乎是一个相当普遍的错误......

我试图在 MSDN 网站上的 X509 Store 上查找文档,因为不推荐使用 Capicom,但无法获取对象方法或属性。

为了暂时绕过这个问题,我决定将存档证书属性设置为 true,以便从每个证书选择列表和用户存储中隐藏它。这行得通,但是系统上仍然存在密钥容器......这可能会导致容器限制数量出现问题!

任何人都知道要安装哪个飞行员或哪个安全选项可以使我的 javascript 代码删除 VSC 上的密钥存储?

或者,如果有人有使用 X509 商店删除证书的工作示例,那就太好了!甚至是包含对象方法和属性的完整文档的链接。

谢谢

0 投票
1 回答
115 浏览

installshield - 检查 DLL 是否被其他应用程序使用

我正在capicom.dll通过我的安装程序注册并在卸载我的产品时取消注册。还有另外一个第三方软件“ABC”,也注册并使用了这个DLL。

但问题是,当我卸载自己的产品时,我注销了 capicom.dll。因此,另一个第三方软件“ABC”无法正常工作。那么如何在注销时检查此 DLL 是否被另一个产品/应用程序使用?

0 投票
1 回答
446 浏览

x509certificate2 - CAPICOM 和 X509

我有一个网络申请表。目的是从 Web 表单创建数据的 xml 并使用用户 USB 证书对其进行签名。我正在使用 CAPICOM.store 成功打开所有用户证书。当我单击我想要的一个时,我将其导出。之后,我在 X509Cetificate2 中导入选定的证书来签署 xml。但在我的代码中,我在 signedXml.ComputeSignature() 线上遇到错误,并且消息是“未加载签名密钥”。请任何帮助或建议来解决这个问题。

0 投票
1 回答
506 浏览

javascript - 使用公钥验证签名 XML 中的私钥

我使用 javascript 打开 CAPICOM 商店来选择证书。之后,我导出选定的证书、该证书的公钥和私钥,并将它们放在三个隐藏字段中。

签署 xml 时,我使用:

拿证

为了定义我使用的私钥

这将成功签署我的 xml。

为了验证我使用的 xml:

但这不起作用。只有当我再次使用私钥时它才有效。

使用相同的私钥签名和验证还是使用公钥进行签名和验证是一种好习惯?

0 投票
0 回答
165 浏览

java - 如何在java中使用capicom加密值

我已经使用 python 实现了加密 capicom。如何用java设置算法密钥长度、名称和秘密?