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

Уведомление

Icon
Error

3 Страницы123>
Опции
К последнему сообщению К первому непрочитанному
Offline proger_brut  
#1 Оставлено : 22 февраля 2012 г. 18:41:02(UTC)
proger_brut

Статус: Участник

Группы: Участники
Зарегистрирован: 22.02.2012(UTC)
Сообщений: 10
Откуда: Салават

подписываю с помощью capicom веб-форму JSом, подпись заноситься в hidden поле и отправляется по массиву POST,
проверяю с помощью SignedCms,
signedCms.Decode(encodedSignedCms); - получаю ошибку "Встречено неверное значение тега ASN1."
в чём проблема и есть ли другие варианты реализации проверки подписи?

Отредактировано пользователем 22 февраля 2012 г. 18:41:44(UTC)  | Причина: Не указана

Offline Андрей Писарев  
#2 Оставлено : 22 февраля 2012 г. 20:52:32(UTC)
Андрей *

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

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

Сказал «Спасибо»: 550 раз
Поблагодарили: 2212 раз в 1727 постах
proger_brut написал:
подписываю с помощью capicom веб-форму JSом, подпись заноситься в hidden поле и отправляется по массиву POST,
проверяю с помощью SignedCms,
signedCms.Decode(encodedSignedCms); - получаю ошибку "Встречено неверное значение тега ASN1."
в чём проблема и есть ли другие варианты реализации проверки подписи?



а где собственно текст\код\выложенные примеры файлов\ЭЦП ?
Техническую поддержку оказываем тут
Наша база знаний
Offline proger_brut  
#3 Оставлено : 22 февраля 2012 г. 21:40:26(UTC)
proger_brut

Статус: Участник

Группы: Участники
Зарегистрирован: 22.02.2012(UTC)
Сообщений: 10
Откуда: Салават

