подпись word документа
Здравствуйте!
Возникла необходимость подписывать Word документы, созданные в процессе работы. Использую плагин Крипто Про Browser plugin. <script type="text/javascript"> RunPlugin(); var CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d; var CAPICOM_CURRENT_USER_STORE = 2; var CAPICOM_MY_STORE = "My"; var CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2; var CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1; function FillCertList(lstId) { var oStore = CreateObject("CAPICOM.store"); if (!oStore) { alert("store failed"); return; } try { oStore.Open(); } catch (e) { alert("Ошибка при открытии хранилища: " + GetErrorMessage(e)); return; } var certCnt = oStore.Certificates.Count; var lst = document.getElementById(lstId); for (var i = 1; i <= certCnt; i++) { var cert; try { cert = oStore.Certificates.Item(i); } catch (ex) { alert("Ошибка при перечислении сертификатов: " + GetErrorMessage(ex)); return; } var oOpt = document.createElement("OPTION"); try { oOpt.text = cert.SubjectName; } catch (e) { alert("Ошибка при получении свойства SubjectName: " + GetErrorMessage(e)); } try { oOpt.value = cert.Thumbprint; } catch (e) { alert("Ошибка при получении свойства Thumbprint: " + GetErrorMessage(e)); } lst.options.add(oOpt); } oStore.Close(); } function GetErrorMessage(e) { var err = e.message; if (!err) { err = e; } else if (e.number) { err += " (" + e.number + ")"; } return err; } function CreateObject(name) { switch (navigator.appName) { case 'Microsoft Internet Explorer': return new ActiveXObject(name); default: var userAgent = navigator.userAgent; if (userAgent.match(/Trident\/./i)) { // IE10, 11 return new ActiveXObject(name); } var cadesobject = document.getElementById('cadesplugin'); return cadesobject.CreateObject(name); } } function SignCreate(oCertificate, dataToSign) { var CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d; var oSigner = CreateObject("CAdESCOM.CPSigner"); oSigner.Certificate = oCertificate; oSigner.TSAAddress = "http://cryptopro.ru/tsp/"; var oSignedData = CreateObject("CAdESCOM.CadesSignedData"); oSignedData.Content = dataToSign; try { var sSignedMessage = oSignedData.SignCades(oSigner, CADESCOM_CADES_X_LONG_TYPE_1); } catch (err) { alert("Failed to create signature. Error: " + GetErrorMessage(err)); return; } return sSignedMessage; } function Verify(sSignedMessage) { var CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d; var oSignedData = CreateObject("CAdESCOM.CadesSignedData"); try { oSignedData.VerifyCades(sSignedMessage, CADESCOM_CADES_X_LONG_TYPE_1); } catch (err) { alert("Failed to verify signature. Error: " + GetErrorMessage(err)); return false; } return true; } function selectCertificate() { var CAPICOM_STORE_OPEN_READ_ONLY = 0; var CAPICOM_CURRENT_USER_STORE = 2; try { var CertStore = CreateObject("CAPICOM.Store"); } catch (err) { alert('Failed to create CAPICOM.store: ' + err.number); return; } //Открываем хранилище сертификатов пользователя только для чтения CertStore.Open(CAPICOM_CURRENT_USER_STORE, "MY", CAPICOM_STORE_OPEN_READ_ONLY); //Выводим пользователю окно выбора сертификата try { var certificate = CertStore.Certificates.Select( "Выберите сертификат для подписи документа." , "Выберите один из сертификатов", false); } catch (e) { alert('ошибка сертификат'+ e.message); // Пользователь не выбрал сертификат } return certificate.Item(1); } function RunPlugin() { //FillCertList('ctl00_ContentPlaceHolder1_CertListBox'); var oCertificate = selectCertificate(); var signedMessage = SignCreate(oCertificate, "Message"); //alert(signedMessage); var verifyResult = Verify(signedMessage); if (verifyResult) { alert("Signature verified"); } } </script> Скажите пожалуйста как подписать word документ. В моем примере подписывается сообщение: var signedMessage = SignCreate(oCertificate, "Message"); Как я понимаю необходимо данные signedMessage засунуть во вновь созданный word документ. Но вот работа javascript с файлами идет туго. Подскажите пожалуйста... Заранее спасибо! |
Часовой пояс GMT +3, время: 05:44. |