带有OS密钥库的Chrome上的js签名

时间:2014-09-05 11:19:58

标签: javascript google-chrome digital-signature window.crypto

W3C正在研究http://www.w3.org/TR/WebCryptoAPI/来定义一种从javascript生成数字签名,加密等的方法。基本上在crypto中的window对象内定义一个新对象DOM,该对象必须为javascript提供签名和加密功能。 Chrome开始实现此对象,该对象目前可在其javascript引擎中使用(我认为处于测试阶段),我尝试使用它生成一些签名似乎正常工作,但我认为最实用的生成数字签名的方法这个新对象使用OS密钥库中的私钥代替自动生成的密钥材料,但此工作草案中未涉及此访问。

我使用签名小程序工作了一年来处理OS密钥库(MS,Firefox KS,MAC OS X)但我想直接在javascript中做,如果可以避免所有applet最后几天产生的问题...新的oracle安全性requeriments,新的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 Keystore,似乎firefox在signText中添加window.crypto方法(有关firefox webCryptoAPI实现here的更多信息以及有关专有实现here) :

    window.crypto.signText("textToSign", "ask");

编辑:这个firefox方法自版本34以来已被弃用,因为它不是标准:https://developer.mozilla.org/en-US/docs/Archive/Mozilla/JavaScript_crypto

然而,在Chrome上似乎目前并不存在任何相同的事情。

所以任何人都知道如何在Chrome中实现这一目标? 在任何浏览器中,任何人都知道一种常见的js方式吗?任何给我正确方向的建议都将受到赞赏。

谢谢!

1 个答案:

答案 0 :(得分:2)

您需要编写将访问MS Crypto Store并执行加密操作的活动组件。它可以是Java applet或使用NativeClient SDK的Chrome浏览器扩展。 Java applet将在MSIE,Firefox,Chrome和大多数其他浏览器中运行,但需要在客户端计算机上安装JRE(Java运行时环境)。