我希望能够使用 100% JavaScript 和基于加密令牌的密钥在浏览器上签署数据。
从我目前所看到的情况来看,此功能的所有旧实现都已停止使用(例如new ActiveXObject("CAPICOM.Store");
,由于它引发错误,甚至似乎不再在 IE11 中工作!-我不知道我是否遗漏了什么......也许是因为我在控制台窗口中运行它......)。
我查看了 WebCryptoAPI 的规范(这应该是新的支持方式):
http://www.w3.org/TR/WebCryptoAPI/#SubtleCrypto-method-sign
......然后在这个(更清晰,更有条理和有帮助):
http://msdn.microsoft.com/en-us/library/ie/dn302332(v=vs.85).aspx
...我看到它允许您创建新密钥(generateKey
),但我不确定它是否支持使用令牌中的密钥。有一个importKey
,但从描述看来,我不需要使用操作系统可以看到的现有密钥进行签名。
这个网络标准是否旨在允许这种功能?我可以像现在一样使用它并实现我的目标吗?
我至少可以在具有设备管理器(选项->证书->安全设备)的 Firefox 中做得更好吗?
相关问题:
使用 JavaScript 在浏览器的密钥库中访问签名/加密 - 示例代码?(WebCryptoAPI)
更新:
我还找到了这个 PDF: http ://webpki.org/papers/PKI/x509-webcrypto-extension-scheme.pdf
据我所见,window.crypto.subtle.KeyStore
任何浏览器中都没有,所以我想这是人们对遥远未来的疯狂梦想......
UPDATE2: 这就是我无法在 IE11 中加载 ActiveX 的原因:https ://stackoverflow.com/a/5157766/2173353
所以,至少,还有一种旧方法仍在工作......