Статус: Участник
Группы: Участники
Зарегистрирован: 11.01.2008(UTC) Сообщений: 22 Откуда: Санкт-Петербург
|
В продолжении темы про Access Violation Есть достаточно странная ситуация: На машине установи эмулятор дисковода (отсутсвавал как вид вообще) после чего создал на нем контейнер посредством CryptAcquireContext и параметра CRYPT_NEWKEYSET. Контейнер был благополучно создан (физически это выглядело как каталог Makushev.000 и файл def.key ), далее в вашем центре сертификации попытался получить сертификат (ссылка http://www.cryptopro.ru/certsrv/certcarc.asp) и установил его без всяческих доп запросов. Куда он установился и как это мне честно говоря не понятно. Дальше при попытке получить сертификат...что-то получаю... но при попытке использовать его дальше возникает ошибка NTE_BAD_ALGID. Используя панель CSP КриптоПро выясняю что в данном контейнере сертификатов нет. Где грабли и правильная ли последовательность моих действий для получения полноценного контейнера с сертификатом который я смогу использовать для криптования сообщения открытым ключем? И второй вопрос: как вернуться к исходному состоянию и попытаться заново создать контейнер? Простое уделние контейнера с дискеты не проходит... вторично контейнер не будет создан... И потом как поместить в контейнер сертификат, если ваша система ругается что контейнер не соответсвует сертификату? У меня если честно началась уже каша...
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,393 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 717 раз в 621 постах
|
Очень сумбурно. Какая стоит задача? Для шифрования CryptEncryptMessage закрытый ключ не нужен. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 11.01.2008(UTC) Сообщений: 22 Откуда: Санкт-Петербург
|
maxdm написал:Очень сумбурно. Какая стоит задача? Для шифрования CryptEncryptMessage закрытый ключ не нужен. Задача проста: используя контейнер который соотв. находится на дискете и сертификат в нем, произвести кодирование, а затем раскодирование некоторого бинарного блоба. Используя функцию CryptEncryptMessage полагаю это можно сделать. Дальше чтобы проверить работоспособность программы в лабораторных условиях я устанавливаю пакет КриптоПро, затем включаю эмулятор дисковода и "вставляю" дискету, регистрирую её как считывающее устройство, функцией CryptAcquireContext и параметра CRYPT_NEWKEYSET создаю контейнер (как уже сказал выглядит физически как каталог инекий набор файлов), после чего .... что дальше? Я предполагал что надо в него поместить сертификат который я могу поличить (и получил) в вашем тестовом сертификационном центре. Но при попытке поместить в контейнер сертификат (дабы показывал он свое наличие в этом контейнере с помощью функций вашей сервисной оболочки и был доступен с помощью функций получения сертификатов из моей программы) оболочка ругается что контейнер не совместим с сертификатом или что-то в этом духе. Вот я почему и спрашиваю какая корректная последовательность работы с ключевым носителем, сертификатом и контейнером, дабы все таки проверить мне корректную работу моей программы? И ещё грабли на которые я наступил: решив начать процесс проверки с начала, я вашими средствами удалил контейнер и решил создать его заново... в чем крупно обломался... так как на словах сервисной оболочки контейнер создавался, чего физически не наблюдалось, и не подтверждалось той же самой оболочкой...
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,393 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 717 раз в 621 постах
|
1. Кодирование и шифрование - разные вещи. 2. CryptEncryptMessage шифрует, затем кодирует в ASN1. 3. Для шифрования нужен лишь открытый ключ (сертификат) получателя. Для расшифрования, соответственно закрытый. 4. Как вы устанавливали в контейнер сертификат я не знаю - для работы Decrypt нужно, чтобы у сертификата в хранилище была ссылка на закрытый ключ. Сертификат в контейнере нужен лишь для удобства пользователя (и для Propagate - но это выходит за рамки темы). 5. Код по шифрованию-расшифрованию я привел в предыдущем топике - если что не понятно - спрашивайте - попробую помочь. Корректная последовательность - там же - переводить в Pascal не буду - лет 10 уже не пользовался. 6. Все проблемы с Pascal обычно из-за кривых заголовочных файлов или маршаллинга. 7. Начать можно с этого http://www.citforum.ru/p...mming/delphi/use_crypto/ |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 11.01.2008(UTC) Сообщений: 22 Откуда: Санкт-Петербург
|
maxdm написал:1. Кодирование и шифрование - разные вещи. 2. CryptEncryptMessage шифрует, затем кодирует в ASN1. 3. Для шифрования нужен лишь открытый ключ (сертификат) получателя. Для расшифрования, соответственно закрытый. 4. Как вы устанавливали в контейнер сертификат я не знаю - для работы Decrypt нужно, чтобы у сертификата в хранилище была ссылка на закрытый ключ. Сертификат в контейнере нужен лишь для удобства пользователя (и для Propagate - но это выходит за рамки темы). 5. Код по шифрованию-расшифрованию я привел в предыдущем топике - если что не понятно - спрашивайте - попробую помочь. Корректная последовательность - там же - переводить в Pascal не буду - лет 10 уже не пользовался. 6. Все проблемы с Pascal обычно из-за кривых заголовочных файлов или маршаллинга. 7. Начать можно с этого http://www.citforum.ru/p...mming/delphi/use_crypto/ 1. Согласен, погорячился. 2. Так же согласен, но я это опускал, так как меня интересовал конечный результат 3. Это я в курсе ещё из института. И про методы выработки больших чисел. 4. А для работы Crypt Encrypt что нужно? 5. - 6. Я согласен. Но от моего согласия или несогласия код сам не перепишется... 7. Спасибо. Так что существенным для меня остался 4-й вопрос. Каким образом мне получить контейнер на дискете и привязать к ключу в нем совместимый сертификат.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,393 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 717 раз в 621 постах
|
Для CryptEncrypt нужен сессионный ключ (или открытый ключ RSA - но такая схема используется исключительно редко) Контейнер с сертификатом и сам сертификат проще всего сгенерить и получить на нашем тестовом центре. Можно использовать makecert из MS SDK, но только для буржуйских алгоритмов. PS. CryptEncrypt и CryptEncryptMessage - абсолютно разные функции. Отредактировано пользователем 14 января 2008 г. 22:00:12(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 11.01.2008(UTC) Сообщений: 22 Откуда: Санкт-Петербург
|
maxdm написал:Для CryptEncrypt нужен сессионый ключ (или открытый ключ RSA - но такая схема используется исключительно редко) Контейнер с сертификатом и сам сертификат проще всего сгенерить и получить на нашем тестовом центре. Можно использовать makecert из MS SDK, но только для буржуйских алгоритмов. PS. CryptEncrypt и CryptEncryptMessage - абсолютно разные функции. Я в курсе что разные... просто я полагал что мы ведем разговор CryptEncryptMessage. Ну вот получил я в вашем центре контейнер... и что дальше? как его пометить на носитель типа "дискета"?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,393 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 717 раз в 621 постах
|
Хм, а на каком алгоритме и носителе вы его сгенерили? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 11.01.2008(UTC) Сообщений: 22 Откуда: Санкт-Петербург
|
maxdm написал:Хм, а на каком алгоритме и носителе вы его сгенерили? На машине установил эмулятор дисковода (отсутсвавал как вид вообще) после чего создал на нем контейнер посредством CryptAcquireContext и параметра CRYPT_NEWKEYSET. На сколько я помню после него пявился контейнер. И применял так же Цитата:CryptGenKey(hProv, CALG_RC4, AT_KEYEXCHANGE, nil);
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,393 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 717 раз в 621 постах
|
хм, а не проще сгенерить ключ на страничке запроса на сертификат? |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close