Например СБИС+ для криптографии использует CryptoPRO, обращаясь к нему через стандартный для Windows интерфейс - CryptoAPI. Есть два варианта: 1. написать враппер для линуксового CryptoPRO 2. дописать поддержку USB в Wine, чтобы заработал виндовый CryptoPRO
wine cpload.exe -runserver выводит окно с сообщением: "Во время запуска службы была выявлена ошибка установки КриптоПро CSP на Ваш компьютер. Попробуйте переустановить КриптоПро CSP. Если это не устранит ошибку, возможно, Ваша операционная система не поддерживается. За поддержкой обратитесь к разработчику КриптоПро CSP на сайт www.cryptopro.ru."
По-видимому, ошибка связана с неудачей при загрузке cpshar.dll: [wine@cellar CSP]$ WINEDEBUG=relay,advapi,reg wine cpload.exe -runserver 2>&1 | grep LoadLibrary 001f:Call KERNEL32.LoadLibraryA(7fdefd44 "C:\\Program Files\\Crypto Pro\\CSP\\cpshar.dll") ret=004037f8 001f:Ret KERNEL32.LoadLibraryA() retval=00000000 ret=004037f8 [wine@cellar CSP]$ pwd /home/wine/.wine-sbis-crypto/dosdevices/c:/Program Files/Crypto Pro/CSP [wine@cellar CSP]$ ls -l cpshar.dll -rw-rw-r-- 1 wine winedevel 94208 Окт 25 2002 cpshar.dll
Created attachment 338 [details] Часть лога WINEDEBUG=relay,advapi,reg,seh wine cpload.exe -runserver
Подскажите пож-ста, об оставшихся вопросах и сроках ввода в эксплуатацию СБИС++?...Заранее СПАСИБО!!!...
CryptoPro CSP 3.6 поддерживает Linux: http://www.cryptopro.ru/cryptopro/products/csp/beta.htm
Нужно разобраться глобально - какая сейчас ситуация, каково отношение фирмы-разработчика (они брали на тестирование - был ли ответ?), что технически мешает работать, как проверить, что всё работает...
Так как есть CryptoPro для Linux, то можно написать обёртку, через которую с ним будут работать Windows-программы. Библиотеки CryptoPro для Linux экспортируют ряд Windows-функций, которые реализованы или будут в будущем реализованы в WINE. Это, например, GetLastError, SetLastError, ряд функций из crypt32.dll. По-видимому, придётся сделать переменную окружения, переключающую crypt32 на использование реализаций из библиотек CryptoPro. Что касается GetLastEror, то видимо надо будет из каждой обёртки, вызывающей функцию CryptoPro, вызывать CryptoPro-версию GetLastError, а затем wine-версию SetLastError. > как проверить, что всё работает... Есть примеры программ. Но я не уверен, что они все функции покрывают. Вообще API не такое уж маленькое, так что, ИМХО, желательно для начала ориентироваться на какое-то Win-приложение, использующее CryptoPro, и сделать для начала ту часть обёрток, которая этим приложением используется.
(In reply to comment #7) > Так как есть CryptoPro для Linux, то можно написать Всё-таки, что с работой нативных библиотек? Мне кажется это более перспективным. Возможно, стоит связаться с теми, кто тестировал в КриптоКоме. Я пока не нашёл переписку правда...
Created attachment 1435 [details] Установка КриптоПро CSP 3.6 завершается с ошибкой
Created attachment 1436 [details] КриптоПро CSP 3.0 При запуске установщика появляется такая ошибка. После нажатия на ОК установщик завершается. В консоли при этом: fixme:shell:SHAutoComplete SHAutoComplete stub fixme:exec:SHELL_execute flags ignored: 0x00000180 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:ITypeInfo_fnInvoke did not find member id 0, flags 0x2!
КриптоПро CSP 2.0 устанавливается успешно. Но при следующем запуске wine происходит ошибка при вызове нереализованной функции rpcrt4.dll.RpcSsDontSerializeContext.
В wine невозможно установить сертификат. Как это делается в Windows, можно почитать здесь: http://ereport.sbis.ru/polzovat/cert_change/korn-cert В Windows при открытии сертификата выполняется rundll32.exe cryptext.dll,CryptExtOpenCER center_cert.cer В wine не реализована библиотека cryptext.dll.
Кроме описанного выше способа в Windows можно импортировать сертификаты через "Свойства обозревателя" в панели управления (Содержание -> Сертификаты) и с помощью утилиты CertMgr из MS Platform SDK. Диалог в обоих случаях стандартный, но из какой он dll-ки не ясно. В wine можно поставить IE6 и после этого использовать "Свойства обозревателя" из панели управления. Но в wine нельзя добавить сертификат в "Доверенные корневые центры сертификации". Такого хранилища нету.
(In reply to comment #13) > Кроме описанного выше способа в Windows можно > импортировать сертификаты через "Свойства > обозревателя" в панели управления > (Содержание -> Сертификаты) и с помощью > утилиты CertMgr из MS Platform SDK. Диалог в обоих > случаях стандартный, но из какой он dll-ки не > ясно. Диалог создаётся функцией CryptUIDlgCertMgr из cryptui.dll. Встроенная в wine реализация не очень надёжна, падает при ряде действий.
Сделал программу, создающую диалог с помощью CryptUIDlgCertMgr: wine-etersoft-devel/cert С её помощью на свежесозданной .wine можно добавить сертификат в "Trusted Root Certification Authorities" (это то же, что и "Доверенные корневые центры сертификации"). При установке IE6 ставится ряд Win-бибилотек и в "Доверенные корневые центры сертификации" добавить сертификат уже не удаётся.
Тема на форуме CryptoPro http://www.cryptopro.ru/cryptopro/forum2/default.aspx?g=posts&t=87
В WINE не работает программа-пример из SDK, создающая контейнер секретного ключа. $ WINEDEBUG=+crypt wine CreatingKeyContainer.exe Test Warning: there are some errors in winediag output. Run winediag command and check it. trace:crypt:CryptAcquireContextA (0x453480, Test, (null), 75, 00000000) trace:crypt:CryptAcquireContextW (0x453480, L"Test", (null), 75, 00000000) trace:crypt:CryptAcquireContextA (0x453480, Test, (null), 75, 00000008) trace:crypt:CryptAcquireContextW (0x453480, L"Test", (null), 75, 00000008) A new key container has been created. trace:crypt:CryptGetProvParam (0x1317a8, 6, (nil), 0x33fe9c, 00000000) trace:crypt:CryptGetProvParam (0x1317a8, 6, 0x571498, 0x33fe9c, 00000000) A crypto context has been acquired and The name on the key container is Test trace:crypt:CryptGetUserKey (0x1317a8, 2, 0x453484) No signature key is available. Error number : 0x5 Error description: An error other than NTE_NO_KEY getting signature key. trace:crypt:CryptReleaseContext (0x1317a8, 00000000)
Оказалось, что CreatingKeyContainer.exe не создаёт контейнер из-за того, что завершается с ошибкой GetConsoleMode. Если сделать, чтобы она всегда возвращала TRUE, то контейнер создаётся.
Проблема не проявляется при запуске с перенаправлением вывода: $ wine CreatingKeyContainer.exe Test_container > ckc.log $ wine CreatingKeyContainer.exe Test_container | cat
Для работы некоторых программ-примеров из SDK надо кое-что создать. Разбираюсь, как это сделать в WINE.
Сделал утилиту для создания сертификатов с помощью КриптоПро: wine-etersoft-devel/cert/mkcert.c Но в WINE она не работает: $ wine mkcert.exe Container1 anonymous CertCreateSelfSignCertificate failed: 57 57 - это ERROR_ADAP_HDW_ERR
> 57 - это ERROR_ADAP_HDW_ERR Упс... номер ошибки выводится в 16-ричной системе счисления, так что это ERROR_INVALID_PARAMETER
Нельзя ли для начала максимально использовать dll из Windows.
> Нельзя ли для начала максимально > использовать dll из Windows. Вроде бы нет лицензионно чистого способа установить виндовую crypt32.dll. Даже если с ней всё будет работать, какой от этого толк?
(In reply to comment #24) > > Нельзя ли для начала максимально > > использовать dll из Windows. > Вроде бы нет лицензионно чистого способа > установить виндовую crypt32.dll. Даже если с ней > всё будет работать, какой от этого толк? Хочется в первую очередь работающую схему. Детали типа DLL мы подберём, это уже другая задача.
Скопировал crypt32.dll и msasn1.dll из Win2000. Написанная мной утилита для создания сертификатов работает. Не работает копирование контейнеров в Панель управления -> КриптоПро CSP -> Сервис -> Скопировать контейнер... Выдаётся ошибка "Invalid parameter". Протестировал работу c КриптоПро 2.0 программ-примеров из директории CSP в SDK для КриптоПро 3.6. CEnvelop - vbs-скрипт, пока пропустил CodingData - работает CreatingHash - работает CreatingKeyContainer - работает CryptAcquireContext - работает только при запуске без аргументов, при запуске с -silent выдаёт ошибку "Error occurred creating a signature key", в Win2000 то же самое CryptMessages - ошибка "Encryption failed" CryptMsgSign - работает CSignData - vbs-скрипт, пока пропустил DecryptFile - работает DerivingSessionKey - работает DuplicatingHash - работает DuplicatingSessionKey - работает EncryptFile - работает EnumeratingProviders - работает ExportInFile - работает ExportingCertificate - работает ExportingSessionKey - работает KernelMode - драйвер, пока пропустил KeyCopy - ошибка "Error during CryptSetKeyParam" Request - vbs-скрипт, пока пропустил SessionKeyParameters - работает SigningHash - работает SILENT - работает WordSignCheck - .NET, пока пропустил XMLSignForVerify - для работы нужен msxml5, пока пропустил XMLVerify - для работы нужен msxml5, пока пропустил XMLVerifyTwoSigs - для работы нужен msxml5, пока пропустил
Добавил стаб для RpcSsDontSerializeContext, чтобы не происходило падения при запуске wine с установленным КриптоПро CSP 2.0. Исправил баг, не дававший копировать контейнер.
> Исправил баг, не дававший копировать контейнер. Проблема с CryptMessages также ушла.
Пофиксил поддержку PP_CLIENT_HWND в CryptSetProvParam.
В нативной и встроенной crypt32.dll, судя по всему, не полностью совместимо организуется хранение сертификатов. При запуске cert.exe (wine-etersoft-devel/cert/cert.c) с нативной и встроенной библиотеками отличается видимый набор сертификатов. При использовании нативной crypt32.dll не работает утилита для перечисления доверенных корневых сертификатов certenum.exe (wine-etersoft-devel/cert/certenum.c): $ ww certenum.exe fixme:ole:NdrCorrelationInitialize (0x60f894, 0x60f494, 1024, 0x0): stub fixme:ole:NdrCorrelationInitialize (0x60f858, 0x60f458, 1024, 0x0): stub CertOpenStore failed: 80092004 $ WINEDLLOVERRIDES="rpcrt4=n" ww certenum.exe err:service:MACHINE_HANDLEW_bind Couldn't connect to services.exe: error code 1703 err:service:MACHINE_HANDLEW_bind Couldn't connect to services.exe: error code 1703 CertOpenStore failed: 80092004
Написанное выше относится к crypt32.dll (и msasn1.dll) из Win2000.
Created attachment 2167 [details] КриптоПро основаная закладка wine eter8.20-19. Установка КриптоПро CSP прошла без проблем. через wine control захожу в настройку КриптоПРо. 1) На закладке "Общее" не отображается версия КриптоПРО 2) Нет возможности настроить считываетели 3) Нет возможности просмотреть контейнеры. (и соответственно скопировать их)
Вынес последнее сообщение в отдельный баг #8777.
Перечитал тред и так и не понял на каком уровне сейчас поддержка КриптоПРО в wine. И какой КриптоПРО надо ставить для работы с токенами (родной под Linux или Windows версию через wine) Хочу поставить КЛИЕНТСКИЙ ТЕРМИНАЛ СИСТЕМЫ АЛЬФА-ДИРЕКТ 3.5 http://www.alfadirect.ru/download/AD3/ADSetup.exe отсюда и заставить его работать с токеном под линуксом.
Есть живые в этом треде?
(В ответ на comment #35) > Есть живые в этом треде? КриптоПРО CSP 3.6, работает в wine. Устанавливать надо windows версию.
(In reply to comment #36) > КриптоПРО CSP 3.6, работает в wine. Устанавливать надо windows версию. у меня инстальник КриптоПРО CSP 3.6 скрещенный с рутокеном https://docs.google.com/file/d/0B0nwzlfiB4aQZ256bDI0cHU0OW8/edit?usp=sharing Взят отсюда http://www.alfadirect.ru/?page=ad_soft поэтому в свободной доступе нет. Соответствующий баг завел на багзилле вайна http://bugs.winehq.org/show_bug.cgi?id=33896
Никто не смотрел что там за ошибки?
Походу никому нет дела до этого?
Откладываем задачи, к которым не обращались более 100 дней.
так никто и не берется этим занятся :(
Проект больше не ведётся. Закрываю задачу.
Закрыта.