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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline EVoynov  
#1 Оставлено : 14 июня 2013 г. 13:38:25(UTC)
EVoynov

Статус: Активный участник

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

Сказал(а) «Спасибо»: 7 раз
Пример кода, которым идет подписание:

Код:
using CAPICOM;
...
var oSigner = new Signer
{
	Certificate = found
};

// В подпись добавляем время на момент начала подписания
var oSigningTime = new CAPICOM.Attribute
{
	Name = CAPICOM_ATTRIBUTE.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME,
	Value = DateTime.UtcNow
};
oSigner.AuthenticatedAttributes.Add(oSigningTime);

var oSignedData = new SignedData
{
	Content = sMessage
};

var sSignedMessage = oSignedData.Sign(oSigner, true, CAPICOM.CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64);


Подскажите, что означает ошибка "80880262: The message has not been signed" и в каком направлении с ней разбираться?
Offline Kirill Sobolev  
#2 Оставлено : 14 июня 2013 г. 14:26:05(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
С помощью, например, csptest подпись проверяется?
Вы делаете отделенную подпись, при проверке это учитывается?
Техническую поддержку оказываем тут
Наша база знаний
Offline EVoynov  
#3 Оставлено : 14 июня 2013 г. 14:48:25(UTC)
EVoynov

Статус: Активный участник

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

Сказал(а) «Спасибо»: 7 раз
Проверить через csptest затруднительно, т.к. данные для подписи готовятся не совсем прозрачным способом.
При проверке все учитывается.

Более того, подпись, сделанная через браузер+Capicom, проверяется успешно, т.е. проблема в том, что подпись сделана в одной среде, а проверяется в другой (хотя по идее использоваться должны одни и те же dll'ки):
Код:
var oUtilities = createObject("CAPICOM.Utilities");                                       
                                                                                          
var oSignedData = createObject("CAPICOM.SignedData");                                     
var oSigner = createObject("CAPICOM.Signer");                                             
oSigner.Certificate = oCertificate;                                                       
                                                                                          
var oSigningTime = createObject("CAPICOM.Attribute");                                     
oSigningTime.Name = CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME;                         
oSigningTime.Value = oUtilities.LocalTimeToUTCTime(convertDate(appServDate));             
oSigner.AuthenticatedAttributes.Add(oSigningTime);                                        
                                                                                          
oSignedData.Content = base64Text;                                                         
var sSignedMessage = oSignedData.Sign(oSigner, DETACHED_SIGNATURE, CAPICOM_ENCODE_BASE64);



Подскажите, пожалуйста, в каких случаях выдается все-таки эта ошибка "0880262: The message has not been signed"?
К сожалению поиск по просторам интернета не дает абсолютно ничего по этой теме, поэтому и решили обратиться к вам.
Offline Kirill Sobolev  
#4 Оставлено : 14 июня 2013 г. 15:35:21(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Ошибка выдается в случае, когда на проверку подаются неподписанные данные.
Поэтому сохранение результата и проверка чем-то отличным от Вашего кода или хотя бы просто ASN.1 дамп - это первый шаг для диагностики причины.
Интероп в .NET какой используете?
Техническую поддержку оказываем тут
Наша база знаний
Offline EVoynov  
#5 Оставлено : 14 июня 2013 г. 18:20:11(UTC)
EVoynov

Статус: Активный участник

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

Сказал(а) «Спасибо»: 7 раз
Вот что получил в консоли:

Цитата:
C:\crypto-pro\csptest>csptest -sfsign -verify -detached -in sign.sig -signature
data.txt -my "Воронцова Любовь"
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Windows CPU:IA32 FastCode:RE
ADY,ENABLED.
#0:
Subject: SERIALNUMBER=123456789012, OID.1.2.840.113549.1.9.2=1234567890, ИНН=123
4567890, E=123456789012@ekey.rosreestr.ru, C=RU, S=59 - Пермский край, L=Москва,
O=Крок, OU=ДИТ-ПО, T=ведущий инженер-тестировщик, CN=Воронцова Любовь
Valid : 06.12.2012 - 06.12.2013
Issuer : E=contact@ekey.ru, C=RU, L=Москва, O=ЗАО Удостоверяющий центр, CN=CA ek
ey.ru

An error occurred in running the program.
.\signtsf.c:679:Detached Signature was NOT verified

Error number 0x8009310b (2148086027).
Встречено неверное значение тега ASN1.

Total: SYS: 0,031 sec USR: 0,016 sec UTC: 0,078 sec
[ErrorCode: 0x8009310b]


В аттаче приложил архив с файлом подписи, контентом, экспортированным сертификатом и интеропом (он сгенерен 2010-й студией).
Вложение(я):
csptest.zip (31kb) загружен 6 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Kirill Sobolev  
#6 Оставлено : 17 июня 2013 г. 11:38:08(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
В csptest еще укажите опцию -base64, т.к. подпись в base64.
Правильный интероп рекомендуется взять отсюда.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Кирилл Соболев за этот пост.
EVoynov оставлено 17.06.2013(UTC)
Offline EVoynov  
#7 Оставлено : 17 июня 2013 г. 15:45:24(UTC)
EVoynov

Статус: Активный участник

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

Сказал(а) «Спасибо»: 7 раз
Интероп попробуем, а с добавлением опции -base64 ошибка теперь такая:

Цитата:
An error occurred in running the program.
.\signtsf.c:596:Base64 conversion error
Error number 0x80092002 (2148081666).
Ошибка при шифровании или расшифровывании.
Offline Kirill Sobolev  
#8 Оставлено : 17 июня 2013 г. 18:01:21(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Перепутаны данные и подпись, параметр in - это данные, signature - это подпись.
Техническую поддержку оказываем тут
Наша база знаний
Offline EVoynov  
#9 Оставлено : 18 июня 2013 г. 12:57:07(UTC)
EVoynov

Статус: Активный участник

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

Сказал(а) «Спасибо»: 7 раз
Теперь ошибка такая:

Цитата:
Error number 0x80091007 (2148077575).
Неправильное значение хеша.


Поможет ли переход на вашу версию интеропа в этой проблеме?
Как я понял, ваша версия интеропа решают проблему превращения base64-строки в правильный массив байт. Так ли это?
Есть также соседняя ветка, только там проблема с JCP (проверка в нем, а подпись через cadescom). Может быть у вас есть возможность там тоже что-то посоветовать?
Offline Kirill Sobolev  
#10 Оставлено : 18 июня 2013 г. 13:23:05(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Цитата:
Поможет ли переход на вашу версию интеропа в этой проблеме?

Должна. А вообще гораздо лучше перейти на классы .NET, SignedCms очень просто устроен.
Цитата:
Как я понял, ваша версия интеропа решают проблему превращения base64-строки в правильный массив байт. Так ли это?

Наш интероп решает проблему подписи данных произвольной длины, в то время как тот, который генерит VS, умеет правильно подписывать только данные четной длины.
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.