Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро .NET
»
Пределываю пример gEncryptFileAgree из Sharpei SDK. Не работает экспорт зашифрованного ключа в файл
Статус: Участник
Группы: Участники
Зарегистрирован: 01.09.2009(UTC) Сообщений: 13
|
Разница в том что сертификат выбирается пользователем из хранилища, а не используется файл .cer. Ошибка возникает тут: byte[] WrappedKey = agree.Wrap(symmetric, GostKeyWrapMethod.CryptoProKeyWrap);
Ошибка: "Указан неправильный тип." System.Security.Cryptography.CryptographicException
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390 Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
Переместил тему... 1. Какой CSP установлен? 2. Какой Sharpei установлен? 3. При создании agree ключа использовался Gost3410Parameters Код:Gost3410Parameters srcPublicKeyParameters = alg.ExportParameters(false);
GostSharedSecretAlgorithm agree = srcContainer.CreateAgree(srcPublicKeyParameters);
Какой srcPublicKeyParameters.PublicKeyParamSet? Отредактировано пользователем 1 сентября 2009 г. 16:40:13(UTC)
| Причина: Не указана |
С уважением, Александр. |
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 01.09.2009(UTC) Сообщений: 13
|
впихнуть код в само сообщение не получилось :-( поэтому код тут. Далее сам код: Код:
// Шифрование тестового файла.
// Разбираем сертификат получателя
X509Certificate2 cert = CryptSharpei.SelectSertificate("Сертификат получателя", "Выбирете сертификат получателя сообщение", X509SelectionFlag.SingleSelection);
// Открытый ключ получателя.
AsymmetricAlgorithm pk = cert.PublicKey.Key;
Gost3410 alg = pk as Gost3410;
if (alg == null)
throw new CryptographicException("Not a gost certificate");
// Создаем симметричный ключ.
Gost28147 symmetric = Gost28147.Create();
// Открываем ключ отправителя.
//CspParameters par = new CspParameters(75, null, SourceContainer);
X509Certificate2 cert2 = CryptSharpei.SelectSertificate("Сертификат отправителя", "Выбирете сертификат отправителя сообщение", X509SelectionFlag.SingleSelection);
Gost3410CryptoServiceProvider srcContainer = (Gost3410CryptoServiceProvider)cert2.PublicKey.Key;
Gost3410Parameters srcPublicKeyParameters = srcContainer.ExportParameters(false);//srcContainer.ExportParameters(false);
// Создаем agree ключ
GostSharedSecretAlgorithm agree = srcContainer.CreateAgree(alg.ExportParameters(false));
// Зашифровываем симметричный ключ на agree ключе.
// Тут и происходит ошибка
byte[] WrappedKey = agree.Wrap(symmetric,
GostKeyWrapMethod.CryptoProKeyWrap);
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 01.09.2009(UTC) Сообщений: 13
|
Челпанов А. написал: 2. Какой Sharpei установлен?
КриптоПро CSP KC1 3.0.3300.3 Челпанов А. написал:3. При создании agree ключа использовался Gost3410Parameters Код:Gost3410Parameters srcPublicKeyParameters = alg.ExportParameters(false);
GostSharedSecretAlgorithm agree = srcContainer.CreateAgree(srcPublicKeyParameters);
Какой srcPublicKeyParameters.PublicKeyParamSet? PublicKeyParamSet "1.2.643.2.2.36.0"
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390 Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
При формировании ключа agree ключ отправителя должен быть секретным, а ключ получателя открытым. В Вашем же примере оба ключа открытые. Код:Gost3410CryptoServiceProvider srcContainer = (Gost3410CryptoServiceProvider)cert2.PrivateKey;
|
С уважением, Александр. |
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 01.09.2009(UTC) Сообщений: 13
|
Челпанов А. написал:При формировании ключа agree ключ отправителя должен быть секретным, а ключ получателя открытым. В Вашем же примере оба ключа открытые. Код:Gost3410CryptoServiceProvider srcContainer = (Gost3410CryptoServiceProvider)cert2.PrivateKey;
изменил: Код:
Gost3410CryptoServiceProvider srcContainer = (Gost3410CryptoServiceProvider)cert2.PrivateKey;
Теперь ошибка: System.Security.Cryptography.CryptographicException {"Плохой ключ.\r\n"} StackTrace: в CryptoPro.Sharpei.COMCryptography.ExportCspBlob(SafeKeyHandleCP hKey, SafeKeyHandleCP hExpKey, Int32 blobType) в CryptoPro.Sharpei.COMCryptography.ExportSessionWrapedKey(SafeKeyHandleCP hSimmKey, SafeKeyHandleCP hExpKey, GostWrappedKeyObject wrappedKey) в CryptoPro.Sharpei.GostSharedSecretCryptoServiceProvider.CryptoProWrap(Gost28147CryptoServiceProvider prov) в CryptoPro.Sharpei.GostSharedSecretCryptoServiceProvider.Wrap(Gost28147CryptoServiceProvider prov, GostKeyWrapMethod method) в CryptoPro.Sharpei.GostSharedSecretCryptoServiceProvider.Wrap(SymmetricAlgorithm alg, GostKeyWrapMethod method) в TestCryptoFileStream.Program.EncryptTestFile() в D:\\Мои документы\\Visual Studio 2008\\Projects\\TestCryptoFileStream\\Program.cs:строка 97 в TestCryptoFileStream.Program.Main(String[] args) в D:\\Мои документы\\Visual Studio 2008\\Projects\\TestCryptoFileStream\\Program.cs:строка 36
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 01.09.2009(UTC) Сообщений: 13
|
Челпанов А. написал:При формировании ключа agree ключ отправителя должен быть секретным, а ключ получателя открытым. В Вашем же примере оба ключа открытые. Код:Gost3410CryptoServiceProvider srcContainer = (Gost3410CryptoServiceProvider)cert2.PrivateKey;
кроме ошибки теперь выдается запрос пароля для сертификата перед тем как ошибка появляется В предыдущем сообщении просто не написал Отредактировано пользователем 1 сентября 2009 г. 18:00:44(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 01.09.2009(UTC) Сообщений: 13
|
Есть несколько уточнений. Возможно в этом причина. 1) В системе установлено 2 крипто провайдера КриптоПро и VIPNet . 2) Сертификат отправителя сформирован в VIPNet и запрос пароля приходит от его провайдера (это единственный сертификат по ГОСТ с закрытым ключем) 3) Если в качестве отправителя выбирать сертификат без секретного ключа то выдается ошибка "Не задана ссылка на объект" ЗЫ: Получить тестовый сертификат КриптоПро не получилось :-( Отредактировано пользователем 1 сентября 2009 г. 18:13:43(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390 Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
Функционирование Sharpei через другие провайдеры не тестировалось и, скорее всего, не работоспособно (и не планируется). Ваш пример запустил на CSP 3.0 - тест отработал без ошибок. Проблема скорее всего именно в другом провайдере. Пробуйте создать секретный ключ с сертификатом на нашем крипто провайдере, например на нашем тестовом центре сертификации. |
С уважением, Александр. |
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 01.09.2009(UTC) Сообщений: 13
|
Челпанов А. написал:Функционирование Sharpei через другие провайдеры не тестировалось и, скорее всего, не работоспособно (и не планируется). Ваш пример запустил на CSP 3.0 - тест отработал без ошибок. Проблема скорее всего именно в другом провайдере. Пробуйте создать секретный ключ с сертификатом на нашем крипто провайдере, например на нашем тестовом центре сертификации. Получил тестовый сертификат. сама проблема не ушла. "Указан неправильный тип." System.Security.Cryptography.CryptographicException Может быть я не тот тип сертификата генерировал? ЗЫ: Вообще, задача. Возможно вы подскажете другой, более рациональный путь. Задача: Формировать файл вида: НекоторыеДанные (в том числе о сертификатах получателя и отправителя данных); ДлинаЗашифрованногоСессионногоКлюча; ЗашифрованныйСессионныйКлюч; ДлинаВектораИнициализации; ВекторИнициализации; ДлинаЗашифрованныхДанных; ЗашифрованныеДанные (Шифрование данных выполняется единым блоком, при этом используется шифрование гаммированием с обратной связью ГОСТ 28147-89.)
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро .NET
»
Пределываю пример gEncryptFileAgree из Sharpei SDK. Не работает экспорт зашифрованного ключа в файл
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close