Попробуй провести экспорт на каком-либо ключе (второй параметр), так как некоторые
криптопровайдеры не позволяют экспорт закрытого ключа без шифрования. А некторые
вообще не позволяют экспорта закрытого ключа.
Кроме этого возможно, что ключ создан как не эеспортируемый (при создании или
импорте не был указан флаг CRYPT_EXPORTABLE).
Здравствуйте, luser, Вы писали:
L>Здравствуйте, mkopachev, Вы писали:
M>>Здравствуйте, luser, Вы писали:
L>>>Подскажите, пожалуйста лузеру. L>>>Я не могу достать закрытый ключ RSA. Экспортировал я его так:
L>Спасибо что ответили, но я не могу импортировать закрытый ключ. Экспортирование проходит нормально. L>С уважением Леонид.
Извини не понял. Но все-таки какой код ошибки-то вылазит (если я понял он вылазит при импорте)?
Здравствуйте, luser, Вы писали:
L>Здравствуйте, mkopachev, Вы писали:
M>>Здравствуйте, luser, Вы писали:
L>>>Здравствуйте, mkopachev, Вы писали:
M>>>>Здравствуйте, luser, Вы писали:
L>>>>>Подскажите, пожалуйста лузеру. L>>>>>Я не могу достать закрытый ключ RSA. Экспортировал я его так:
L>>>Спасибо что ответили, но я не могу импортировать закрытый ключ. Экспортирование проходит нормально. L>>>С уважением Леонид.
M>> Извини не понял. Но все-таки какой код ошибки-то вылазит (если я понял он вылазит при импорте)?
L>Да правильно вылетает при импорте. GetLastError() возвращает 2148073475 ни с одним флагом ошибки CryptImportKey не совпадает (перебрал вроде все).
Ошибка называется NTE_BAD_KEY (80090003). Действительно удивительно ее появление в твоем случае. Расшифровывается она так, что ключ (очевидно в данном случае ключ на котором производится импорт) не верен.
Это то что я вычитал в документации к Крипто-Про (CPImportKey):
Один или оба из ключей, указанных hKey и hImpKey, не действительны. Байты в элементах заголовка ключевого блоба типа WORD, DWORD имеют обратный порядок по отношению к данной платформе.
Т.е. проверь, то ли ты пытаешься импортировать — возможно та информация, которая
импортируется не соответсвует той, которая была экспортирована?
И последнее, возможно криптопровайдер просто не допускает импорта не зашифрованного ключа? Попробуй сделать какой-нибудь потоковый ключик (тип RC4), а затем экспортнуть и импортнуть на нем (чтобы закрытый ключ оказался зашифрованным).
З.Ы. Вообще-то использование структур фиксированного размера для ключей не есть хорошо — оно у тебя так сделано с каким-то прицелом? Лекго может оказаться резаный алгоритм (экспортные ограничения США), с меньшей длинной ключа и структуры могут съехать. Ты длинну экспортируемого ключа проверил?
Здравствуйте, mkopachev, Вы писали:
M>Здравствуйте, luser, Вы писали:
L>>Подскажите, пожалуйста лузеру. L>>Я не могу достать закрытый ключ RSA. Экспортировал я его так:
L>>
L>>Что не так?
M> Какакя ошибка-то вылезает?
M> Попробуй провести экспорт на каком-либо ключе (второй параметр), так как некоторые M> криптопровайдеры не позволяют экспорт закрытого ключа без шифрования. А некторые M> вообще не позволяют экспорта закрытого ключа.
M> Кроме этого возможно, что ключ создан как не эеспортируемый (при создании или M> импорте не был указан флаг CRYPT_EXPORTABLE).
M> С уважением Михаил Копачев
Спасибо что ответили, но я не могу импортировать закрытый ключ. Экспортирование проходит нормально.
С уважением Леонид.
Здравствуйте, mkopachev, Вы писали:
M>Здравствуйте, luser, Вы писали:
L>>Здравствуйте, mkopachev, Вы писали:
M>>>Здравствуйте, luser, Вы писали:
L>>>>Подскажите, пожалуйста лузеру. L>>>>Я не могу достать закрытый ключ RSA. Экспортировал я его так:
L>>Спасибо что ответили, но я не могу импортировать закрытый ключ. Экспортирование проходит нормально. L>>С уважением Леонид.
M> Извини не понял. Но все-таки какой код ошибки-то вылазит (если я понял он вылазит при импорте)?
Да правильно вылетает при импорте. GetLastError() возвращает 2148073475 ни с одним флагом ошибки CryptImportKey не совпадает (перебрал вроде все).