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

Уведомление

Icon
Error

3 Страницы<123>
Опции
К последнему сообщению К первому непрочитанному
Offline Новожилова Елена  
#21 Оставлено : 17 апреля 2013 г. 14:35:59(UTC)
Новожилова Елена

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

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

Поблагодарили: 84 раз в 81 постах
С отделенной подписью проблема. CryptoAPI умеет добавлять подписи только по уже известным алгоритмам хэширования. Тем, которые записаны в поле digestAlgorithms.

Есть предположение, что именно по этим алгоритмам хэшируются данные при вызове CryptMsgUpdate.

По этой же причине не удается добавить вторую отделенную подпись на любом алгоритме хэширования, отличном от использованного в первой - данных-то нет, хэш посчитать не получится.

Но, если заполнить поле DigestAlgorithms нужным алгоритмом (алгоритмами) заранее, то теоретически (я не проверяла) можно будет создавать подписи.

Остается вопрос, как это можно сделать при помощи CryptoAPI.

UPD. Возможно, сработает вариант "добавить подпись - удалить подпись". Но это уже на любителя :-)

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

thanks 1 пользователь поблагодарил Новожилова Елена за этот пост.
Boris@Serezhkin.com оставлено 17.04.2013(UTC)
Offline Юрий  
#22 Оставлено : 17 апреля 2013 г. 14:40:38(UTC)
Юрий

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

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 667
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 2 раз
Поблагодарили: 93 раз в 67 постах
Автор: Новожилова Елена Перейти к цитате
С отделенной подписью проблема. CryptoAPI умеет добавлять подписи только по уже известным алгоритмам хэширования. Тем, которые записаны в поле digestAlgorithms.

Есть предположение, что именно по этим алгоритмам хэшируются данные при вызове CryptMsgUpdate.

По этой же причине не удается добавить вторую отделенную подпись на любом алгоритме хэширования, отличном от использованного в первой - данных-то нет, хэш посчитать не получится.

Но, если заполнить поле DigestAlgorithms нужным алгоритмом (алгоритмами) заранее, то теоретически (я не проверяла) можно будет создавать подписи.

Остается вопрос, как это можно сделать при помощи CryptoAPI.

Вручную хэш посчитайте (CryptSignHash), да добавьте потом в качестве со-подписи.
И ещё - что значит "данных-то нет"? Подписываете то что?

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

С уважением,
Юрий Строжевский
Offline Boris@Serezhkin.com  
#23 Оставлено : 17 апреля 2013 г. 18:27:08(UTC)
Boris@Serezhkin.com

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 11 раз в 10 постах
Автор: Юрий Перейти к цитате

Вручную хэш посчитайте (CryptSignHash), да добавьте потом в качестве со-подписи.
И ещё - что значит "данных-то нет"? Подписываете то что?


Аксиома: вручную можно сделать все.
Речь идет о том, что CryptMsgControl(CMSG_CTRL_ADD_SIGNER)
падает на добавлении первой Detach подписи.
"данных-то нет" означает, что сами данные есть, а данных подписи нет.
И самое удивительное для Attached подписи данный вариант работает на ура.

Смотря на поведение системы можно сделать вывод:
Для Attached подписи алгоритм хэширования берется из сертификата,
что позволяет смешивать ГОСТ и RSA.
А для Detach подписи CryptMsgControl(CMSG_CTRL_ADD_SIGNER)пытается
взять алгоритм из существующей подписи. А его и нетути, и соответственно
нельзя мешать гост с не гостом. Вроде такое поведение говорит об Ошибке?Drool

Спасибо Елене, объяснила.

И напоследок самое веселое:
CryptSignMessage и иже с ним попал в список
"Unsupported CryptoAPI 2.0 in Windows CE 5.0"

