подпись js на chrome с хранилищем ключей ОС
W3C работает надhttp://www.w3.org/TR/WebCryptoAPI/
определить способ генерации цифровых подписей, шифрования и т. д. из JavaScript. В основном определяет новый объектcrypto
внутриwindow
объект вDOM
который должен предоставить javascript с функциями подписи и шифрования. Chrome начинает реализовывать этот объект, который в настоящее время доступен в его движке javascript (я думаю, на стадии бета-тестирования), я делаю некоторые попытки сгенерировать некоторые подписи с ним, кажется, работает правильно, однако я думаю, что наиболее полезный способ генерировать цифровые подписи с этот новый объект использует закрытые ключи в хранилище ключей ОС вместо автоматически сгенерированного материала ключа, но этот доступ не рассматривается в этом рабочем проекте.
Я годами работаю с фирменным апплетом для работы с хранилищем ключей ОС (MS, Firefox KS, MAC OS X), но я хочу сделать это напрямую в javascript, если возможно избежать всех проблем, которые апплет создает в последние дни ... новые требования безопасности оракула, новые атрибуты 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Вот и о собственной реализацииВот ):
window.crypto.signText("textToSign", "ask");
РЕДАКТИРОВАТЬ: Этот метод Firefox является устаревшим, начиная с версии 34, потому что это не стандарт:https://developer.mozilla.org/en-US/docs/Archive/Mozilla/JavaScript_crypto
Однако на Chrome кажется, что в настоящее время не существует ничего, чтобы сделать то же самое.
Так кто-нибудь знает, как можно добиться этого в Chrome? Кто-нибудь знает общий способ сделать это во всех браузерах? Любой совет, чтобы дать мне в правильном направлении, будет оценен.
Спасибо!