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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline SergyCh  
#1 Оставлено : 14 января 2015 г. 13:28:04(UTC)
SergyCh

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

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

Сказал(а) «Спасибо»: 1 раз
С помощью КриптоПро ЭЦП Browser plug-in подписываю рисунок. Делаю это так: Предварительно средствами php получаю base64 рисунка и передаю base64 в плагин, получаю ответ, провожу верификацию, отправляю полученные данные снова на сервер и сохраняю их в файл с расширением .sig Пытаюсь проверить криптоармом, получаю вот эту ошибку http://www.screencapture.ru/file/171c001B
Вот код:
Код:

var CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0; 
			var CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0; 
			var CADESCOM_CADES_BES = 0x01;
			var CAPICOM_ENCODE_BASE64 = 0;
			var CADESCOM_CADES_DEFAULT = 0;
			var CAPICOM_OID_KEY_ATTRIBUTES_EXTENSION = 2;
			var CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;
			var CADESCOM_BASE64_TO_BINARY = 0x01;
			var CADESCOM_CADES_X_LONG_TYPE_1 = 0x5D;
			var CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;
			var CADESCOM_BASE64_TO_BINARY1 = 1;
			var CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;
			
var oCerts = oStore.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SHA1_HASH, certSelecteed);//certSelecteed - выбранный сертификат

	if (oCerts.Count == 0) {
		alert("Certificate not found");
		return;
	}
var oCert = oCerts.Item(1);
	oSigner.Certificate = oCert; 
	
	if (txtDataToSign.length > 0) {  //txtDataToSign - base64 данные, полученные средствами php (base64_encode())
					 oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY; 
				  	 
						oSignedData.Content = txtDataToSign; 
					   
							try {
								var sSignedData = oSignedData.SignCades(oSigner,CADESCOM_CADES_BES, false,CAPICOM_ENCODE_BASE64);	
							}
							catch (e) {
								alert("Не удалось подписать из-за ошибки: " + GetErrorMessage(e));
								return;
							}
							 
					} else {
						alert("Set data to Sign");
					}
					
					try {
            oSignedData.VerifyCades(sSignedData, CADESCOM_CADES_BES, false);
			 
        } catch (err) {
            alert("Failed to verify signature. Error: " + GetErrorMessage(err));
            return false;
        }
        //Далее отправляю sSignedData на сервер
        


Уже не знаю куда копать...
Offline Новожилова Елена  
#2 Оставлено : 14 января 2015 г. 14:09:01(UTC)
Новожилова Елена

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

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
Вы проверяете в КриптоАРМ подпись как отделенную? Тогда надо создавать отделенную подпись.
То есть передавать в SignCades параметр bDetached = true
http://cpdn.cryptopro.ru...28a937b412bdff182dd.html

Если же вы проверяете подпись как совмещенную, то убедитесь, что подпись в BASE64 передана на сервер полностью.

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

thanks 1 пользователь поблагодарил Новожилова Елена за этот пост.
SergyCh оставлено 15.01.2015(UTC)
Offline SergyCh  
#3 Оставлено : 15 января 2015 г. 10:52:36(UTC)
SergyCh

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

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

Сказал(а) «Спасибо»: 1 раз
попытался сделать как отделённую, та же ошибка.(((
У меня было подозрение на ошибку в данных в base64, которые я получал с php, и передавал в oSignedData.Content. Но проверил certutil'ом, всё идентично.
Offline SergyCh  
#4 Оставлено : 15 января 2015 г. 11:30:02(UTC)
SergyCh

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

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

Сказал(а) «Спасибо»: 1 раз
Попробовал простой текстовый файл подписать. всё получилось. Буду решать вопрос с рисунком.)))
Offline SergyCh  
#5 Оставлено : 15 января 2015 г. 13:23:39(UTC)
SergyCh

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

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

Сказал(а) «Спасибо»: 1 раз
Проблему решил. Всё по невнимательности. Сервер заменил "+" на пробел.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.