Как ни крути, а придется считать хэш вручную.
или иметь две заготовки для пустой подписи и подкладывать их...
Offline Юрий  
#24 Оставлено : 17 апреля 2013 г. 18:36:58(UTC)
Юрий

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

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 667
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 2 раз
Поблагодарили: 93 раз в 67 постах
Автор: Boris@Serezhkin.com Перейти к цитате
Автор: Юрий Перейти к цитате

Вручную хэш посчитайте (CryptSignHash), да добавьте потом в качестве со-подписи.
И ещё - что значит "данных-то нет"? Подписываете то что?


Аксиома: вручную можно сделать все.
Речь идет о том, что CryptMsgControl(CMSG_CTRL_ADD_SIGNER)
падает на добавлении первой Detach подписи.
"данных-то нет" означает, что сами данные есть, а данных подписи нет.
И самое удивительное для Attached подписи данный вариант работает на ура.

Смотря на поведение системы можно сделать вывод:
Для Attached подписи алгоритм хэширования берется из сертификата,
что позволяет смешивать ГОСТ и RSA.
А для Detach подписи CryptMsgControl(CMSG_CTRL_ADD_SIGNER)пытается
взять алгоритм из существующей подписи. А его и нетути, и соответственно
нельзя мешать гост с не гостом. Вроде такое поведение говорит об Ошибке?Drool

Спасибо Елене, объяснила.

И напоследок самое веселое:
CryptSignMessage и иже с ним попал в список
"Unsupported CryptoAPI 2.0 in Windows CE 5.0"

Как ни крути, а придется считать хэш вручную.
или иметь две заготовки для пустой подписи и подкладывать их...

...Нет, жестко как-то первый раз написал...
Вообщем мой ответ Елене был на "...как это сделать с помощью Crypto API - не знаю". А не знает она как это сделать с помощью высокоуровневых функций Crypto API. С помощью низкоуровневых всё будет отлично.

P.S.: И всё-таки посмотрите может ли это сделать КриптоАРМ.

Отредактировано пользователем 17 апреля 2013 г. 18:43:34(UTC)  | Причина: Не указана

С уважением,
Юрий Строжевский
Offline Boris@Serezhkin.com  
#25 Оставлено : 17 апреля 2013 г. 20:29:26(UTC)
Boris@Serezhkin.com

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 11 раз в 10 постах
Автор: Юрий Перейти к цитате
P.S.: И всё-таки посмотрите может ли это сделать КриптоАРМ.


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

Я правильно понимаю, что спустившись на третий уровень сумрака....
1 CryptSignMrssage
2 CryptMsgControl
3 CryptSignHas
Я смогу получить Detach подпись для смеси алгоритмов?
Только там у меня пока Brick wall -собрать правильно обратно из кусочков
Не смотрел пока внимательно.
Offline Юрий  
#26 Оставлено : 17 апреля 2013 г. 20:50:45(UTC)
Юрий

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

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 667
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 2 раз
Поблагодарили: 93 раз в 67 постах
Нет, то что описали это только первый уровень этого сумрака :)

На самом деле придется переделывать "digestAlgorithms", как уже упоминала Елена, а для этого надо будет пользоваться "CryptEncodeObject" и спускаться к ASN.1 и понятиям SEQUENCE и SET.
Ибо как сказано в RFC5652 про "digestAlgorithms":
"Implementations MAY fail to validate signatures that use a digest algorithm that is not included in this set".

И вот уже потом пробовать добавлять подпись с другим алгоритмом.
С уважением,
Юрий Строжевский
Offline Юрий  
#27 Оставлено : 17 апреля 2013 г. 21:05:45(UTC)
Юрий

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

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 667
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 2 раз
Поблагодарили: 93 раз в 67 постах
А вообще-то в КриптоАРМ добавление подписи (присоединенной и отсоединенной) реализовано так:
1) Отдельно подписывается сообщение на добавляемом сертификате (то есть первичные данные, без подписей, подписываются новой подписью);
2) Из этой подписи получается CMSG_SIGNER_INFO;
3) Инициализируется новая структура типа CMSG_SIGNER_ENCODE_INFO, которая заполняется следующим образом (pSignerInfo это информация со второго шага):

