Здравствуйте! Возникла необходимость подписывать 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 с файлами идет туго. Подскажите пожалуйста... Заранее спасибо! Это сообщение отредактировал(а) Codenewman - 22.6.2014, 16:40
|