W3C 正在努力http://www.w3.org/TR/WebCryptoAPI/
定义一种从 javascript 生成数字签名、加密等的方法。基本上在对象中定义了一个新对象crypto
,window
其中DOM
必须为 javascript 提供签名和加密功能。Chrome 开始实现这个对象,该对象目前在其 javascript 引擎中可用(我认为在 beta 阶段),我尝试用它生成一些签名,似乎可以正常工作,但我认为生成数字签名的最实用方法是这个新对象使用操作系统密钥库中的私钥来代替自动生成的密钥材料,但此工作草案未涵盖此访问权限。
我已经使用签名小程序处理 OS 密钥库(MS、Firefox KS、MAC OS X)工作了多年,但如果可以避免小程序最后几天产生的所有问题,我想直接在 javascript 中执行...新的 oracle 安全要求、新的 MANIFEST.MF 属性、浏览器阻止插件等等,这些真的很痛苦!
所以我正在寻找一种javascript方式来做到这一点,似乎所有主要浏览器都采取了自己的方式:
在 Internet Explorer 中有一个 ActiveXObject 可以访问 Windows 密钥库:
// instantiate the CAPICOM objects var store = new ActiveXObject("CAPICOM.Store"); store.Open(CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY); ...
要访问 firefox 密钥库,firefox 似乎添加了一个
signText
方法window.crypto
(有关 firefox webCryptoAPI 实现的更多信息here和关于专有实现的here):window.crypto.signText("textToSign", "ask");
编辑:自版本 34 以来已弃用此 firefox 方法,因为它不是标准:https ://developer.mozilla.org/en-US/docs/Archive/Mozilla/JavaScript_crypto
然而,在 chrome 上似乎目前不存在任何相同的事情。
那么任何人都知道如何在 Chrome 中实现这一点?任何人都知道在所有浏览器中这样做的通用 js 方式吗?任何给我正确方向的建议将不胜感激。
谢谢!