29.08.2005 16:11:12CryptDllConvertPublicKeyInfo Ответов: 8
Юрий
Кто знает что либо про фукнкцию CryptDllConvertPublicKeyInfo? Искал здесь(и не только) эту информацию но везде только аналогичные вопросы, а ответов нет. Почему КриптоПро упорно не отвечает на подобные вопросы!?
 
Ответы:
29.08.2005 17:00:27Василий
Очень хороший ответ на этот вопрос дал представитель Microsoft:
http://www.derkeiler.com/Newsgroups/microsoft.public.win2000.security/2003-02/1426.html
29.08.2005 17:25:13Юрий
2Василий: Вы уходите от ответа. Назвать эту функцию можно как угодно, и действительно вся проблемма в том, что эта функция не документирована. A ситуация собственно вот в чём. Когда windows разбирает сертификат и встречает открытый ключ с нестандартным
OID(напрмер то же ГОСТ - "1.2.643.2.2.19") она по этому
идентификатору вызывает некую зарегистрированную для данного OID функцию, которую Вы в своём CSP реализовали, следовательно знаете её спецификацию.
Эта информация может быть закрытой по каким либо причинам, но тогда просто скажите мол это наш секрет
или скорее правильнее будет сказать что Microsoft не хочет раскрывать эту информацию. Пусть так.
Я в чём то ошибаюсь?


29.08.2005 17:55:23maxdm
Во первых это не функция, а имя набора функций.
И что конкретно интересует?
29.08.2005 18:14:40Юрий
Интересует спецификация (описание входных и выходных параметров) функции которая вызывается в Windows при разборе открытого ключа в сертификате(уж и не знаю как её назвать теперь, может Вы подскажете). Раз это семейство, то в идеале конечно описание всего семейства функций. Я возможно что то не понимаю во всём этом механизме, но потому и не понимаю, что не нашёл документации по этому поводу.
29.08.2005 18:26:02maxdm
Документации по этому поводу не существует. В MS CAPI есть механизм расширения поддержки оидов. Для этого они предлагают регистрировать под новые оиды и определенные семейства функций свои функции. Немножко есть тут: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/seccrypto/security/extending_cryptoapi_functionality.asp. Ну и public symbols еще никто не отменял.
29.08.2005 18:55:01Юрий
Всё по ссылке выше про расширение функциональности CryptoAPI я конечно читал уже и зарегистрировать функцию для новго OID я могу. Вопрос в том что это должна быть за функция, в каждом конкретном случае. Возьмём для примера декодирование открытого ключа.
Если зарегистрировать для OID "1.2.643.2.2.19" такую функцию:
BOOL WINAPI CryptDllConvertPublicKeyInfo(
DWORD dwCertEncodingType,
VOID *EncodedKeyInfo,
DWORD dwAlg,
DWORD dwFlags,
BYTE **ppStructInfo,
DWORD *StructLen
);
(см http://www.cryptopro.ru/CryptoPro/forum/myforum.asp?q=814)

то она успешно вызывается Windows при разборе сертификата с ГОСТ алгоритмом открытого ключа, но непонятно что должно быть во входных и выходных параметрах. Но похоже этого никто не раскажет, поможет только исследовательская работа, а жаль :(
29.08.2005 19:08:05maxdm
Так Вы и сами все нашли - чего ище рассказывать.
VOID *EncodedKeyInfo, - это PCERT_PUBLIC_KEY_INFO, а дальше итак понятно.
31.08.2005 14:04:16Юрий
А выходные параметры
BYTE **ppStructInfo,
DWORD *StructLen
это какая структура?