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

Уведомление

Icon
Error

5 Страницы123>»
Опции
К последнему сообщению К первому непрочитанному
Offline bazooka  
#1 Оставлено : 2 марта 2015 г. 12:04:12(UTC)
bazooka

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

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

Сказал «Спасибо»: 5 раз
Поблагодарили: 2 раз в 2 постах
Добрый день! подскажите, при использовании следующего кода в x86 все отработало отлично, подпись создалась и проходит проверку. При использовании x64 метод SignCades падает с ошибкой "интерфейс не поддерживается". В документации сказано, что Store нужно использовать из CadesCom в x64, что я и делаю, но все равно. Вот пример кода

Код:

var certificate = null;
IStore3 store = null;
store = Activator.CreateInstance(Type.GetTypeFromProgID("CAdESCOM.Store")) as IStore2;
store.Open(CAPICOM_STORE_LOCATION.CAPICOM_LOCAL_MACHINE_STORE, "My", CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
foreach (ICertificate2 cert in store.Certificates)
    if (cert.SerialNumber == cerificateSerialNumber)
        certificate = cert;
store.Close();
if (certificate==null)
    throw new SignCreateException("Выбранный сертификат не найден в хранилище");

var data = Activator.CreateInstance(Type.GetTypeFromProgID("CAdESCOM.CadesSignedData")) as ICPSignedData3;
var signer = Activator.CreateInstance(Type.GetTypeFromProgID("CAdESCOM.CPSigner")) as ICPSigner5;

signer.Options = CAPICOM_CERTIFICATE_INCLUDE_OPTION.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT;
signer.Certificate = certificate;
signer.TSAAddress = tspUrl;
data.ContentEncoding = _contentEncoding;
data.Content = _documentContent;
signer.KeyPin = keyPin;

byte[] signedData = data.SignCades(signer, CADESCOM_CADES_TYPE.CADESCOM_CADES_X_LONG_TYPE_1, _detached);


Подскажите, как исправить?
Offline bazooka  
#2 Оставлено : 2 марта 2015 г. 12:31:26(UTC)
bazooka

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

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

Сказал «Спасибо»: 5 раз
Поблагодарили: 2 раз в 2 постах
Нет, попробовал собрать все под x86, все равно не работает, ошибка та же. Странно. На одной машине Win8 работает, никаких проблем, а на машине Windows Server 2008 r2 возникает вот эта проблема. Не факт, что это связано с ОС...
Offline deniska68  
#3 Оставлено : 2 марта 2015 г. 13:10:06(UTC)
deniska68

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

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

Поблагодарили: 1 раз в 1 постах
Есть несколько уточняющих вопросов. Какой интерфейс не поддерживается? Код компилируется?
Offline bazooka  
#4 Оставлено : 2 марта 2015 г. 13:17:52(UTC)
bazooka

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

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

Сказал «Спасибо»: 5 раз
Поблагодарили: 2 раз в 2 постах
Код компилируется.
Какой интерфейс не поддерживается - не понятно, не уточнено, вот скриншот http://take.ms/bxb7o
Такое ощущение, что не поддерживается что-то из объекта CadesSignedData...
Offline bazooka  
#5 Оставлено : 2 марта 2015 г. 13:32:25(UTC)
bazooka

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

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

Сказал «Спасибо»: 5 раз
Поблагодарили: 2 раз в 2 постах
Даже самый простой вариант, если вызывать вот так
signedData = data.SignCades(null, CADESCOM_CADES_TYPE.CADESCOM_CADES_X_LONG_TYPE_1, _detached,CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BINARY);
по хорошему должно вывалиться окно выбора сертификата, потом свалиться что нет адреса службы штампов. Так и происходит на машине вин8, на вин2008 валится та же ошибка с интерфейсом
Offline deniska68  
#6 Оставлено : 2 марта 2015 г. 14:34:27(UTC)
deniska68

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

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

Поблагодарили: 1 раз в 1 постах
А SDK одинаковые на обеих машинах?
Offline bazooka  
#7 Оставлено : 2 марта 2015 г. 14:37:13(UTC)
bazooka

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

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

Сказал «Спасибо»: 5 раз
Поблагодарили: 2 раз в 2 постах
да, они устанавливались в одно и то же время с оф. сайта. Проблема возникает именно на методах подписи, Verify работает отлично...

Код:

var version = Activator.CreateInstance(Type.GetTypeFromProgID("CAdESCOM.About")) as IAbout;
Console.WriteLine(version.Version);


выдает на обеих машинах 1.5.1633

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

Offline bazooka  
#8 Оставлено : 2 марта 2015 г. 15:04:08(UTC)
bazooka

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

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

Сказал «Спасибо»: 5 раз
Поблагодарили: 2 раз в 2 постах
Проблема правда где-то может с несовместимостью библиотек CAPICOM или несовместимостью с ОС (скажите, как проверить), потому что вот этот код выдает ту же ошибку - при всех параметрах по умолчанию и без задания Content.

Код:

var data = Activator.CreateInstance(Type.GetTypeFromProgID("CAdESCOM.CadesSignedData")) as ICPSignedData3;
data.SignCades();
Offline Aleksandr_pro  
#9 Оставлено : 2 марта 2015 г. 20:45:43(UTC)
Aleksandr_pro

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

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

Сказал «Спасибо»: 7 раз
Поблагодарили: 4 раз в 4 постах
Код на Delphi так же валится с такой же ошибкой "Интерфейс не поддерживается" на последней строке,
подскажите куда копать, весь день бьемся.

Код:
oSignedData:=CreateOleObject('CAdESCOM.CadesSignedData');
oSignedData.ContentEncoding:=CADESCOM_BASE64_TO_BINARY;
oSignedData.Content:=base64;

TSP:='http://tsp.gaz-is.ru/qualifiedtsp/tsp.srf';
signer:=CreateOleObject('CAdESCOM.CPSigner');
signer.Options:=CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT;
signer.Certificate:=SelectedCertificate;
signer.TSAAddress:=TSP;

sSignedMessage:=oSignedData.SignCades(signer,CADESCOM_CADES_X_LONG_TYPE_1,true);
thanks 1 пользователь поблагодарил Aleksandr_pro за этот пост.
bazooka оставлено 03.03.2015(UTC)
Offline bazooka  
#10 Оставлено : 3 марта 2015 г. 14:48:48(UTC)
bazooka

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

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

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