SignerEncodeInfo.cbSize=sizeof(SignerEncodeInfo);
SignerEncodeInfo.hCryptProv=hProv;
SignerEncodeInfo.pvHashAuxInfo=NULL;
SignerEncodeInfo.dwKeySpec=AT_KEYEXCHANGE;
SignerEncodeInfo.HashAlgorithm.pszObjId=pSignerInfo->HashAlgorithm.pszObjId;
SignerEncodeInfo.HashAlgorithm.Parameters.cbData=pSignerInfo->HashAlgorithm.Parameters.cbData;
SignerEncodeInfo.HashAlgorithm.Parameters.pbData=pSignerInfo->HashAlgorithm.Parameters.pbData;
SignerEncodeInfo.pCertInfo=pCertContext->pCertInfo;
SignerEncodeInfo.cAuthAttr=pSignerInfo->AuthAttrs.cAttr;
SignerEncodeInfo.rgAuthAttr=pSignerInfo->AuthAttrs.rgAttr;
SignerEncodeInfo.cUnauthAttr=pSignerInfo->UnauthAttrs.cAttr;
SignerEncodeInfo.rgUnauthAttr=pSignerInfo->UnauthAttrs.rgAttr;

4) С помощью CryptMsgControl(CMSG_CTRL_ADD_SIGNER) добавляется подпись;
5) С помощью CryptMsgControl(CMSG_CTRL_ADD_CERT) добавляется сертификат подписанта;
6) С помощью CryptMsgGetParam(CMSG_ENCODED_MESSAGE) получается измененное сообщение, которое и сохраняется в файл;

Отредактировано пользователем 17 апреля 2013 г. 21:09:10(UTC)  | Причина: Не указана

С уважением,
Юрий Строжевский
Offline Юрий  
#28 Оставлено : 17 апреля 2013 г. 21:22:14(UTC)
Юрий

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

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 667
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 2 раз
Поблагодарили: 93 раз в 67 постах
Кстати рекомендую посмотреть в сторону CMSG_CTRL_ADD_CMS_SIGNER_INFO.
То есть тут тоже надо подписать "чистые данные", получить из них CMSG_SIGNER_INFO и сохранить всё, включая полученную подпись с помощью CryptMsgControl(CMSG_CTRL_ADD_CMS_SIGNER_INFO).
С уважением,
Юрий Строжевский
Offline Boris@Serezhkin.com  
#29 Оставлено : 17 апреля 2013 г. 21:27:23(UTC)
Boris@Serezhkin.com

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 11 раз в 10 постах
Автор: Юрий Перейти к цитате
Нет, то что описали это только первый уровень этого сумрака :)
...
И вот уже потом пробовать добавлять подпись с другим алгоритмом.


Все как в сказке, дальше в сумрак, ближе свет.
Кстати CryptEncodeObject вместе с Decode - Unsupported.
Пройдем дальше, к ASN1. Тут все ясно.
Стоит задача получить пустую структуру содержащую в себе "digestAlgorithms"
Заполненый гостом и негостом. подложить заготовку и все вроде должно заработать.
Даже Detach на смеси сертификатов.
Замечательно что эта структура просто обязана быть константой.
И не надо ее каждый раз вычислять, достаточно хранить.
Offline Boris@Serezhkin.com  
#30 Оставлено : 17 апреля 2013 г. 21:35:10(UTC)
Boris@Serezhkin.com

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 11 раз в 10 постах
Автор: Юрий Перейти к цитате
Кстати рекомендую посмотреть в сторону CMSG_CTRL_ADD_CMS_SIGNER_INFO.
То есть тут тоже надо подписать "чистые данные", получить из них CMSG_SIGNER_INFO и сохранить всё, включая полученную подпись с помощью CryptMsgControl(CMSG_CTRL_ADD_CMS_SIGNER_INFO).


Основная идея понятна.
Хочется учитывать "Unsupported"
Буду пробовать.

