![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Antropoid |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 786 Регистрация: 1.6.2006 Где: &Ukraine==Ode ssa Репутация: нет Всего: 16 |
Привет. У меня проблемка.
Работаю с MS Crypto API
CryptExportKey отрабатывает неверно хоть ты тресни ![]() GetLastError () возвращает 0. Хендлы на ключики успешно созданы. В чем может быть проблема? -------------------- ![]() Задыхаясь от восторга заниматься чепухой. |
|||
|
||||
Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: нет Всего: 39 |
по-возможности выложите сопутсвующий код. В частности, где вы вызываете AcquireContext, и где получаете дескрипторы на hKey и hXchgKey
|
|||
|
||||
NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 6 Всего: 23 |
Может, с флагом намудрил? Попробуй использовать PRIVATEKEYBLOB или PUBLICKEYBLOB в зависимости от типа ключа.
|
|||
|
||||
Antropoid |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 786 Регистрация: 1.6.2006 Где: &Ukraine==Ode ssa Репутация: нет Всего: 16 |
Не проканало ![]()
Мой код взят из MSDN. Изменено только одно место: Они делают так:
а я достаю ключ из сертификата.. мож в этом лажа............ пример доставания взят с RSDN(сайт такой), да и код отрабатывает без ошибок. К тому же ключик достанный мною из сертификата шифрует данные на ура (но должен ли?). Так что выкладывать? ![]() -------------------- ![]() Задыхаясь от восторга заниматься чепухой. |
||||||
|
|||||||
korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 9 Всего: 14 |
все таки приведите весь код.
Это сообщение отредактировал(а) korbian - 13.12.2007, 09:34 -------------------- korbian © |
|||
|
||||
Antropoid |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 786 Регистрация: 1.6.2006 Где: &Ukraine==Ode ssa Репутация: нет Всего: 16 |
Ну смотрите......сами напросились
![]()
-------------------- ![]() Задыхаясь от восторга заниматься чепухой. |
|||
|
||||
korbian |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 9 Всего: 14 |
Откуда уверенность, что оба ключа (експортируемый и тот, на котором он будет шифроватся из одного CSP)? в OID ключа из сертификата точно есть упоминание о RSA?
Добавлено через 3 минуты и 53 секунды А почему не так?
-------------------- korbian © |
||||
|
|||||
Antropoid |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 786 Регистрация: 1.6.2006 Где: &Ukraine==Ode ssa Репутация: нет Всего: 16 |
А разве это нужно? Что такое OID ? И в программе PROV_RSA_FULL - это флаг для создания CSP по умолчанию. ньюансы ![]() -------------------- ![]() Задыхаясь от восторга заниматься чепухой. |
|||
|
||||
korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 9 Всего: 14 |
помоему, это обязательное условие для экспорта. простите, конечно же AID(OID более широкое понятие) - algoritm id. то есть иденификатор алгоритма. если ваш сертификат содержит ключ RSA (в сертификате указан AID RSA), то он должен был хранится в хранилице смертификатов csp для RSA по умолчанию. и все тогда должно быть ок. Что выводится на экран????
-------------------- korbian © |
|||
|
||||
Antropoid |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 786 Регистрация: 1.6.2006 Где: &Ukraine==Ode ssa Репутация: нет Всего: 16 |
Нет. Он у меня хранится в Хранилище Сертификатов "Личные" (оно же "MY"). Microsoft Enhanced Cryptographic Provider v1.0 но даже написав так:
ошибка не ушла ![]() -------------------- ![]() Задыхаясь от восторга заниматься чепухой. |
||||
|
|||||
korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 9 Всего: 14 |
я вам говорил, что оба ключа должны находится в одном криптовайдере и в одном контейнере. я думаю, проблему можно решить так:
здесь запомнить имя контейнера
szUserName отдать на верх. после этого подставить его вторым аргументом в CryptAcquireContext() -------------------- korbian © |
|||
|
||||
Antropoid |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 786 Регистрация: 1.6.2006 Где: &Ukraine==Ode ssa Репутация: нет Всего: 16 |
szUserName не проканало.....а вот, если сохранить дескриптор на CSP (hProv) при открытии сертификата, а затем его же использовать при шифровании, то все получается
![]() +1 !!! Это сообщение отредактировал(а) Antropoid - 18.12.2007, 10:51 -------------------- ![]() Задыхаясь от восторга заниматься чепухой. |
|||
|
||||
Arty007 |
|
|||
ГоЛоВа Профиль Группа: Участник Сообщений: 5 Регистрация: 21.11.2010 Где: Odessa, Ukraine Репутация: нет Всего: нет |
вижу, что тема старая, но мне необходимая. мне вот например надо сессионный ключ создать алгоритмом CALG_AES_256 используя криптопровайдер MS_ENH_RSA_AES_PROV. но у меня сертификат вроде создан на стандартном криптопровайдере, и получается, что когда я буду шифровать и разшифровывать сессионный ключ, то попутаются криптопровайдеры и будет ошибка. так как шифровать я буду используя CryptExportKey , а разшифровывать - CryptImportKey. но когда я воспользуюсь функцией CryptAcquireCertificatePrivateKey то она мне вернет криптопровайдер и контейнер для данного сертефиката, т.е. отличный от того на котором я шифровал (MS_ENH_RSA_AES_PROV) и будет ошибка. т.е. чтобы мне нормально работать то мне уже до шифрования сессионного ключа надо вызвать CryptAcquireCertificatePrivateKey, чтобы получить ссылку на правильный криптопровайдер и чтобы небыло ошибок в дальнейшем?
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |