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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline 4058  
#1 Оставлено : 20 января 2016 г. 16:26:19(UTC)
4058

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

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

Добрый день.

Мне необходимо получить информацию о сертификатах и штампе времени из ЭЦП.

На данный момент для этой цели я использую CadesCOM, псевдо-код (C#):

Код:

var SignedData = CreateSignedData();
SignedData.ContentEncoding = CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY;
SignedData.Content = data;

SignedData.VerifyCades(sign, CADESCOM_CADES_TYPE.CADESCOM_CADES_DEFAULT, true);

// SignedData.Certificates - получили сертификаты
                
foreach (var signer in SignedData.Signers)
{
	ICPSigner3 isigner = signer as ICPSigner3;

	if (isigner != null)
        	// isigner.SignatureTimeStampTime - получили штамп
}


т.е. делаю проверку ЭЦП, в результате которой в объекте SignedData получаю заполненные коллекции Certificates и Signers.

Вопрос: каким образом при помощи CadesCOM или КриптоПро .NET можно извлечь сертификаты/штамп без осуществления проверки ЭЦП?

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

Offline cross  
#2 Оставлено : 21 января 2016 г. 11:55:31(UTC)
Анатолий Беляев

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

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Внутренние структуры заполняются только при проверке. Без нее не получится получить доступ к внутренностям подписи.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline 4058  
#3 Оставлено : 21 января 2016 г. 12:20:40(UTC)
4058

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

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

Автор: cross Перейти к цитате
Внутренние структуры заполняются только при проверке. Без нее не получится получить доступ к внутренностям подписи.


Для обычной ЭЦП (не Cades) это можно сделать при помощи уже имеющегося API в составе .NET Framework:

Код:
System.Security.Cryptography.Pkcs.SignedCms cms = new System.Security.Cryptography.Pkcs.SignedCms();
cms.Decode([массив байт]); // просто декодировали ЭЦП (без проверки)

-- в cms.Certificates после вызова Decode получим коллекцию сертификатов


Однако если это сделать для расширенной ЭЦП, то коллекция Certificates будет пустой, да и многие остальные свойства экземпляра SignedCms молча остаются пустыми.

Можно ли каким-либо другим API (например КриптоПро .NET (ex Sharpei), или более низкоуровневый) извлечь эти данные из расширенной подписи?
Offline Павел Смирнов  
#4 Оставлено : 25 января 2016 г. 9:59:10(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Автор: 4058 Перейти к цитате
Можно ли каким-либо другим API (например КриптоПро .NET (ex Sharpei), или более низкоуровневый) извлечь эти данные из расширенной подписи?

Можно. См., например, CadesMsgGetCertificateValues. Звать её нужно через P/Invoke из cades.dll.

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