Стоп, стоп. О чем это я?
Подпись добавляется прекрасно.
Весь вопрос в добавлении первой подписи через CryptMsgControl
т.е. я заткнусь на первом шаге Angel

Отредактировано пользователем 17 апреля 2013 г. 21:41:24(UTC)  | Причина: понял что сказал не то

Offline Юрий  
#31 Оставлено : 18 апреля 2013 г. 6:02:16(UTC)
Юрий

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

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 667
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 2 раз
Поблагодарили: 93 раз в 67 постах
Автор: Boris@Serezhkin.com Перейти к цитате
Автор: Юрий Перейти к цитате
Нет, то что описали это только первый уровень этого сумрака :)
...
И вот уже потом пробовать добавлять подпись с другим алгоритмом.


Все как в сказке, дальше в сумрак, ближе свет.
Кстати CryptEncodeObject вместе с Decode - Unsupported.
Пройдем дальше, к ASN1. Тут все ясно.
Стоит задача получить пустую структуру содержащую в себе "digestAlgorithms"
Заполненый гостом и негостом. подложить заготовку и все вроде должно заработать.
Даже Detach на смеси сертификатов.
Замечательно что эта структура просто обязана быть константой.
И не надо ее каждый раз вычислять, достаточно хранить.

Эти функции являются основой обработки ASN.1 в Crypto API. "Deprecated" они заработали, возможно, просто потому что появились аналоги вида CryptEncodeObjectEx.

UPD: Вот, точно! Посмотрел http://msdn.microsoft.com/en-us/library/ms936955.aspx - именно CryptEncodeObjectEx и поддерживается. Но в общем странно равняться на Microsoft® Windows® CE 5.0, я так считаю.

Отредактировано пользователем 18 апреля 2013 г. 6:40:42(UTC)  | Причина: Не указана

С уважением,
Юрий Строжевский
Offline Новожилова Елена  
#32 Оставлено : 18 апреля 2013 г. 13:30:53(UTC)
Новожилова Елена

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

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

Поблагодарили: 84 раз в 81 постах
Я имела в виду, что с ходу не скажу, как при помощи CryptoAPI _добавить_ закодированную структуру digestAlgorithms в сообщение. Если только создать подпись, потом ее удалить и надеяться, что алгоритм удален не будет. А закодировать алгоритм - дело нехитрое :-)
Offline Boris@Serezhkin.com  
#33 Оставлено : 19 апреля 2013 г. 3:08:19(UTC)
Boris@Serezhkin.com

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 11 раз в 10 постах
Автор: Новожилова Елена Перейти к цитате
Я имела в виду, что с ходу не скажу, как при помощи CryptoAPI _добавить_ закодированную структуру digestAlgorithms в сообщение. Если только создать подпись, потом ее удалить и надеяться, что алгоритм удален не будет. А закодировать алгоритм - дело нехитрое :-)


Вобщем я так и поступил, и было мне счастье.
алгоритмы остались.
Теперь у меня есть две пустышки, первые детач подписи прекрасно добавляются.
Осталось скрестить их в одну.
Конечно можно остановиться и на этом. посмотрел алгоритм подписанта, взял нужную пустышку.
А если и этого можно избежать?

Поискал АСН1 редакторы, с ходу ничего внятного не нашел.
Может кто подскажет?

Как я понимаю в пустышке надо изменить число алгоритмов на 2
и добавить последовательность описывающую второй алгоритм.

Может кто-нибудь, например Елена Drool , сможет это для меня сделать?
Хочется проверить детач подпись со смесью алгоритмов.
Практического смысла это наверное не имеет, но хххочется.......

Борис

Отредактировано пользователем 19 апреля 2013 г. 3:08:58(UTC)  | Причина: Забыл пустышки прикламть.

