Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Codenewman  
#1 Оставлено : 19 июня 2014 г. 23:22:41(UTC)
Codenewman

Статус: Новичок

Группы: Участники
Зарегистрирован: 19.06.2014(UTC)
Сообщений: 5
Российская Федерация

Здравствуйте!

Прошу помощи, реализую электронную подпись, ссылался на http://cpdn.cryptopro.ru , подглава "создание и проверка подписи"
Все работает прекрасно, сообщение подписывается, но приходится сразу ставить название сертификата, а хотелось бы предоставлять выбор как на тестовой сайте плагина.

Вот мой код:

Код:

    function SignCreate(certSubjectName, dataToSign) {
        
        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;

        var oStore = CreateObject("CAPICOM.Store");
        oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE,
        CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);

        
        var oCertificates = oStore.Certificates.Find(
        CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME, certSubjectName);

        if (oCertificates.Count == 0) {
            alert("Certificate not found: " + certSubjectName);
            return;
        }
        var oCertificate = oCertificates.Item(1);
        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;
        }

        oStore.Close(); 
        return sSignedMessage;
    }

    function RunPlugin() {

        var signedMessage = SignCreate("Название сертификата(реквизит subject name)", "Message"); // хотелось бы давай выбор из списка сертификата

        var verifyResult = Verify(signedMessage);
        if (verifyResult) {
            alert("Signature verified");
        }
    }


Заранее спасибо!

Отредактировано пользователем 19 июня 2014 г. 23:40:11(UTC)  | Причина: Не указана

Offline Андрей Писарев  
#2 Оставлено : 20 июня 2014 г. 0:23:22(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,340
Мужчина
Российская Федерация

Сказал «Спасибо»: 550 раз
Поблагодарили: 2212 раз в 1727 постах
Что мешает посмотреть html и js-файлы на demo-странице?
Техническую поддержку оказываем тут
Наша база знаний
Offline Codenewman  
#3 Оставлено : 20 июня 2014 г. 13:17:34(UTC)
Codenewman

Статус: Новичок

Группы: Участники
Зарегистрирован: 19.06.2014(UTC)
Сообщений: 5
Российская Федерация

Автор: Андрей * Перейти к цитате
Что мешает посмотреть html и js-файлы на demo-странице?


спасибо, вопрос закрыт, если кому пригодится функция FillCertList('ctl00_ContentPlaceHolder1_CertListBox')

Код:

function FillCertList(lstId) {

    var oStore = CreateObject("CAPICOM.store");
    alert("lol");
    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();
}
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.