JS, подпись формы.
Код:
 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 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 cadesobject = document.getElementById("cadesplugin");
                    return cadesobject.CreateObject(name);
            }
        }

        function GetVal() {
            var str = '';
            var elems = document.getElementById('signData').getElementsByTagName('INPUT');
            for (var i = 0; i < elems.length; i++) {
                str += elems[i].value;
            }
            alert(str);
        }

        function SignCreate(certSubjectName, dataToSign) {
            var oStore = CreateObject("CAPICOM.Store");
            oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
            var oCertificates = oStore.Certificates.Select();
            if (oCertificates.Count == 0) {
                alert("Certificate not found");
                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 Verify(sSignedMessage) {
            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 run() {
            var signedMessage = SignCreate("erwer", GetVal());
            var verifyResult = Verify(signedMessage);
            if (verifyResult) {
                document.data.signedForm.value = signedMessage;
                //alert("Signature verified");
            }
        }

        function isPluginInstalled() {
            switch (navigator.appName) {
                case 'Microsoft Internet Explorer':
                    try {
                        var obj = new ActiveXObject("CAdESCOM.CPSigner");
                        return true;
                    }
                    catch (err) { }
                    break;
                default:
                    var mimetype = navigator.mimeTypes["application/x-cades"];
                    if (mimetype) {
                        var plugin = mimetype.enabledPlugin;
                        if (plugin) {
                            return true;
                        }
                    }
            }
            return false;
        }




файл .cs, весь код прикреплять не стал, т.к выходит ошибка.

Код:
byte[] encodedSignedCms = System.Text.Encoding.Default.GetBytes(Request.Params["SignedForm"]);

byte[] srcData = System.Text.Encoding.Default.GetBytes(Request.Params["user"]+Request.Params["name"]);

ContentInfo contentInfo = new ContentInfo(srcData);

SignedCms signedCms = new SignedCms(contentInfo, true);
signedCms.Decode(encodedSignedCms);
тут ошибка


сразу говорю, форма подписывается, пост массив приходит.
Offline Андрей Писарев  
#4 Оставлено : 22 февраля 2012 г. 21:56:08(UTC)
Андрей *

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

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

Сказал «Спасибо»: 550 раз
Поблагодарили: 2212 раз в 1727 постах
файлы, файлы где?

"подписанные данные"
Техническую поддержку оказываем тут
Наша база знаний
Offline proger_brut  
#5 Оставлено : 22 февраля 2012 г. 22:17:27(UTC)
proger_brut

Статус: Участник

Группы: Участники
Зарегистрирован: 22.02.2012(UTC)
Сообщений: 10
Откуда: Салават

не смог найти где прикреплять файлы Angel а зачем вообще их прикреплять? весь код лежит тут
Offline Андрей Писарев  
#6 Оставлено : 22 февраля 2012 г. 22:29:02(UTC)
Андрей *

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

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

Сказал «Спасибо»: 550 раз
Поблагодарили: 2212 раз в 1727 постах
proger_brut написал:
не смог найти где прикреплять файлы Angel а зачем вообще их прикреплять? весь код лежит тут


например http://rghost.ru





сделай ЭЦП в base64 на клиенте..
на стороне сервера: cms.Decode(Convert.FromBase64String(Signed_Data));

Цитата:
а зачем вообще их прикреплять? весь код лежит тут


и
Цитата:

"Встречено неверное значение тега ASN1.


интересно взглянуть на то, что "пришло" и в каком виде...


Отредактировано пользователем 22 февраля 2012 г. 22:31:48(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#7 Оставлено : 22 февраля 2012 г. 22:33:48(UTC)
Андрей *

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

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

Сказал «Спасибо»: 550 раз
Поблагодарили: 2212 раз в 1727 постах
Цитата:
byte[] encodedSignedCms = System.Text.Encoding.Default.GetBytes(Request.Params["SignedForm"]);

byte[] srcData = System.Text.Encoding.Default.GetBytes(Request.Params["user"]+Request.Params["name"]);

ContentInfo contentInfo = new ContentInfo(srcData);

SignedCms signedCms = new SignedCms(contentInfo, true);
signedCms.Decode(encodedSignedCms);
тут ошибка



здесь все понятно, что происходит?

допустим encodedSignedCms =
Цитата:
на клиенте: var sSignedMessage = oSignedData.SignCades(oSigner, CADESCOM_CADES_X_LONG_TYPE_1);


а зачем srcData (contentInfo) передается в SignedCms ( )?

Отредактировано пользователем 22 февраля 2012 г. 22:40:29(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline proger_brut  
#8 Оставлено : 22 февраля 2012 г. 23:16:31(UTC)
proger_brut

Статус: Участник

Группы: Участники
Зарегистрирован: 22.02.2012(UTC)
Сообщений: 10
Откуда: Салават

http://rghost.ru/36654872

http://rghost.ru/36654876

Цитата:
а зачем srcData (contentInfo) передается в SignedCms ( )?


а с чем он будет сравнивать если подпись отделенная?
Offline Андрей Писарев  
#9 Оставлено : 22 февраля 2012 г. 23:22:39(UTC)
Андрей *

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

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

Сказал «Спасибо»: 550 раз
Поблагодарили: 2212 раз в 1727 постах
proger_brut написал:
http://rghost.ru/36654872

http://rghost.ru/36654876

Цитата:
а зачем srcData (contentInfo) передается в SignedCms ( )?


а с чем он будет сравнивать если подпись отделенная?


не разглядел что-то... а где указано, что она отделенная??

у тебя же даже в коде (твой?)
Цитата:
function Verify(sSignedMessage)

не передается исходный текст, т.к. ЭЦП - присоединенная

Отредактировано пользователем 22 февраля 2012 г. 23:24:50(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline proger_brut  
#10 Оставлено : 22 февраля 2012 г. 23:24:16(UTC)
proger_brut

Статус: Участник

Группы: Участники
Зарегистрирован: 22.02.2012(UTC)
Сообщений: 10
Откуда: Салават

Цитата:
не разглядел что-то... а где указано, что она отделенная??


если подпись и данные передаются раздельно, то подпись считается отделенной?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (7)
3 Страницы123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.