| ||||
| ||||
Спасибо за помощь, но остались непонятыми следующие вещи: 1. Как можно получить ключевой блоб открытого ключа получалеля? Насколько я понял, блоб открытого ключа надо получать из сертификата. Но как это делать? 2. Какими функциями надо пользоваться, чтобы расшифровать файл, зашифрованный с помощью утилиты cryptcp.exe? 3. Каким ключом шифрует данные утилита cryptcp.exe сессионным или открытым ключом получателя? А если сессионным, то как мне его импортировать? Как определить длинну ключевого блоба? И какие ключи для этого я должен иметь? | ||||
Ответы: | ||||
| ||||
Формат сертификата описан в 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). | ||||