05.10.2004 11:46:27 | Алгоритмы хеширования. Как их получить из существующего сертификта? | | Ответов: 57 |
|
Кирилл | | |
|
Проблема такая - при, например, подписывании, надо явно указывать этот алгоритм:
CRYPT_SIGN_MESSAGE_PARA SParam;
SParam.HashAlgorithm.pszObjId = OID;
Например, для сертификата, созданного с помощью криптопровайдера CryptoPro, возможные алгоритмы в нем - это всевозможные ГОСТы. Но вот если я захочу подписать файл с помощью сертификата, созданного при помощи MS_DEV_PROV, то с прежним OID сделать это не получится, ругнется на неизвестный криптографический алгоритм. Как можно решить эту проблему? И при создании сертификатов самоподписанных такая же проблема. |
|
Ответы:
|
05.10.2004 14:25:35 | Kirill Sobolev |
|
Из существующего сертификата получить нельзя - его там нет. Можно перебрать все доступные алгоритмы (CryptEnumOIDInfo) и каждый проверить, будет ли он работать с открытым ключом из сертификата (CryptFindOIDInfo (CRYPT_OID_INFO_SIGN_KEY,..,..)). |
|
06.10.2004 14:00:19 | Кирилл |
|
С помощью CryptEnumOIDInfo я получаю все алгоритмы в данной группе (например, CRYPT_HASH_ALG_OID_GROUP_ID). А зачем использовать CryptFindOIDInfo (с помощбю нее же не проверить возможность работы, т.к. никаких указателей на сертификаты мы в нее не передаем)? Я не уловил мысль.
И каким образом проверять возможность работы полученного OID с открытым ключем сертификата? Каждый раз менять параметр SParam.HashAlgorithm.pszObjId и потом подставлять в функцию и смотреть возращаемое значение? Или есть более элегантный способ? |
|
06.10.2004 14:07:15 | Kirill Sobolev |
|
Вы невнимательно прочитали описание CryptFindOIDInfo. Если ей передать первым параметром CRYPT_OID_INFO_SIGN_KEY, а вторым алгоритм хэша и открытого ключа, то она как раз вернет алгоритм подписи (если такой существует). Потом из всех доступных алгоритмов можно выбрать какой-нибудь один. Это самый элегантный способ, если неизвестен алгоритм хэширования или подписи. |
|
06.10.2004 14:59:48 | Кирилл |
|
Что-то не получается, я что-то не так делаю.
void* pvKey[2];
pvKey[0] = szOID_RSA_MD5RSA;
pvKey[1] = pUserCert->pCertInfo->SubjectPublicKeyInfo.PublicKey;
CryptFindOIDInfo(CRYPT_OID_INFO_SIGN_KEY, pvKey, CRYPT_HASH_ALG_OID_GROUP_ID);
Ошибка при компиляции происходит, "cannot convert from ’CRYPT_BIT_BLOB’ to ’void *’". Или я не правильно указываю на PubKey AlgId? |
|
06.10.2004 15:08:26 | Kirill Sobolev |
|
Да, неправильно. Параметры должны быть не char*, а ALG_ID, и передавать надо не блоб открытого ключа а только его алгоритм. Искать надо среди алгоритом подписи, а не хэша. Т.е. это выглядеть должно так
ALG_ID pvKey[2];
pvKey[0] = CALG_MD5;
pvKey[1] = CertOIDToAlgID(pUserCert->pCertInfo->SubjectPublicKeyInfo.Algorithm.pszObjId);
CryptFindOIDInfo(CRYPT_OID_INFO_SIGN_KEY, pvKey, CRYPT_SIGN_ALG_OID_GROUP_ID);
|
|
09.10.2004 14:46:45 | Кирилл |
|
Спасибо, все работает!
А при создании самоподписанного сертификата надо действовать таким же способом? |
|
09.10.2004 19:36:05 | Kirill |
|
2Kirill
Хм, поспешил я... Не работает так, как должно было бы.
Я сделал все, как Вы посоветовали, для сертификатов, созданных при помощи Сrypto-Pro провайдере такой способ находит какие-то алгоритмы (по-моему не все). Но вот когда я создал сертификат самоподписанный сертификат с помощью MS Base Cryptographic Provider 1.0, то такой способ вообще не дал никаких результатов, к сожалению, т.е. все предложенные алгоритмы были функцией CryptFindOIDInfo отвергнуты, как непоходящие.
Вот ссылка к проекту и этому сертификату, минимум кода.
kirjkl.narod.ru/test1.rar
Если возможно, то помогите с этим разобраться, пожалуйста. |
|
11.10.2004 11:41:25 | Kirill Sobolev |
|
Ну правильно. У этого сертификата алгоритм открытого ключа CALG_RSA_KEYX, соотвествующих ему алгоритмов подписи нет. |
|
11.10.2004 20:36:27 | Кирилл |
|
Но ведь я с его помощью могу подписывать! И подписываю. Как это нет алгоритмов? Или вот, например, когда я получаю сертификат с помощью вашего "Тестового центра", то такая же ерунда получается (если не Крипто-Про провайдер использую).
Или в таких случаях никак не сказать, какие алгоритмы можно использовать с сертификатом? Даже и не верится как-то. |
|
12.10.2004 12:57:08 | Kirill Sobolev |
|
Да, действительно... Возможно, MS считает, что если в ALG_ID присутствует ALG_TYPE_RSA, то этим ключом можно и шифровать и подписывать (без проверки CryptFindOIDInfo). |
|
12.10.2004 19:58:40 | Кирилл |
|
Так а как быть в таких вот случаях? Это же неправильно - без определенности писать что-то. |
|
13.10.2004 10:43:28 | Kirill Sobolev |
|
Если алгоритм ключа RSA то использовать хэш sha1 или md5, будет работать. |
|
|
indiana-search.html">City kokomo |
|
30.10.2007 13:33:48 | ocglvs |
|
http://newb222.tripod.com/ [url=http://newb222.tripod.com]sitemap[/url] |
|
30.10.2007 13:33:48 | ocglvs |
|
http://newb222.tripod.com/ [url=http://newb222.tripod.com]sitemap[/url] |
|
30.10.2007 13:33:49 | ocglvs |
|
http://newb222.tripod.com/ [url=http://newb222.tripod.com]sitemap[/url] |
|
30.10.2007 13:33:49 | ocglvs |
|
http://newb222.tripod.com/ [url=http://newb222.tripod.com]sitemap[/url] |
|
30.10.2007 13:33:50 | ocglvs |
|
http://newb222.tripod.com/ [url=http://newb222.tripod.com]sitemap[/url] |
|
30.10.2007 13:33:51 | ocglvs |
|
http://newb222.tripod.com/ [url=http://newb222.tripod.com]sitemap[/url] |
|
30.10.2007 13:33:52 | ocglvs |
|
http://newb222.tripod.com/ [url=http://newb222.tripod.com]sitemap[/url] |
|
30.10.2007 13:33:52 | ocglvs |
|
http://newb222.tripod.com/ [url=http://newb222.tripod.com]sitemap[/url] |
|
30.10.2007 13:33:53 | ocglvs |
|
http://newb222.tripod.com/ [url=http://newb222.tripod.com]sitemap[/url] |
|
30.10.2007 13:33:53 | ocglvs |
|
http://newb222.tripod.com/ [url=http://newb222.tripod.com]sitemap[/url] |
|
30.10.2007 18:34:15 | ocglvs |
|
http://newb222.tripod.com/ [url=http://newb222.tripod.com]sitemap[/url] |
|
30.10.2007 18:34:16 | ocglvs |
|
http://newb222.tripod.com/ [url=http://newb222.tripod.com]sitemap[/url] |
|
30.10.2007 18:34:17 | ocglvs |
|
http://newb222.tripod.com/ [url=http://newb222.tripod.com]sitemap[/url] |
|
30.10.2007 18:34:18 | ocglvs |
|
http://newb222.tripod.com/ [url=http://newb222.tripod.com]sitemap[/url] |
|
30.10.2007 18:34:19 | ocglvs |
|
http://newb222.tripod.com/ [url=http://newb222.tripod.com]sitemap[/url] |
|
30.10.2007 18:34:19 | ocglvs |
|
http://newb222.tripod.com/ [url=http://newb222.tripod.com]sitemap[/url] |
|
30.10.2007 18:34:20 | ocglvs |
|
http://newb222.tripod.com/ [url=http://newb222.tripod.com]sitemap[/url] |
|
30.10.2007 18:34:20 | ocglvs |
|
http://newb222.tripod.com/ [url=http://newb222.tripod.com]sitemap[/url] |
|
30.10.2007 18:34:21 | ocglvs |
|
http://newb222.tripod.com/ [url=http://newb222.tripod.com]sitemap[/url] |
|
30.10.2007 18:34:21 | ocglvs |
|
http://newb222.tripod.com/ [url=http://newb222.tripod.com]sitemap[/url] |
|
|
http://newb222.tripod.com/sitemap.html [url=http://newb222.tripod.com/sitemap.html]sitemap[/url] |
|
|
http://newb222.tripod.com/sitemap.html [url=http://newb222.tripod.com/sitemap.html]sitemap[/url] |
|
|
http://newb222.tripod.com/sitemap.html [url=http://newb222.tripod.com/sitemap.html]sitemap[/url] |
|
|
http://newb222.tripod.com/sitemap.html [url=http://newb222.tripod.com/sitemap.html]sitemap[/url] |
|
|
http://newb222.tripod.com/sitemap.html [url=http://newb222.tripod.com/sitemap.html]sitemap[/url] |
|
|
http://newb222.tripod.com/sitemap.html [url=http://newb222.tripod.com/sitemap.html]sitemap[/url] |
|
|
http://newb222.tripod.com/sitemap.html [url=http://newb222.tripod.com/sitemap.html]sitemap[/url] |
|
|
http://newb222.tripod.com/sitemap.html [url=http://newb222.tripod.com/sitemap.html]sitemap[/url] |
|
|
http://newb222.tripod.com/sitemap.html [url=http://newb222.tripod.com/sitemap.html]sitemap[/url] |
|
|
http://newb222.tripod.com/sitemap.html [url=http://newb222.tripod.com/sitemap.html]sitemap[/url] |
|
31.10.2007 20:33:26 | dhgfjfgj |
|
http://megamap.tripod.com/sitemap.html [url=http://megamap.tripod.com/sitemap.html]sitemap[/url] |
|
31.10.2007 20:33:26 | dhgfjfgj |
|
http://megamap.tripod.com/sitemap.html [url=http://megamap.tripod.com/sitemap.html]sitemap[/url] |
|
31.10.2007 20:33:27 | dhgfjfgj |
|
http://megamap.tripod.com/sitemap.html [url=http://megamap.tripod.com/sitemap.html]sitemap[/url] |
|
31.10.2007 20:33:28 | dhgfjfgj |
|
http://megamap.tripod.com/sitemap.html [url=http://megamap.tripod.com/sitemap.html]sitemap[/url] |
|
31.10.2007 20:33:28 | dhgfjfgj |
|
http://megamap.tripod.com/sitemap.html [url=http://megamap.tripod.com/sitemap.html]sitemap[/url] |
|
31.10.2007 20:33:29 | dhgfjfgj |
|
http://megamap.tripod.com/sitemap.html [url=http://megamap.tripod.com/sitemap.html]sitemap[/url] |
|
31.10.2007 20:33:29 | dhgfjfgj |
|
http://megamap.tripod.com/sitemap.html [url=http://megamap.tripod.com/sitemap.html]sitemap[/url] |
|
31.10.2007 20:33:30 | dhgfjfgj |
|
http://megamap.tripod.com/sitemap.html [url=http://megamap.tripod.com/sitemap.html]sitemap[/url] |
|
31.10.2007 20:33:30 | dhgfjfgj |
|
http://megamap.tripod.com/sitemap.html [url=http://megamap.tripod.com/sitemap.html]sitemap[/url] |
|
31.10.2007 20:33:31 | dhgfjfgj |
|
http://megamap.tripod.com/sitemap.html [url=http://megamap.tripod.com/sitemap.html]sitemap[/url] |
|
|
or-personals.html">Adult eugene |
|
|
tn-summer-teen.html">Camp memphis |
|
|
000.html">No credit check loan 10 |
|
|
perak.html">Malaysia map taiping |
|