Речь пойдет про следующий параметр:
EncParams.ContentEncryptionAlgorithm.pszObjId
Как известно - нельзя зашифровать на комплекте сертификатов ГОСТ+RSA
И я даже понимаю почему

Самому удивительно.
Просто я начал вылизывать свои наброски и сводить их в единый класс.
Проверяю CryptEncryptMessage Кучка сертификатов по ГОСТу - все хорошо.
Подсовываю RSA-шную кучку - Unknown Algorithm.
Смотрю и удивляюсь своей невнимательности. Было прописано намертво:
EncParams.ContentEncryptionAlgorithm.pszObjId := szOID_CP_GOST_28147;
И вот тут я притупил не по детски.
Ранее, при помощи чужих знаний, я привел cert.Signature.alg... к HashAlg...
А вот его же к ENCRYPT_ALG... не могу. УВЫ.
Но это не самое интересное. Конечно я нашел, что для RSA надо szOID_RSA_RC4 или RC2.
RC2 не пробовал, вроде алгоритм скомпроментирован.
И вот тут начались чудеса
Подкладываю стопку сертификатов по ГОСТ - Ок, но szOID_RSA_RC4 я оставил
Стопка RSA - Ок.
Ну мы же не лаптем щи хлебаем. пишем по русски:
EncParams.ContentEncryptionAlgorithm.pszObjId := nil;
Стопка ГОСТ - Ок. Стопка RSA - Unknown Algorithm.
Получается, что стандартному CryptoAPI для поиска алгоритма мало одного сертификата?
Это КриптоПро сумничало? Кстати нигде такое поведение не описано...
Не, я не против, я и сам бы сделал также.
Хорошо что явное указание szOID_RSA_RC4 для КриптоПро не помеха
А если я захочу AES? Остается вопрос - узнать алгоритм шифрования по сертификату.
Или надо от Public_Key танцевать?
Борис