Вложение(я):
EmptySHA1.txt (1kb) загружен 1 раз(а).
EmptyGost.txt (1kb) загружен 3 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Boris@Serezhkin.com  
#34 Оставлено : 19 апреля 2013 г. 3:22:10(UTC)
Boris@Serezhkin.com

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 11 раз в 10 постах
Автор: Юрий Перейти к цитате
Эти функции являются основой обработки ASN.1 в Crypto API. "Deprecated" они заработали, возможно, просто потому что появились аналоги вида CryptEncodeObjectEx.

Или еще почему, это важно?

Автор: Юрий Перейти к цитате
UPD: Вот, точно! Посмотрел http://msdn.microsoft.com/en-us/library/ms936955.aspx - именно CryptEncodeObjectEx и поддерживается. Но в общем странно равняться на Microsoft® Windows® CE 5.0, я так считаю.

А это меня переклинило, я посчитал, что это виндус8.
Хотя почему бы и не равняться?
Если я творю класс, то должен использовать общий минимум для максимального результата.

Offline Андрей Писарев  
#35 Оставлено : 19 апреля 2013 г. 7:40:37(UTC)
Андрей *

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

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

Сказал «Спасибо»: 342 раз
Поблагодарили: 1346 раз в 1045 постах
Автор: Boris@Serezhkin.com Перейти к цитате


Поискал АСН1 редакторы, с ходу ничего внятного не нашел.
Может кто подскажет?

Борис


Смотри в ЛС
Пользователь Андрей * прикрепил следующие файлы:
asn1editor.png (75kb) загружен 15 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Техническую поддержку оказываем тут
Наша база знаний
Offline Boris@Serezhkin.com  
#36 Оставлено : 19 апреля 2013 г. 14:13:37(UTC)
Boris@Serezhkin.com

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 11 раз в 10 постах
Седьмой и надеюсь последний последний уровень сумрака Dancing

Автор: Новожилова Елена Перейти к цитате
С отделенной подписью проблема. CryptoAPI умеет добавлять подписи только по уже известным алгоритмам хэширования. Тем, которые записаны в поле digestAlgorithms.

Как говорится:
Кот Матроскин написал:
Урра, заработало !!!

Скрестил две пустышки

Детач подпись прекрасно формируется на смеси сертификатов через CryptMsgControl.
И первая и последующие.
Кому интересно, результаты теста прилагаю.

Осталось непонятка, как в пустышку впихнуть данные? для присоединенной подписи.
Пока я использую CryptSignMessage с пустым списком подписантов.
Ну и потом opentodecode, update, control.

Наверное opentodecode(Attached), update(пустышка),update(данные), control.
Ну и последний вопрос как наиболее просто узнать что блоб не есть ASN1 ?
Вложение(я):
T_Sasha.log (1kb) загружен 0 раз(а).
EmptyBOTH.txt (1kb) загружен 0 раз(а).
dtc.txt (1kb) загружен 0 раз(а).
dtc.txt.sig.TXT (7kb) загружен 1 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Boris@Serezhkin.com  
#37 Оставлено : 19 апреля 2013 г. 19:42:43(UTC)
Boris@Serezhkin.com

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 11 раз в 10 постах
Anxious
Ты не радуйся змея, скоро выпустят меня....
Рано обрадовался.

Осталось реализовать удаление подписи. начал с детач.
удаляю по индексу нулевую, соответственно и сертификат подписанта по тому же индексу.
проверяю что получилось:
подписантов N-1, сертификатов N-1.
Берем первого из оставшихся и видим что сертификата для него нету.
Вспоминаем слова Елены, что сет подписантов сортируется по вышепотусторонним правилам ASN1
о размещении непонятно чего неизвестно где.
Распространяем высказывание на сертификаты подписантов и начинаем распространять уныние.
Получается что для удаления одной из подписей, даже единственной, а я знаю сколько их там,
по индексу или по другому критерию (сернорм,издатель или отпечаток или имя , издатель).
необходимо получить список подписантов, список их сертификатов,
установить соответствие по [сер.ном,издатель], посчитать отпечаток, а вдруг кто захочет.
удалить из одного списка по индексу Х, а из другого списка по индексу З. а индекс З может быть и -1
ну не приложили сертификат.
А потом не забыть соответствие перестроить, ибо никто не гарантирует поведение ASN1.
- Голова пухнет. Brick wall
нету недостижимой стройности.

