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

Отработанное время:
Продуктивное время:
Bug 5348 - Установка КриптоПро CSP 3.6 завершается с ошибкой   Make a simular bug
Summary: Установка КриптоПро CSP 3.6 завершается с ошибкой
Status: CLOSED FIXED
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: Установка программ / MSI (show other bugs)
Version: 1.0.12
Hardware: PC All
: P4 minor
Target Milestone: ---
Deadline: 2011-12-02
Assignee: Александр Морозов
QA Contact: Svetlana Zhukova
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 11068 42 1161 7206
  Show dependency treegraph
 
In work:
Reported: 2010-03-25 17:23 MSK by Александр Морозов
Modified: 2016-04-07 21:34 MSK (History)
7 users (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Александр Морозов 2010-03-25 17:23:33 MSK
Дистрибутив: /var/ftp/pvt/Windows/Учётные, бухгалтерские/CryptoPro CSP/3.6/csp-win32-kc1-rus.msi

Скриншот: http://bugs.etersoft.ru/attachment.cgi?id=1435

В конце установки в консоли:
err:msi:custom_get_thread_return Invalid Return Code 2
err:msi:ITERATE_Actions Execution halted, action L"InstallFinalize" returned 1603
err:msi:ITERATE_Actions Execution halted, action L"ExecuteAction" returned 1603
Comment 1 Александр Морозов 2010-03-25 18:48:51 MSK
При установке вызывается функция SslRegInstall, экспортируемая бинарником C:\windows\temp\msi973a.tmp Для нормальной работы этой функции нужен отсутствующий в реестре WINE параметр. Если создать многострочный параметр HKLM\System\CurrentControlSet\Control\Lsa\Security Packages, то строка
err:msi:custom_get_thread_return Invalid Return Code 2
при установке не появляется.
Comment 2 Александр Морозов 2010-03-25 21:22:59 MSK
Возможно, проблема вызвана тем, что RSAENH_CPCreateHash возвращает FALSE. Это в свою очередь происходит из-за того, что get_algid_info возвращает NULL.

004a:Call advapi32.CryptCreateHash(00132970,0000801e,00000000,00000000,0033fd64) ret=79677a66
004a:Call rsaenh.CPCreateHash(00000001,0000801e,00000000,00000000,00135d9c) ret=7e72e3c0
004a:Call KERNEL32.SetLastError(80090008) ret=7e01dfb7
004a:Ret  KERNEL32.SetLastError() retval=80090008 ret=7e01dfb7
004a:Ret  rsaenh.CPCreateHash() retval=00000000 ret=7e72e3c0
004a:Ret  advapi32.CryptCreateHash() retval=00000000 ret=79677a66
Comment 3 Александр Морозов 2010-03-26 14:43:03 MSK
0000801e - это, видимо, CALG_GR3411, определённый в WinCryptEx.h в КриптоПро SDK.
Comment 4 Александр Морозов 2010-03-26 17:03:36 MSK
То, о чём говорится в комментариях #2 и #3 - это установка с crypt32.dll из Win2000.
Comment 5 Александр Морозов 2010-03-26 17:50:53 MSK
КриптоПро CSP можно установить вот так:
wine msiexec -i csp-win32-kc1-rus.msi DISABLEDRIVERTEST=1
Перед этим надо не забыть создать в реестре многостроковый параметр
HKLM\System\CurrentControlSet\Control\Lsa\Security Packages
Comment 6 Александр Морозов 2010-03-26 18:21:43 MSK
> Перед этим надо не забыть создать в реестре
> многостроковый параметр
> HKLM\System\CurrentControlSet\Control\Lsa\Security Packages

Добавил соответствующий reg-файл в закрытую часть.
Comment 7 Vitaly Lipatov 2010-03-26 18:49:57 MSK
(In reply to comment #6)
> > Перед этим надо не забыть создать в реестре
> > многостроковый параметр
> > HKLM\System\CurrentControlSet\Control\Lsa\Security Packages
> 
> Добавил соответствующий reg-файл в закрытую
> часть.
Если есть стандартная часть, лучше также отправить патч на wine.inf в winehq 

Comment 8 Александр Морозов 2010-03-26 18:58:00 MSK
> Если есть стандартная часть, лучше также
> отправить патч на wine.inf в winehq 

Что такое стандартная часть?
Comment 9 Александр Морозов 2010-03-26 19:04:43 MSK
> HKLM\System\CurrentControlSet\Control\Lsa\Security Packages
Про этот параметр реестра:
http://msdn.microsoft.com/en-us/library/aa379392(VS.85).aspx
Comment 10 Vitaly Lipatov 2010-03-26 20:37:39 MSK
(In reply to comment #8)
> > Если есть стандартная часть, лучше также
> > отправить патч на wine.inf в winehq 
> 
> Что такое стандартная часть?
* s/есть/это
Ну я имел в виду, что если эта ветка присутствует в Windows по умолчанию, её надо добавить в wine.inf 

Comment 11 Александр Морозов 2010-03-29 15:11:46 MSD
В апстримовом wine в реестре отсутствует параметр HKLM\System\CurrentControlSet\Control\Lsa\Security Packages, но есть пустая ветка HKLM\System\CurrentControlSet\Control\Lsa. При этом установка с параметром DISABLEDRIVERTEST=1 завершается успешно даже если удалить HKLM\System\CurrentControlSet\Control\Lsa. Значок КриптоПро CSP в апстримовом wine гораздо менее функционален: вылезают ошибки, отображается меньше вкладок.

Создание параметра HKLM\System\CurrentControlSet\Control\Lsa\Security Packages ни к какому улучшению в работе установщика в апстримовом wine не приводит, так что не вижу смысла посылать патч.
Comment 12 Александр Морозов 2010-03-29 20:58:22 MSD
При установке без DISABLEDRIVERTEST=1 (со встроенной crypt32.dll) запускается
"C:\Program Files\Crypto Pro\CSP\setuptest.exe" cpcspi.dll
При выполнении данного процеесса вызывается функция CryptHashMessage, которая завершается с ошибкой. Эта ошибка вызвана неудачным завершением CryptFindOIDInfo.
Comment 13 Александр Морозов 2010-03-30 20:34:15 MSD
В Windows можно добавить ключ в ветку HKLM\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 0\CryptDllFindOIDInfo
и с помощью функции CryptFindOIDInfo получить информацию об OID. В WINE эта функция берёт данные из списка oidInfo, который формируется на основе жёстко прописанного в oid.c массива данных.
Реализовал обновление списка oidInfo на основе данных из реестра.
Теперь при установке со встроенной crypt32.dll наблюдается та же проблема, что и при установке с версией из Windows:
003a:Ret  rsaenh.CPCreateHash() retval=00000000 ret=7e3d13c0
003a:Ret  advapi32.CryptCreateHash() retval=00000000 ret=7e745879
Функция из rsaenh.dll скорее всего вызывается по ошибке: используется не тот криптопровайдер.
Comment 14 Александр Морозов 2010-03-31 15:10:06 MSD
Удалил reg-файл, создающий HKLM\System\CurrentControlSet\Control\Lsa\Security Packages, из закрытой части. Отправил в рассылку патчи, добавляющие этот параметр в wine.inf.in.
Comment 15 Александр Морозов 2010-04-20 17:50:27 MSD
Сделал, чтобы при выполнении CryptHashMessage использовался не дефолтный криптопровайдер, а тот, который поддерживающий нужный алгоритм. Теперь установка с дефолтным выбором устанавливаемых компонентов завершается успешно.
Comment 16 Александр Морозов 2010-04-20 17:56:31 MSD
Установка завершается с ошибкой, если отметить галочкой "Использовать службу хранения ключей (можно настроить позже)".
Comment 17 Александр Морозов 2010-04-21 20:01:36 MSD
При установке с "Использовать службу хранения ключей (можно настроить позже)" вызывается
'"C:\Program Files\Crypto Pro\CSP\setuptest.exe" cpcspr.dll'
Если запустить эту программу вручную, то она возвращает ненулевой код возврата, что скорее всего и воспринимается инсталлятором как ошибка. В логах при этом видно следующее:
005c:Call KERNEL32.LoadLibraryW(00409230 L"cpcrypt.dll") ret=004010ab
............
005c:Ret  KERNEL32.LoadLibraryW() retval=611b0000 ret=004010ab
005c:Call KERNEL32.GetProcAddress(611b0000,00409248 "SetThreadDefaultCryptProv") ret=004010bd
005c:Ret  KERNEL32.GetProcAddress() retval=611bb310 ret=004010bd
............
005c:Call crypt32.I_CryptGetDefaultCryptProv(00000000) ret=004010e2
005c:Call advapi32.CryptAcquireContextW(0033fd4c,00000000,0033fcee L"Microsoft Enhanced Cryptographic Provider v1.0",00000001,f0000000) ret=7e739b59
............
005c:Ret  advapi32.CryptAcquireContextW() retval=00000001 ret=7e739b59
............
005c:Ret  crypt32.I_CryptGetDefaultCryptProv() retval=00132658 ret=004010e2
............
005c:Call KERNEL32.ExitProcess(8009001e) ret=0040150f
cpcrypt.dll входит в состав КриптоПро CSP.
По-видимому, cpcrypt.SetThreadDefaultCryptProv должна как-то менять поведение crypt32.I_CryptGetDefaultCryptProv, а в WINE этого не происходит.
Comment 18 Александр Морозов 2010-04-22 17:31:50 MSD
При выполнении setuptest.exe cpcspr.dll cpcrypt.SetThreadDefaultCryptProv вызывается с аргументом -1. После этого вызывается crypt32.I_CryptGetDefaultCryptProv. Если эта функция возвращает -1, то программа завершается с кодом возврата 0, иначе она завершается с кодом 8009001Eh.

cpcrypt.SetThreadDefaultCryptProv(arg) вызывает TlsSetValue(index, arg), index - некая переменная, хранящаяся в cpcrypt.dll. Перед вызовом TlsSetValue проверяется, что она не равна -1.
В wine index оказывается равным 4:
003c:Call KERNEL32.TlsSetValue(00000004,ffffffff) ret=611bb32d
003c:Ret  KERNEL32.TlsSetValue() retval=00000001 ret=611bb32d
Comment 19 Абросимов Виктор 2010-05-02 23:31:37 MSD
wine 1.0.12-eter5.2/4. КриптоПро версия 3.6.1.  Установку запустил командой:
msiexec  /i csp-win32-kc1-rus.msi 
Установка с параметрами по умолчанию прошла без проблем. После этого запустил wine control и выбрал КриптоПро пощелкал по всем пунктам меню. В чем проблема его запуска ? Что искать ?
Comment 20 Jemoytel Sergey 2010-05-11 11:51:34 MSD
Проблема не в запуске а в самой работе КриптоПРО
1. попробуйте добавить любой сертификат
2. попробуйте добавить контейнеры 
3. попробуйте просмотреть сертификаты в контейнерах (если конечно они имеются)

Дополнительно не выстраиваются цепочки сертификатов при их добавлении. 

Для примера есть корневые сертификаты и личные сертификаты с контейнером закрытого ключа.
При добавлении личного сертификата и корневого должен выстроиться путь сертификата. Этого не происходит. Также при добавлении личного сертификата с контейнером закрытого ключа должен выстроиться путь к контейнеру закрытого ключа. Этого не происходит. В итоге все части при просмотре отображаются разрозненно.

При добавлении нового сертификата программа при выборе файла сертификата не отображает сертификаты в папке. После нескольких щелчков по окну выбора сертификата виснет намертво.

КриптоПРО 2.0 (Build 2104) с постоянной лицензией

настроены считыватели:
дисковод, а:  - физический floppy
дисковод, b: - виртуальный флоппи
реестр


Comment 21 Jemoytel Sergey 2010-05-11 12:03:29 MSD
Предложенный метод http://www.cryptopro.ru/cryptopro/forum2/default.aspx?g=posts&t=87

[quote]
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 0\CryptDllFindOIDInfo\1.2.643.2.2.3!4]
"ExtraInfo"=hex:23,2e,00,00,04,00,00,00,4b,00,00,00


[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 0\CryptDllFindOIDInfo\1.2.643.2.2.4!4]
"ExtraInfo"=hex:1e,2e,00,00,04,00,00,00,4b,00,00,00[/quote]

не работает.
Comment 22 Александр Морозов 2010-05-14 18:08:17 MSD
> В чем проблема его запуска ? Что искать ?
См. http://bugs.etersoft.ru/show_bug.cgi?id=5348#c16

> Проблема не в запуске а в самой работе
> КриптоПРО
> 1. попробуйте добавить любой сертификат
> 2. попробуйте добавить контейнеры 
> 3. попробуйте просмотреть сертификаты в
> контейнерах (если конечно они имеются)
> 
> Дополнительно не выстраиваются цепочки
> сертификатов при их добавлении. 
Если у вас есть время и вы хотите поспособствовать решению данных проблем, создайте по ним отдельные баги с подробным пошаговым описанием того, как их воспроизвести.
Comment 23 Абросимов Виктор 2010-05-16 23:27:46 MSD
Создал отдельную ошибку http://bugs.etersoft.ru/show_bug.cgi?id=5587 
Comment 24 Александр Морозов 2010-06-04 18:47:03 MSD
Функция cpcrypt.SetThreadDefaultCryptProv работает (меняет значение, возвращаемое I_CryptGetDefaultCryptProv) в WINE после выполнения cpcrypt.CProDllPatch. В Windows она работает всегда. Тест: wine-etersoft-devel/crypt/cprotest.c

При запуске WINE с установленным КриптоПро выполняются cpcrypt.CProDllPatch и cpadvai.CProDllPatch. Это видно в логе +snoop.
Comment 25 Svetlana Zhukova 2011-06-22 13:22:25 MSK
Так получилось,что нужно было проверить установку именно этой версии программы.

на WINE@Etersoft 1.0 SQL 1.0.12-eter11.13/21

fixme:exec:SHELL_execute flags ignored: 0x00000100

на WINE@Etersoft version 1.3.14-eter1.3 установка не запускается:

wine: ������ � ������� EXE ��� P:\Windows\��������\Argos-Nalogoplatelchik\csp-win32-kc1-rus.msi
fixme:process:__wine_kernel_init 1: L"P:\\Windows\\Правовые\\Argos-Nalogoplatelchik\\"(L"C:\\windows")
Comment 26 Svetlana Zhukova 2011-06-22 13:32:04 MSK
wine@cellar bottle bugs/7206-1
Comment 27 Александр Морозов 2011-07-13 14:54:47 MSK
> Установка завершается с ошибкой, если отметить галочкой "Использовать службу
> хранения ключей (можно настроить позже)".
Эту проблему вынес в отдельный баг: https://bugs.etersoft.ru/show_bug.cgi?id=7438

Установка с настройками по умолчанию завершается успешно.
Comment 28 Александр Морозов 2011-07-13 19:50:14 MSK
В текущем eterhack (1.3.18-alt1.2) установщик не запускается:
$ ww msiexec -i csp-win32-kc1-rus.msi 
fixme:storage:create_storagefile Storage share mode not implemented.
err:ole:CoGetClassObject class {6c736db1-bd94-11d0-8a23-00aa00b58e10} not registered
err:ole:CoGetClassObject no class object {6c736db1-bd94-11d0-8a23-00aa00b58e10} could be created for context 0x1
err:ole:CoGetClassObject class {6c736db1-bd94-11d0-8a23-00aa00b58e10} not registered
err:ole:CoGetClassObject no class object {6c736db1-bd94-11d0-8a23-00aa00b58e10} could be created for context 0x1
err:ntdll:RtlpWaitForCriticalSection section 0x690795c0 "x11drv_main.c: X11DRV_CritSection" wait timed out in thread 0035, blocked by 003a, retrying (60 sec)
err:ntdll:RtlpWaitForCriticalSection section 0x690795c0 "x11drv_main.c: X11DRV_CritSection" wait timed out in thread 0035, blocked by 003a, retrying (60 sec)
wine: Critical section 690795c0 wait failed at address 0x7bc37a5b (thread 0035), starting debugger...
Unhandled exception: wait failed on critical section 0x690795c0 X11DRV_CritSection in 32-bit code (0x7bc37a5b).
err:seh:raise_exception Unhandled exception code c0000194 flags 0 addr 0x7bc37a5b
Comment 29 Александр Морозов 2011-07-13 21:49:51 MSK
Проблема была вызвана коммитом
commit 308c05371f47566f05c6755cd3251cfebd1b3e2c
Author: Alexander Morozov <amorozov@etersoft.ru>
Date:   Thu Aug 12 15:50:34 2010 +0400

    winex11.drv: Do not call user32 functions if wine_tsx11_lock is called (eterbug #5799).
    
    Conflicts:
    
        dlls/winex11.drv/mouse.c

Исправил.
Comment 30 Александр Морозов 2011-07-20 15:43:59 MSK
На 1.3.19-alt1.1 установка снова завершается с ошибкой.
Comment 31 Александр Морозов 2011-07-20 18:20:46 MSK
Исправил. Патч:
msi: Fix a regression in installing CryptoPro CSP 3.6 (eterbug #5348).
Comment 32 Svetlana Zhukova 2011-07-29 15:33:37 MSK
wine@eterhack bottle bugs/5348

WINE@Etersoft version 1.3.25-eter1.3
ww msiexec -i csp-win32-kc1-rus.msi - ставится

WINE@Etersoft 1.0 SQL 1.7.1-eter1.2/2
wine csp-win32-kc1-rus.msi - не ставится:

Warning: there are some errors in winediag output. Run winediag command and check it.
err:usbhub:initialize_usbhub failed to initialize libusb
fixme:exec:SHELL_execute flags ignored: 0x00000100

1.0.12 - ставится как через wine так и через ww msiexec -i
Comment 33 Абросимов Виктор 2012-09-21 00:21:23 MSK
На последней сборки wine@etersof 2.0.2 eter4/15 Установка КриптоПро CSP 3.6 проходит без проблем.  

Так же пробовал установить КрпитоПРО 3.6 R3 , она также установилась без проблем.
Comment 34 Svetlana Zhukova 2012-10-05 10:58:35 MSK
Принято.
wine@eter-2 bottle bugs/5348-1
WINE@Etersoft SQL 2.0.2-eter15/4