我希望能够使用100%JavaScript和基于加密令牌的密钥在浏览器上签名数据。
从我到目前为止看到的,此功能的所有旧实现都已停止(例如,即使new ActiveXObject("CAPICOM.Store");
似乎也不再适用于IE11,因为它会抛出错误! - 我不会&# 39;不知道我是否遗漏了某些东西......也许是因为我在控制台窗口中运行它......)。
我已经研究过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(选项 - > Certifivates->安全设备)中,我能做得更好吗?
相关问题:
Accessing signing/encryption in a browser's Keystore using JavaScript - sample code? (WebCryptoAPI)
js signature on chrome with OS keystore
更新
我也发现了这个PDF: http://webpki.org/papers/PKI/x509-webcrypto-extension-scheme.pdf
从我所看到的,任何一个浏览器中都没有window.crypto.subtle.KeyStore
,所以我猜这是人们对遥远未来的狂野梦想......
UPDATE2: 这就是我无法在IE11中加载ActiveX的原因:https://stackoverflow.com/a/5157766/2173353
所以,至少,还有一种旧方法仍然有效......
答案 0 :(得分:1)
不,目前没有。用户的硬件或软件令牌仍然不可用。有关更多信息,请参阅Eugene的评论(在问题上)。