Кстати после удаления подписи, так как я сказал вначале, КриптоАРМ на остаток говорит что все хорошо и сертификаты в порядке.
да, КриптоАрм прекрасно показывает Детач подпись на смеси алгоритмов, хотя сам этого делать не хочет
- недоработка?
Получается, что КриптоАрм лазит по локальным хранилищам для поиска сертификата подписанта.
Причем находит даже в хранилище с именем "ЕРУНДА" Drool
А если и я начну лазать где ни поподя и буду удалять серт не смотря где его нашел? Dancing

Offline Новожилова Елена  
#38 Оставлено : 23 апреля 2013 г. 10:25:44(UTC)
Новожилова Елена

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

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

Поблагодарили: 84 раз в 81 постах
Так вы сделайте проще - находите подпись, которую нужно удалить. Потом, среди сертификатов в сообщении пытаетесь найти тот, на котором она была сделана. Нашелся сертификат - удаляете. Не нашелся - еще лучше. Или вообще не удалять сертификат - а вдруг там было 2 подписи на одном сертификате :-)
Offline Boris@Serezhkin.com  
#39 Оставлено : 23 апреля 2013 г. 12:28:17(UTC)
Boris@Serezhkin.com

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 11 раз в 10 постах
Автор: Новожилова Елена Перейти к цитате
Так вы сделайте проще - находите подпись, которую нужно удалить. Потом, среди сертификатов в сообщении пытаетесь найти тот, на котором она была сделана. Нашелся сертификат - удаляете. Не нашелся - еще лучше.

Dancing - Именно сейчас я и пытаюсь реализовать ЭТО.
Не найтись не может, я же их сам и добавляю.
Автор: Новожилова Елена Перейти к цитате
Или вообще не удалять сертификат - а вдруг там было 2 подписи на одном сертификате :-)

А насчет "не удалять", так подпись разбухнет. Или это не страшно?
А придет сертификат неиспользованный? вроде это не красиво будет.
То что сейчас работает я делал через CAPICOM+VB6, так там есть кнопка "Снять ВСЕ подписи" - и по новой...
А сейчас хотят выборочно. У привереды...Drool
Борис

ЗЫ:
Все сделал, работает....

Отредактировано пользователем 23 апреля 2013 г. 13:48:04(UTC)  | Причина: Add PS

Offline Ахат  
#40 Оставлено : 23 августа 2013 г. 13:22:17(UTC)
Ахат

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

Группы: Участники
Зарегистрирован: 18.02.2011(UTC)
Сообщений: 11

Сказал(а) «Спасибо»: 5 раз
Задача: есть отсоединенная PKCS7 подпись, нужно добавить подпись, не загружая исходные данные, HCRYPTMSG между подписями закрывается.
Именно добавить подпись, а не подписать предыдущую подпись (CryptMsgCountersign).

Делаю CryptMsgControl(CMSG_CTRL_ADD_SIGNER), для которой заполняется CMSG_SIGNER_ENCODE_INFO,
причем туда в атрибуты копируется атрибут szOID_RSA_messageDigest (хеш исходных данных) из предыдущей подписи или посчитанный отдельно для обоих подписей.
В итоге CryptMsgGetParam(CMSG_ENCODED_MESSAGE) получаем при просмотре asn1 просмотрщиком, что вторая подпись содержит два атрибута szOID_RSA_messageDigest,
один - хэш пустых данных (981E5F3CA30C841487830F84FB433E13AC1101569B9C13584AC483234CD656C0), другой - наш, правильный.
Бывают 2 случая: 1 - наш правильный хэш идет до хэша от пустых данных, тогда проверка подписи дает, что она верна.
2 случай - если наоборот, тогда подпись не верна.

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