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

Уведомление

Icon
Error

6 Страницы123>»
Опции
К последнему сообщению К первому непрочитанному
Offline poiree  
#1 Оставлено : 13 декабря 2011 г. 18:44:08(UTC)
poiree

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

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

Добрый день. Прошу помощи в моей проблеме.
С помощью тестового центра Крипто Про создал сертификат с закрытым ключом. Записал его в Реестр программы Крипто Про 2.0. Обменялись сертификатами с другой стороной.
Теперь мне нужно с помощью этого сертификата подписывать ЭЦП. Но не получается!
Код:

CryptAcquireContext(Prov, PChar('07699e38-b42c-483c-86c2-82e1166eab25'), MS_DEF_RSA_SIG_PROV, PROV_RSA_FULL, 0);
  Stream.LoadFromFile('E:\ProgStarTeam\GATE_ManagerUnionGates_ss_la\Data\test.key');
  CryptGetUserKey(Prov, AT_SIGNATURE, PKey);

с помощь функции CryptAcquireContext я предполагаю подключиться к этому Реестру, в котором находятся сертификаты и получить доступ к закрытому ключу. Имя реестра - 07699e38-b42c-483c-86c2-82e1166eab25, его я и указываю в pszContainer. Верно ли я понимаю, что там нужно указывать имя реестра? итог таков, что даже эта функция не проходит и значение Prov остается равным 0. Какие может быть параметры передаю неверные, или что?
Offline Андрей Писарев  
#2 Оставлено : 13 декабря 2011 г. 18:59:38(UTC)
Андрей *

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

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

Сказал «Спасибо»: 547 раз
Поблагодарили: 2196 раз в 1714 постах
poiree написал:
Добрый день. Прошу помощи в моей проблеме.
С помощью тестового центра Крипто Про создал сертификат с закрытым ключом. Записал его в Реестр программы Крипто Про 2.0. Обменялись сертификатами с другой стороной.
Теперь мне нужно с помощью этого сертификата подписывать ЭЦП. Но не получается!
Код:

CryptAcquireContext(Prov, PChar('07699e38-b42c-483c-86c2-82e1166eab25'), MS_DEF_RSA_SIG_PROV, PROV_RSA_FULL, 0);
  Stream.LoadFromFile('E:\ProgStarTeam\GATE_ManagerUnionGates_ss_la\Data\test.key');
  CryptGetUserKey(Prov, AT_SIGNATURE, PKey);

с помощь функции CryptAcquireContext я предполагаю подключиться к этому Реестру, в котором находятся сертификаты и получить доступ к закрытому ключу. Имя реестра - 07699e38-b42c-483c-86c2-82e1166eab25, его я и указываю в pszContainer. Верно ли я понимаю, что там нужно указывать имя реестра? итог таков, что даже эта функция не проходит и значение Prov остается равным 0. Какие может быть параметры передаю неверные, или что?


0) КриптоПро CSP 2.0, 1.1 Silenced
1) Delphi ? (до 2009 ?)
2) Крипто Про и
Цитата:
MS_DEF_RSA_SIG_PROV, PROV_RSA_FULL
Silenced ???
3) Какие "заголовочные" файлы для обращения к CryptoApi используешь?

Отредактировано пользователем 13 декабря 2011 г. 19:02:20(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline poiree  
#3 Оставлено : 13 декабря 2011 г. 19:12:13(UTC)
poiree

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

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

Андрей * написал:

0) КриптоПро CSP 2.0, 1.1 Silenced
1) Delphi ? (до 2009 ?)
2) Крипто Про и
Цитата:
MS_DEF_RSA_SIG_PROV, PROV_RSA_FULL
Silenced ???
3) Какие "заголовочные" файлы для обращения к CryptoApi используешь?


Добрый день.
Да, я использую КриптоПро 2.0
Делфи 2010.
Использую JwaWinCrypt.
А что с параметрами MS_DEF_RSA_SIG_PROV, PROV_RSA_FULL? Они не состыкуются? Что там надо использовать?
Offline Андрей Писарев  
#4 Оставлено : 13 декабря 2011 г. 19:21:42(UTC)
Андрей *

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

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

Сказал «Спасибо»: 547 раз
Поблагодарили: 2196 раз в 1714 постах
Для начала:
посмотреть все ветки по созданию ЭЦП ;)
есть примеры и для Delphi



Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#5 Оставлено : 13 декабря 2011 г. 19:23:33(UTC)
Андрей *

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

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

