10.06.2004 17:07:38CryptoApi Ответов: 1
Kiwi
Спасибо за помощь, но остались непонятыми следующие вещи:
1.
Как можно получить ключевой блоб открытого ключа получалеля? Насколько я понял, блоб открытого ключа надо получать из сертификата. Но как это делать?
2.
Какими функциями надо пользоваться, чтобы расшифровать файл, зашифрованный с помощью утилиты cryptcp.exe?
3.
Каким ключом шифрует данные утилита cryptcp.exe сессионным или открытым ключом получателя? А если сессионным, то как мне его импортировать? Как определить длинну ключевого блоба? И какие ключи для этого я должен иметь?

 
Ответы:
11.06.2004 11:36:23Вадим
Формат сертификата описан в X.509. В Crypto API используется структура CERT_INFO, в поле SubjectPublicKeyInfo которой как раз и лежит открытый ключ. Функция CryptImportPublicKeyInfo умеет импортить его в CSP (на выходе получаете HCRYPTKEY который можно использовать по своему усмотрению).

По поводу утилиты – я Вас обманул (спутал cryptcp.exe c csptest.exe), на самом деле эта утилита как раз и работает с нормальными PKCS7 сообщениями, соответственно именно Crypt(En/De)cryptMessage (simplified level) или CryptOpenMsgTo(En/De)code (low-level) и надо использовать. А у Вас это не получилось видимо по тому, что по умолчанию утилита сохраняет файл в Base64 кодировке (попробуйте использовать ключик –der).