| ||||
| ||||
Есть некая тиражируемая система документооборота на основе Oracle Collaboration Suit. Основная особенность - всё делается через так называемый тонкий клиент, по сути браузер (без установки дополнительного программного обеспечения). Задача состоит в подписании документов ЭЦП. Конкретный вопрос можно ли использовать функционал КриптоПро JCP на клиенте без инсталяции, то есть встроить в некий аплет, который будет загружаться, при необходимости, клиенту. Также интересует поддержка в КриптоПро JCP eToken'ов Аладдина. | ||||
Ответы: | ||||
| ||||
Подписать документ на стороне клиента (используя IE 5.х) можно используя com объект CAPICOM. <object id="oCAPICOM" classid="clsid:A996E48C-D3DC-4244-89F7-AFA33EC60679" codebase="/capicom.cab#version=2,0,0,0"> </object> <script> function SignText(text) { var retStr = ""; try { var CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0; var CAPICOM_CURRENT_USER_STORE = 2; var CAPICOM_STORE_OPEN_READ_ONLY = 0; var CAPICOM_INFO_SUBJECT_SIMPLE_NAME = 0; var CAPICOM_INFO_ISSUER_SIMPLE_NAME = 1; var CAPICOM_INFO_SUBJECT_EMAIL_NAME = 2; var CAPICOM_INFO_ISSUER_EMAIL_NAME = 3; var CAPICOM_ENCODE_BASE64 = 0; if (IsCAPICOMInstalled() != true) alert("Библиотека CAPICOM не может быть загружена, возможно из-за низких прав доступа на данной локальной машине."); else { var MyStore = new ActiveXObject("CAPICOM.Store"); MyStore.Open(CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY); var Certificates = MyStore.Certificates; Certificates = Certificates.Select("Спискок сертификатов", "Выберите сертификат для подписи документа:"); var SigData = new ActiveXObject("CAPICOM.SignedData"); var Signer = new ActiveXObject("CAPICOM.Signer"); Signer.Certificate = Certificates.Item(1); SigData.Content=text; // retStr=SigData.Sign(Signer, true, CAPICOM_ENCODE_BASE64); retStr=SigData.Sign(Signer, false, CAPICOM_ENCODE_BASE64); } } catch(e) { alert("Исключение: " + e.description); } return retStr; } function IsCAPICOMInstalled() { if ((typeof(oCAPICOM) == "object") && (oCAPICOM.object != null)) return true; return false; } </script> | ||||