05.09.2004 16:12:12Получение типа провайдера Ответов: 3
Владимир
Как узнать тип провайдера (PROV_RSA_FULL, PROV_GOST_94_DH и т.д)
из сертификата?
Сертификат гружу из файла и использую для проверки подписи.
Можно ли определить это по OID алгоритма открытого ключа сертификата?
 
Ответы:
14.09.2004 18:21:48Василий
Задача не имеет однозначного решения.
Можно рекомендовать следующее:
1. получить ALGID по этому OID (CertOIDToAlgId).
2. перенумеровать все CSP и для каждого из них перенумеровать алгоритмы подписи - см. пример в MSDN Example C Program: Enumerating CSP Providers and Provider Types
17.09.2004 17:23:44Владимир
Большое спасибо!
Натолкнули на путь истинный :)

В процессе возник еще один вопрос:
Если алгоритм поддерживается несколькими провайдерами, в частности AlgID=00002E1Eh (GOST R 34.10-94) поддерживается провайдером с типом 2 и 71, есть ли разница каким типом пользоваться в CryptAcquireContext?
Практика показывает, что для проверки подписи например разницы нет.
20.09.2004 11:31:46Василий
В данном примере разницы нет.
Дело в том, что тип 2 был сохранён в Крипто-Про CSP 2.0 в целях совместимости с кодом, ориентированным на CSP 1.1 (т.к. в 1.1 тип 2 - единственный). В CSP 3.0 тип 2 поддерживаться не будет.
Так что рекомендация - использовать тип 71, а ещё лучше - переходить на тип 75 (в свете того, что есть сведения о прекращении действия самого ГОСТ Р 34.10-94 в ~2006-07 г.)