Статус: Участник
Группы: Участники
Зарегистрирован: 30.07.2008(UTC) Сообщений: 15 Откуда: Санкт-Петербург
|
Добрый день, я пытаюсь с помощью крипто-про sharpei сформировать зашифрованный сессионный ключ для записи его в унифицированный транспортный контейнер. Ксожалению все попытки формирования ключа не привели к успеху Вот код который я использую: Код:var alg = (Gost3410)receiverCertificate.PublicKey.Key;
var simmetric = Gost28147.Create();
var cspParams = new CspParameters(75, null, "eTax");
var srcContainer = new Gost3410CryptoServiceProvider(cspParams);
var agree = srcContainer.CreateAgree(alg.ExportParameters(false));
byte[] wrappedKey = agree.Wrap(simmetric, GostKeyWrapMethod.CryptoProKeyWrap);
получаемый в результате трансформации массив имеет длину 65 байт, в то же время зашифрованные сессионные ключи сформированные при помощи например "ГНИВЦ Курьер" имеют длину 71 байт. В документации МНС описание формата зашифрованного сессионного ключа ограничивается словами " вырабатывается СКЗИ КриптоПро CSP". Хотелось бы уточнить каким именно образом можно сформировать данный ключ.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390 Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
Зашифрованные симметричные ключи в "ГНИВЦ Курьер" скорее всего имеют структуру CRYPT_SIMPLEBLOB (см. описание в WinCryptEx.h). Не лучший способ формата сессионного ключа с моей точки зрения. wrappedKey из вашего примера может быть разобран в структуру GostWrappedKey: Код:GostWrappedKey wk = new GostWrappedKey();
wk.SetByXmlWrappedKey(wrappedKey);
Останется только сопоставить соответствующие поля GostWrappedKey и CRYPT_SIMPLEBLOB bSV - Ukm bEncryptedKey - EncryptedKey bMacKey - Mac bEncryptionParamSet - EncryptionParamSet |
С уважением, Александр. |
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 30.07.2008(UTC) Сообщений: 15 Откуда: Санкт-Петербург
|
Спасибо, это именно он и оказался. Жаль нельзя напрямую его получить из .NET пришлось по байтам собирать.
Кстати не подскажете как строковый параметр EncryptionParamSet равный 1.2.643.2.2.31.1 преобразовать в ASN OID?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390 Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
Ни у Microsoft, ни у нас интерфейсов кодирования ASN.1 OID, к сожелению, я не знаю. Придется кодировать побайтно или воспользоваться готовым закодированным байтовым массивом конкретно для этого (1.2.643.2.2.31.1) OID. |
С уважением, Александр. |
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 30.07.2008(UTC) Сообщений: 15 Откуда: Санкт-Петербург
|
Спасибо за быструю реакцию по поводу зашифрованных сесионных ключей :), в процессе дальнейшей работы возник еще один вопрос, в при формировании ЭЦП возникла необходимость выгружать публичный ключ сертификата, который как оказалось тоже выгружается в форматевнутренней структуры крипто-про. Хотелось бы узнать про возможность добавления функции для получения этой структуры средствани .net (по аналогии с сессионным ключем).
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390 Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
Небольшой комментарий по поводу преобразования зашифрованных сессионных ключей в CRYPT_SIMPLEBLOB (для тех кто не в курсе внутренней переписки). Нам показалось, что такая фукциональность будет востребована достаточно часто, поэтому мы решили добавить ее в КриптоПро Шарпей. Для преобразования зашифрованного сессионного ключа из вышеуказанного примера в BLOB: Код:GostWrappedKey wk = new GostWrappedKey();
wk.SetByXmlWrappedKey(wrappedKey);
byte[] blob = wk.GetCryptoServiceProviderBlob();
Теперь о формате открытого ключа. Если речь идет о PUBLICKEYBLOB, то класс Gost3410CryptoServiceProvider содержит функцию ExportCspBlob, который при Код:includePrivateParameters==false
в качестве результата возвращает именно его. |
С уважением, Александр. |
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close