Статус: Новичок
Группы: Участники
Зарегистрирован: 27.05.2009(UTC) Сообщений: 7
|
Доброго времени суток.
Использую функции CryptoApi. Имею экспортированный в формате X509 сертификат.
Импортирую сертификат в CryptoPro CSP. Достаю оттуда публичный ключ в byte*. Получаю, что длина массива 66.
Достаю публичный ключ из контейнера CryptoPro CSP с помощью функции GetUserKey, получаю длину массива 100.
Почему?
Дело в том, что я подписываю данные. Мне необходимо при верификации данных доставать публичный ключ из сертификата пользователя, а не держать отдельно еще и файл с публичным ключом. Пытаюсь так делать, но CryptVerifySignature возвращает false, а если импортирую публичный ключ из файла, то true. Почему?
Вот пример кода: 1. При экспорте/импорте публичного ключа CryptGetUserKey(hProv, AT_SIGNATURE, phPubKey); CryptExportKey(hPubKey, NULL, PUBLICKEYBLOB, 0, publicKeyBlob, dwBlobLen); CryptImportKey(phProv, publicKeyBlob, publicKeyBlobLength, NULL, 0, phPublicKeyImported) //Получаю ключ длиной 100 байт
2. При импорте сертификата: CERT_CONTEXT context = CertCreateCertificateContext(X509_ASN_ENCODING, certEncoded, certEncodedLength); CryptImportPublicKeyInfoEx(hProv, X509_ASN_ENCODING, context->pCertInfo->SubjectPublicKeyInfo, 0, 0, NULL, phKey); //Получаю ключ длиной 66 байт.
Заранее благодарю.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
А почему у Вас в вызове CryptImportPublicKeyInfoEx 4й параметр aiKeyAlg 0? По MSDN Цитата:aiKeyAlg An ALG_ID structure that contains a CSP-specific algorithm to override the CALG_RSA_KEYX default algorithm. Вот пример - http://www.cryptopro.ru/...ro/forum/view.asp?q=2674Или же Вы можете использовать CryptImportPublicKeyInfo, там такого параметра нет. Отредактировано пользователем 29 мая 2009 г. 17:42:42(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 27.05.2009(UTC) Сообщений: 7
|
CryptImportPublicKeyInfo пробовали, результат такой же.
Ваша ссылка не работает.
Что касается данной функции, то параметры взяты из примера CryptoPro_SDK\Samples\ExportingCertificate
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
mark antony написал: Что касается данной функции, то параметры взяты из примера CryptoPro_SDK\Samples\ExportingCertificate
Точку в ссылке убрал. А сам пример работает? |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 27.05.2009(UTC) Сообщений: 7
|
Спасибо за помощь.
Попробовали как в примере параметр CALG_GR3410 - результат не изменился.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Можно еще такой эксперимент сделать - после вызова CryptImportPublicKeyInfoEx сделать CryptExportKey и посмотреть, отличается ли ключи из сертификата и контейнера. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close