Bug 5665

Summary: Проблема с проверкой подписи сертификата GNIVC FNS RUS
Product: WINE@Etersoft Reporter: Александр Морозов <amorozov>
Component: Шифрование / ЭЦПAssignee: Александр Морозов <amorozov>
Status: CLOSED FIXED QA Contact: Александр Морозов <amorozov>
Severity: minor    
Priority: P4 CC: lav
Version: 1.0.12   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 1161, 7438    
Attachments: Сертификат GNIVC FNS RUS

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