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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline SamOF  
#1 Оставлено : 5 мая 2023 г. 12:56:48(UTC)
SamOF

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

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

Добрый день, при подписании документа , подпись валидная , а при сохранении подписи в отдельный файл, ошибка , неправильное значение контрольной суммы.
Код:
var CADESCOM_CADES_BES = 1;
    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 CADESCOM_BASE64_TO_BINARY = 1;

    function SignCreate(certSubjectName, dataInBase64,documentId,allSignCount) {
        return new Promise(function (resolve, reject) {
            cadesplugin.async_spawn(function* (args) {
                var oStore = yield cadesplugin.CreateObjectAsync("CAdESCOM.Store");
                yield oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE,
                CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);

                var oStoreCerts = yield oStore.Certificates;
                var oCertificates = yield oStoreCerts.Find(
                CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME, certSubjectName);
                var certsCount = yield oCertificates.Count;
                if (certsCount === 0) {
                    err = "Certificate not found: " + certSubjectName;
                    alert(err);
                    return args[1](err);
                }
                var oCertificate = yield oCertificates.Item(1);
                var oSigner = yield cadesplugin.CreateObjectAsync("CAdESCOM.CPSigner");
                yield oSigner.propset_Certificate(oCertificate);
                yield oSigner.propset_CheckCertificate(true);

                var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
                // Значение свойства ContentEncoding должно быть задано
                // до заполнения свойства Content
                yield oSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY);
                yield oSignedData.propset_Content(dataInBase64);

                var sSignedMessage = "";
                try {
                    sSignedMessage = yield oSignedData.SignCades(oSigner, CADESCOM_CADES_BES, true);
                } catch (err) {
                    e = cadesplugin.getLastError(err);
                    alert("Failed to create signature. Error: " + e);
                    return args[1](e);
                }
                // console.log(sSignedMessage);
                console.log(sSignedMessage);
            console.log(sSignedMessage.length);
            // console.log(allSignCount);
            // document.getElementById("SignatureTxtBox").innerHTML = Signature;
            
            ajaxPost(pathToSql,"signature="+sSignedMessage+"&documentId="+documentId,false);
            ajaxPost(pathToSql,"documentId="+documentId+"&getCDA="+true,false);
            
            // if (send == '1' || send == 1) {
            //     alert('Подпись сформирована успешно');
            // } 
            if (allSignCount == 1) {
                alert ('Документы успешно подписаны');
                let postData = 'shtatId='+ null;
                ajaxPost(pathToSql,postData,false,false);
                setOrderList();
            }
                yield oStore.Close();
                return args[0](sSignedMessage);
            }, resolve, reject);
        });
    }

    function Verify(sSignedMessage, dataInBase64) {
        return new Promise(function (resolve, reject) {
            cadesplugin.async_spawn(function* (args) {
                var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
                try {
                    // Значение свойства ContentEncoding должно быть задано
                    // до заполнения свойства Content
                    yield oSignedData.propset_ContentEncoding(CADESCOM_BASE64_TO_BINARY);
                    yield oSignedData.propset_Content(dataInBase64);
                    yield oSignedData.VerifyCades(sSignedMessage, CADESCOM_CADES_BES, true);
                } 
                catch (err) {
                    var e = cadesplugin.getLastError(err);
                    alert("Failed to verify signature. Error: " + e);
                    return args[1](e);
                }
                return args[0]();
            }, resolve, reject);
        });
    }

 let getTextToSign; 
  getTextToSign = ajaxPost(pathToSql,"documentId="+documentId+"&getCDA="+true,false,true);
  txtBoxToSign.textContent = getTextToSign;
  console.log(txtBoxToSign.value);
  // let textTosign = txtBoxToSign.textContent;
  // let getShtatId;
  // getShtatId = ajaxPost(pathToSql,"documentId="+documentId+"&getShtat="+true,false,false,true);

  // Common_CreateSimpleSign(allSignCount,documentId,"CertListBox");
  // Common_SignCadesBES(allSignCount,documentId,"CertListBox");
  var oCertName = document.getElementById("subject");
        var sCertName = 'Андрей'; // Здесь следует заполнить SubjectName сертификата
        console.log(sCertName);
        if ("" === sCertName) {
            alert("Введите имя сертификата (CN).");
            return;
        }
        // Предварительно закодированные в BASE64 бинарные данные
        // В данном случае закодирована строка "Some Data."
        var dataInBase64 = Base64.encode(txtBoxToSign.value);

        // Подписаны будут исходные бинарные данные (в данном случае - "Some Data.")
        // Такая подпись должна проверяться в КриптоАРМ и cryptcp.exe

        SignCreate(sCertName, dataInBase64,documentId,allSignCount).then(
            function (signedMessage) {
                console.log(signedMessage);
                Verify(signedMessage, dataInBase64).then(
                    function () {
                        alert("Signature verified");
                    },
                    function (err) {
                      console.log(err);
                    });
            },
            function (err) {
              console.log(err);
            }
        );
}

Из базы получаю документ в виде xml , подписываю его, получаю сообщение Signature verified.
А после если сохраняю подпись отдельно и xml отдельно проврека выдает ошибку, уже все перепробывал в чем может быть ошибка ?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.