assinatura js no chrome com keystore do SO

O W3C está trabalhando em umhttp://www.w3.org/TR/WebCryptoAPI/ para definir uma maneira de gerar assinaturas digitais, criptografar e assim por diante a partir de javascript. Define basicamente um novo objetocrypto dentro de umwindow objeto emDOM que deve fornecer ao javascript recursos de assinatura e criptografia. O Chrome começa a implementar esse objeto que está atualmente disponível em seu mecanismo javascript (acho que no estágio beta), faço algumas tentativas para gerar algumas assinaturas e parece funcionar corretamente, no entanto, acho que a maneira mais útil de gerar assinaturas digitais com esse novo objeto está usando as chaves privadas no keystore do SO em vez de gerar automaticamente o material da chave, mas esse acesso não é coberto neste rascunho de trabalho.

Estou trabalhando há anos com um applet de assinatura para lidar com o keystore do SO (MS, Firefox KS, MAC OS X), mas quero fazer diretamente em javascript, se for possível evitar todos os problemas que o applet produz nos últimos dias ... novos requisitos de segurança da oracle, novos atributos MANIFEST.MF, plug-ins de bloqueio de navegador e assim por diante!

Então, eu estou procurando uma maneira javascript de fazer isso e parece que todos os principais navegadores seguem seu próprio caminho:

No Internet Explorer, existe um ActiveXObject para acessar o keystore do Windows:

// instantiate the CAPICOM objects
var store = new ActiveXObject("CAPICOM.Store");
store.Open(CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY);
...

Para acessar o firefox, o Keystore parece que o firefox adiciona umsignText método emwindow.crypto (mais informações sobre a implementação do firefox webCryptoAPIaqui e sobre a implementação proprietáriaaqui ):

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

EDIT: Este método do Firefox está obsoleto desde a versão 34 porque não é um padrão:https://developer.mozilla.org/en-US/docs/Archive/Mozilla/JavaScript_crypto

No entanto, no Chrome parece que atualmente não existe nada para fazer o mesmo.

Então, alguém sabe como conseguir isso no Chrome? Alguém conhece uma maneira comum de fazer isso em todos os navegadores? Qualquer conselho para me dar na direção certa será apreciado.

Obrigado!

questionAnswers(1)

yourAnswerToTheQuestion