Ключевое слово в защите информации
ключевое слово
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline MCR  
#1 Оставлено : 6 июня 2012 г. 21:06:23(UTC)
MCR

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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
);

В С возращается совсем не то, чтобы хотелось видеть (хеш не совпадает). Brick wall

Функция отрабатывает 2 раза в true.

Может грубая ошибка есть в параметрах?

2 темы обсуждения:
http://www.cryptopro.ru/....aspx?g=posts&t=4276
http://www.cryptopro.ru/...ro/forum/view.asp?q=2367

Отредактировано пользователем 6 июня 2012 г. 21:15:02(UTC)  | Причина: Не указана

Offline Андрей Писарев  
#2 Оставлено : 6 июня 2012 г. 23:06:37(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,190
Мужчина
Российская Федерация

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
MCR написал:


Подскажите, пожалуйста, с какими параметрами нужно правильно вызывать функцию, чтобы получить Subject Key Identifier (Идентификатор ключа субъекта)

2 темы обсуждения:
http://www.cryptopro.ru/....aspx?g=posts&t=4276
http://www.cryptopro.ru/...ro/forum/view.asp?q=2367



Цитата:
чтобы получить"

Из "чего"? из запроса на сертификат или есть уже сам сертификат?

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)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline MCR  
#3 Оставлено : 7 июня 2012 г. 12:36:19(UTC)
MCR

Статус: Активный участник

Группы: Участники
Зарегистрирован: 06.03.2012(UTC)
Сообщений: 177

Сказал(а) «Спасибо»: 57 раз
Поблагодарили: 11 раз в 8 постах
Андрей * написал:
MCR написал:


Подскажите, пожалуйста, с какими параметрами нужно правильно вызывать функцию, чтобы получить Subject Key Identifier (Идентификатор ключа субъекта)

2 темы обсуждения:
http://www.cryptopro.ru/....aspx?g=posts&t=4276
http://www.cryptopro.ru/...ro/forum/view.asp?q=2367



Цитата:
чтобы получить"

Из "чего"? из запроса на сертификат или есть уже сам сертификат?

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)  | Причина: Не указана

Offline Андрей Писарев  
#4 Оставлено : 7 июня 2012 г. 13:35:32(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';


Техническую поддержку оказываем тут
Наша база знаний
Offline MCR  
#5 Оставлено : 7 июня 2012 г. 16:46:51(UTC)
MCR

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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';



Да, Андрей, так тоже можно.Think
Но хотелось в идеале способом, который можно применить и к запросам на сертификат.

Отредактировано пользователем 9 июня 2012 г. 12:44:14(UTC)  | Причина: Не указана

Offline MCR  
#6 Оставлено : 9 июня 2012 г. 12:06:59(UTC)
MCR

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline Андрей Писарев  
#7 Оставлено : 9 июня 2012 г. 12:14:21(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
в самом запросе на сертификат и в выданном сертификате...
Техническую поддержку оказываем тут
Наша база знаний
Offline MCR  
#8 Оставлено : 9 июня 2012 г. 13:15:27(UTC)
MCR

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.