Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 5665 - Проблема с проверкой подписи сертификата GNIVC FNS RUS   Make a simular bug
Summary: Проблема с проверкой подписи сертификата GNIVC FNS RUS
Status: CLOSED FIXED
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: Шифрование / ЭЦП (show other bugs)
Version: 1.0.12
Hardware: PC All
: P4 minor
Target Milestone: ---
Assignee: Александр Морозов
QA Contact: Александр Морозов
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 1161 7438
  Show dependency treegraph
 
In work:
Reported: 2010-06-18 14:10 MSD by Александр Морозов
Modified: 2017-08-07 18:39 MSK (History)
1 user (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments
Сертификат GNIVC FNS RUS (798 bytes, application/x-x509-ca-cert)
2010-11-18 03:58 MSK, Александр Морозов
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Александр Морозов 2010-06-18 14:10:16 MSD
Created attachment 1734 [details]
Сертификат GNIVC FNS RUS

При просмотре сертификата GNIVC FNS RUS на вкладке "Certification Path" почему-то выводится "This certificate has an invalid signature."
В Windows с установленным КриптоПро CSP 3.6 такой проблемы нет.
Утилита для работы с сертификатами:
wine-etersoft-devel/cert/cert.c
Comment 1 Александр Морозов 2010-06-18 20:37:20 MSD
Проблема с функцией CryptVerifyCertificateSignatureEx, вызываемой из CRYPT_CheckRootCert
Comment 2 Александр Морозов 2010-06-21 20:13:41 MSD
При выполнении CryptVerifyCertificateSignatureEx вызывается CryptImportPublicKeyInfoEx. При вызове последней функции с теми же аргументами в Windows, она завершается неудачно.
Comment 3 Александр Морозов 2010-06-21 20:31:05 MSD
Если в Windows передавать CryptImportPublicKeyInfoEx другой ALG_ID, то она завершается успешно.
Comment 4 Александр Морозов 2010-06-21 20:50:19 MSD
Это из-за бага в update_oid_info. Там не заполнялось поле cbData для ExtraInfo.
Comment 5 Александр Морозов 2010-06-21 20:53:55 MSD
Таким образом, проблема где-то в CryptImportPublicKeyInfoEx
Comment 6 Александр Морозов 2010-06-23 19:14:46 MSD
http://www.cryptopro.ru/cryptopro/forum/view.asp?q=1980
http://www.cryptopro.ru/CryptoPro/forum/view.asp?q=814
Судя по всему, в Windows для декодирования открытого ключа могут использоваться специальные функции, записи о которых хранятся в реестре в ключе HKLM\Software\Microsoft\Cryptography\OID\EncodingType 1\CryptDllConvertPublicKeyInfo.
Comment 7 Александр Морозов 2010-06-24 17:52:12 MSD
Патчи:
crypt32: Fix ExtraInfo initialization (eterbug #5665).
crypt32: Add support for CryptDllConvertPublicKeyInfo (eterbug #5665).
crypt32: Find a provider for used algorithm (eterbug #5665).

Последний патч делает так, чтобы выбирался подходящий криптопровайдер. Не факт, что такое поведение соответствует поведению Windows. КриптоПро CSP, по-видимому, как-то патчит виндовые dll (судя по описанию и экспортам некоторых dll из состава КриптоПро CSP).
Comment 8 Александр Морозов 2011-07-12 20:36:03 MSK
Бутылка crypto/cpro36
wine-etersoft-1.0.12-alt11.15
wine-etersoft-gl-1.0.12-alt11.15
wine-etersoft-sql-1.0.12-alt21
Всё ОК

Бутылка crypto/cpro36 в контейнере eterhack
Текущий eterhack (fca472b2a9a5f620f30a0cdc202127ff2249d998)
На вкладке 'Путь сертификации' выводится 'Подпись сертификата неверна.'
Comment 9 Александр Морозов 2011-07-13 17:38:07 MSK
> Бутылка crypto/cpro36 в контейнере eterhack
> Текущий eterhack (fca472b2a9a5f620f30a0cdc202127ff2249d998)
> На вкладке 'Путь сертификации' выводится 'Подпись сертификата неверна.'
В бутылке, созданной в 1.0.12, работает (КриптоПро там также установлен с помощью 1.0.12).
Comment 10 Александр Морозов 2011-07-14 22:04:30 MSK
При установке КриптоПро с помощью eterhack не создаётся запись о криптопровайдере в HKLM\Software\Microsoft\Cryptography\Defaults.
Comment 11 Александр Морозов 2011-07-15 20:56:04 MSK
Удаление ключей реестра происходит при выполнении действия DelCPCSPs внутри действия InstallFinalize. В логе установки, полученном на Windows, это действие также присутствует, но ключи в реестре после установки появляются.
Comment 12 Александр Морозов 2011-07-15 20:58:10 MSK
> Удаление ключей реестра
Нужные ключи в реестре сначала создаются, а затем почему-то удаляются. В том, что они создаются, можно убедиться, если подправить код msi так, чтобы действие DelCPCSPs не выполнялось.
Comment 13 Александр Морозов 2011-07-18 20:45:50 MSK
Сделал, чтобы реальное создание записей в реестре происходило при выполнении InstallFinalize.
Comment 14 Александр Морозов 2011-10-21 20:16:45 MSK
Работает на 1.0.12-eter13.4/27 и 1.3.27/1.7.1-eter1.15/3