Как соотносятся имена и типы криптопровайдеров? - Каждый криптопровайдер с конкретным именем может поддерживать несколько типов?
if(CryptAcquireContext(
&hCryptProv,
NULL,
NULL,
PROV_RSA_AES,
NULL))
{
printf("A CSP has been acquired. \n");
}
---
при вызове функции, имя криптопровайдера (третий параметр) не указано. все работает нормально, как я понимаю из-за того, что происходит поиск дефолтового, поддерживающего тип PROV_RSA_AES.
если все же указать имя криптопровайдера, любое из этого списка:
http://msdn2.microsoft.com/en-us/library/aa380243.aspx
в то числе MS_ENH_RSA_AES_PROV и MS_ENHANCED_PROV - контекст создать не удается, т.е. функция возвращает FALSE.
И еще, создав контекст криптопровайдера с типом PROV_RSA_AES, я потом могу сгенерировать ключ DES или 3DES, хотя по идее у этого криптопровайдера нет поддержки этих алгоритмов.
Как все это можно обьяснить?
|