Статус: Активный участник
Группы: Участники
Зарегистрирован: 06.03.2012(UTC) Сообщений: 177
Сказал(а) «Спасибо»: 57 раз Поблагодарили: 11 раз в 8 постах
|
Добрый день. Подскажите, пожалуйста, с какими параметрами нужно правильно вызывать функцию, чтобы получить Subject Key Identifier (Идентификатор ключа субъекта). 2 раза вызываем след функцию: CryptHashPublicKeyInfo( 0, CALG_SHA1, 0, X509_ASN_ENCODING or PKCS_7_ASN_ENCODING, p, 0, Len ); GetMem(...); CryptHashPublicKeyInfo( 0, CALG_SHA1, 0, X509_ASN_ENCODING or PKCS_7_ASN_ENCODING, p, C, Len ); В С возращается совсем не то, чтобы хотелось видеть (хеш не совпадает). Функция отрабатывает 2 раза в true. Может грубая ошибка есть в параметрах? 2 темы обсуждения: http://www.cryptopro.ru/....aspx?g=posts&t=4276http://www.cryptopro.ru/...ro/forum/view.asp?q=2367Отредактировано пользователем 6 июня 2012 г. 21:15:02(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,190   Сказал «Спасибо»: 621 раз Поблагодарили: 2397 раз в 1886 постах
|
Из "чего"? из запроса на сертификат или есть уже сам сертификат? http://msdn.microsoft.co...p/aa380204(v=vs.85).aspxЦитата: BOOL WINAPI CryptHashPublicKeyInfo( __in HCRYPTPROV_LEGACY hCryptProv, __in ALG_ID Algid, __in DWORD dwFlags, __in DWORD dwCertEncodingType, __in PCERT_PUBLIC_KEY_INFO pInfo, __out BYTE *pbComputedHash, __inout DWORD *pcbComputedHash );
Описание: Parameters - все правильно заполнено? Цитата: pInfo [in] A pointer to a CERT_PUBLIC_KEY_INFO structure that contains the public key information to be encoded and hashed.
Отредактировано пользователем 6 июня 2012 г. 23:14:41(UTC)
| Причина: Не указана |
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 06.03.2012(UTC) Сообщений: 177
Сказал(а) «Спасибо»: 57 раз Поблагодарили: 11 раз в 8 постах
|
Андрей * написал:Из "чего"? из запроса на сертификат или есть уже сам сертификат? http://msdn.microsoft.co...p/aa380204(v=vs.85).aspxЦитата: BOOL WINAPI CryptHashPublicKeyInfo( __in HCRYPTPROV_LEGACY hCryptProv, __in ALG_ID Algid, __in DWORD dwFlags, __in DWORD dwCertEncodingType, __in PCERT_PUBLIC_KEY_INFO pInfo, __out BYTE *pbComputedHash, __inout DWORD *pcbComputedHash );
Описание: Parameters - все правильно заполнено? Цитата: pInfo [in] A pointer to a CERT_PUBLIC_KEY_INFO structure that contains the public key information to be encoded and hashed.
В данном случае из Сертификата, который уже есть. p = PCERT_PUBLIC_KEY_INFO получаю из CERT_PUBLIC_KEY_INFO т.к. это как раз указатель на эту структуру. пока грешу на этот параметр, но CertGetPublicKeyLength отработала с ним корректно. Получается, что и CryptHashPublicKeyInfo должна и хеш вернуть правильный. В свою очередь CERT_PUBLIC_KEY_INFO из контекста PCCert_Context.PCERT_INFO.CERT_PUBLIC_KEY_INFO. Отредактировано пользователем 7 июня 2012 г. 12:39:35(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,190   Сказал «Спасибо»: 621 раз Поблагодарили: 2397 раз в 1886 постах
|
MCR написал: В данном случае из Сертификата, который уже есть.
p = PCERT_PUBLIC_KEY_INFO получаю из CERT_PUBLIC_KEY_INFO т.к. это как раз указатель на эту структуру. пока грешу на этот параметр, но CertGetPublicKeyLength отработала с ним корректно. Получается, что и CryptHashPublicKeyInfo должна и хеш вернуть правильный. В свою очередь CERT_PUBLIC_KEY_INFO из контекста PCCert_Context.PCERT_INFO.CERT_PUBLIC_KEY_INFO. Что мешает тогда просто прочитать расширение сертификата? szOID_SUBJECT_KEY_IDENTIFIER = '2.5.29.14'; |
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 06.03.2012(UTC) Сообщений: 177
Сказал(а) «Спасибо»: 57 раз Поблагодарили: 11 раз в 8 постах
|
Андрей * написал:MCR написал: В данном случае из Сертификата, который уже есть.
p = PCERT_PUBLIC_KEY_INFO получаю из CERT_PUBLIC_KEY_INFO т.к. это как раз указатель на эту структуру. пока грешу на этот параметр, но CertGetPublicKeyLength отработала с ним корректно. Получается, что и CryptHashPublicKeyInfo должна и хеш вернуть правильный. В свою очередь CERT_PUBLIC_KEY_INFO из контекста PCCert_Context.PCERT_INFO.CERT_PUBLIC_KEY_INFO. Что мешает тогда просто прочитать расширение сертификата? szOID_SUBJECT_KEY_IDENTIFIER = '2.5.29.14'; Да, Андрей, так тоже можно. Но хотелось в идеале способом, который можно применить и к запросам на сертификат. Отредактировано пользователем 9 июня 2012 г. 12:44:14(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 06.03.2012(UTC) Сообщений: 177
Сказал(а) «Спасибо»: 57 раз Поблагодарили: 11 раз в 8 постах
|
Что ж, функция возвращает значение хеша всей структуры открытого ключа (sha-hash-public-key). Спасибо ей, конечно, за это, но хотелось бы получить значение SUBJECT_KEY_IDENTIFIER - он же Хеш ИД ключа (rfc-sha1) certutil'а. Его можно вычислить только по oid? Неужели нет функции в cryptlib, которая вернет его значение к примеру из структуры PCERT_PUBLIC_KEY_INFO? Отредактировано пользователем 9 июня 2012 г. 12:14:32(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,190   Сказал «Спасибо»: 621 раз Поблагодарили: 2397 раз в 1886 постах
|
MCR написал:Что ж, функция возвращает значение хеша всей структуры открытого ключа (sha-hash-public-key). Спасибо ей, конечно, за это, но хотелось бы получить значение SUBJECT_KEY_IDENTIFIER.
Его можно вычислить только по oid? Неужели нет функции в cryptlib, которая вернет его значение к примеру из структуры PCERT_PUBLIC_KEY_INFO?
http://rghost.ru/38564653 в самом запросе на сертификат и в выданном сертификате... |
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 06.03.2012(UTC) Сообщений: 177
Сказал(а) «Спасибо»: 57 раз Поблагодарили: 11 раз в 8 постах
|
Андрей * написал:MCR написал:Что ж, функция возвращает значение хеша всей структуры открытого ключа (sha-hash-public-key). Спасибо ей, конечно, за это, но хотелось бы получить значение SUBJECT_KEY_IDENTIFIER.
Его можно вычислить только по oid? Неужели нет функции в cryptlib, которая вернет его значение к примеру из структуры PCERT_PUBLIC_KEY_INFO?
http://rghost.ru/38564653 в самом запросе на сертификат и в выданном сертификате... Спасибо, Андрей. Получается парсить нужно из rgExtension. Не подскажите каким образом он туда в ASN.1 готовый попадает при создании запроса? Его генерирует автоматом некая функция? В принципе ведь так происходит? 1. CryptExportPublicKeyInfo; 2. CryptHashPublicKeyInfo; 3. CryptEncodeObject. Т.е. это и есть ASN.1 Encoded hex value? Отредактировано пользователем 9 июня 2012 г. 16:03:00(UTC)
| Причина: Не указана
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close