Сказал «Спасибо»: 547 раз
Поблагодарили: 2196 раз в 1714 постах
поиск по ключевым словам\названиям функций,
просмотр ветки "Встраивание"


Техническую поддержку оказываем тут
Наша база знаний
Offline poiree  
#6 Оставлено : 13 декабря 2011 г. 19:33:55(UTC)
poiree

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

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

Андрей * написал:
Для начала:
посмотреть все ветки по созданию ЭЦП ;)
есть примеры и для Delphi

Поверьте, я уже весь инет облизал с этим ЭЦП - все не то...
хотя бы вот
http://mimicria.ru/2009/...cryptoapi/comment-page-1
но это тоже не сильно помогает.
Offline Андрей Писарев  
#7 Оставлено : 13 декабря 2011 г. 20:07:19(UTC)
Андрей *

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

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

Сказал «Спасибо»: 547 раз
Поблагодарили: 2196 раз в 1714 постах
poiree написал:
Андрей * написал:
Для начала:
посмотреть все ветки по созданию ЭЦП ;)
есть примеры и для Delphi

Поверьте, я уже весь инет облизал с этим ЭЦП - все не то...
хотя бы вот
http://mimicria.ru/2009/...cryptoapi/comment-page-1
но это тоже не сильно помогает.



на данном форуме + на старом = все есть, уж поверь


p.s.
а ЭЦП через COM (Capicom) - уже осилил? или сразу, за CryptoAPI ;)

Отредактировано пользователем 13 декабря 2011 г. 20:09:28(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline poiree  
#8 Оставлено : 14 декабря 2011 г. 14:56:41(UTC)
poiree

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

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

Андрей * написал:

на данном форуме + на старом = все есть, уж поверь
p.s.
а ЭЦП через COM (Capicom) - уже осилил? или сразу, за CryptoAPI ;)


Андрей, тут однозначно что-то не так, подскажите, пожалуйста!
Я, так и быть, решил сделать совершенно стандартную подпись без использования каких-то там уже имеющихся контейнеров, созданных с помощью КриптоПро 2.0 - ничего лишнего!
Вот:
Код:

Result:='';
  CryptAcquireContext(@Prov,nil,nil,PROV_RSA_FULL,0);
  CryptCreateHash(Prov,CALG_MD5,0,0,@Hash);
  CryptHashData(Hash,PByte(sMessage),Length(sMessage),0);
  BufLen:=0;
  CryptSignHash(Hash,AT_SIGNATURE,nil,0,nil,@BufLen);
  if BufLen>0 then begin

    SetLength(Result,BufLen);
    CryptSignHash(Hash,AT_SIGNATURE,nil,0,PByte(Result),@BufLen);
  end;
  CryptDestroyHash(Hash);
  CryptReleaseContext(Prov,0);

Этот код можно встретить в каждом примере. Кстати, я даже подключил модуль Wcrypt2, хоть его и все не любят за его урезанность. Но для формирования ЭЦП его, кажется, достаточно.
И что бы Вы думали - опять никаких результатов! Brick wall
не подписывает и все тут! С каким ещё бубном тут плясать надо?
Offline poiree  
#9 Оставлено : 14 декабря 2011 г. 15:03:20(UTC)
poiree

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

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

Кстати, может быть, я в качестве контейнера понимаю совсем не то, что нужно?...
Дело в том, что хоть я подставляю имя имеющегося контейнера, или просто хаотичный набор символов - номер провайдера всегда возвращается одно и то же... Т.е. явно что-то цеплять функция CryptAcquireContext и не собирается, а выделяет какой-то стандартный контейнер, который мне нафиг не нужен. Но даже если так, все равно в итоге ничего он не подписывает!
Offline Андрей Писарев  
#10 Оставлено : 14 декабря 2011 г. 18:35:12(UTC)
Андрей *

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

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

Сказал «Спасибо»: 547 раз
Поблагодарили: 2196 раз в 1714 постах
poiree написал:

Этот код можно встретить в каждом примере. Кстати, я даже подключил модуль Wcrypt2, хоть его и все не любят за его урезанность. Но для формирования ЭЦП его, кажется, достаточно.
И что бы Вы думали - опять никаких результатов! Brick wall
не подписывает и все тут! С каким ещё бубном тут плясать надо?



добавь логирование результатов вызова каждой функции, думаю это прояснит ситуацию ;)

getlasterror() - код ошибки и текст ошибки syserrormessage(getlasterror())

и лог сюда ;)


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