Поддержка ключей HASP в Wine

Материал из Русский WINE
Перейти к: навигация, поиск

Ситуация по поддержке ключей HASP в Wine неоднозначна из-за одновременного сосуществования различных поколений ключей, а скорее драйверов к ним, разными способами использования ключей в программах. Встречаются ключи

  • HASP 3 (LPT) сетевые и локальные
  • HASP 4 (USB) сетевые и локальные
  • HASP HL (USB) сетевые и локальные
  • HASP SRM (отличается другими драйверами и менеджером лицензий, существенно переписанной схемой взаимодействия)

Получить драйверы ключей и менеджер лицензий для Linux и WINE@Etersoft можно здесь, собранные для всех систем.

Ситуация по поколениям ключей

HASP HL

Файл:Hasp hl.png
Схема взаимодействия HASP HL

Поддержка платформы Linux у ключей HASP имеется давно и в полном объёме. Раньше ситуацию немного омрачали LPT-ключи, которым требовалось компилировать модуль ядра, сейчас такие ключи становятся менее актуальны, да и сборка модуля ядра максимально упрощена в пакете haspd. Поддержка платформы Mac OS нас пока не интересует, а поддержка FreeBSD до сих пор так и не появилась, несмотря на многочисленные просьбы. Та же ситуация и с Solaris.

Но запуск программ в Wine имеет свою специфику, поскольку программа не может работать с Linux-драйверами ключей. Начиная с WINE@Etersoft 1.0.10 появилась поддержка "родных" Windows-драйверов для HASP 4/HL, что снимает проблему с локальными ключами, которые могут работать только через загруженный в Wine драйвер.

С поддержкой сетевых ключей HASP 4/HL проблем не было никаких, поскольку имеется драйвер ключа и менеджер лицензий, запускаемый в Linux, слушающий порт UDP/475, к которому можно обратиться из Wine или Windows. Странным является только то, что в Windows менеджер лицензий слушает порт TCP/475. Зачем сделано отличие, не ясно, но оно неплохо вносит сумятицу.

В настоящий момент локальные и сетевые ключи HASP HL USB поддерживаются полностью.

Драйвер ключа под Linux - aksusbd, менеджер лицензий - hasplm.

WINEHASP. В 2005 году Etersoft совместно с LinuxCenter обратились в Аладдин с предложением наладить работу локальных ключей HASP. Решение планировалось универсальным, но по какой-то причине применяется только компанией 1С в продуктах семейства 1С:Предприятие 8.x. Реализовано решение следующим образом: в Windows-API HASP HL начиная с версии API 1.12 добавлена проверка на запущенность в Wine и обращение при этом производится на localhost по порту UDP/2790 (который слушает процесс winehasp).

HASP SRM

Файл:Hasp srm.png
Схема взаимодействия HASP SRM

И в Windows, и в Linux на TCP/1947 работает веб-интерфейс. По умолчанию доступ к нему разрешён только с машины, на которой он запущен. В Linux защищённая программа взаимодействует с демоном hasplmd, в Windows - со службой hasplms (HASP License Manager). Работа и с сетевым, и с локальным ключами происходит через локальный демон или службу по TCP/1947. Сетевой ключ, установленный на Linux-машине, позволяет работать с защищёнными программами на Windows-машине, и наоборот. Взаимодействие между различными машинами по сети происходит по TCP/1947 и по UDP с использованием порта 1947 и ещё одного порта, номер которого меняется при перезапуске демона.

В WINE защищённые программы не работают. По-видимому, это связано с тем, что Linux-программа и работающая в WINE Windows-программа сообщают различную информацию о машине, на которой они работают, то есть протоколы локального обмена разные для Windows / Linux.

Количество драйверов, необходимых для работы с ключом в Windows, увеличилось по сравнению с HASP HL, что не упрощает реализацию их поддержки в WINE@Etersoft. Для Linux поставляются aksusbd, winehasp под теми же именами, что и прежде, и они совместимы с программами, написанными для HASP HL. Менеджер лицензий называется теперь hasplmd, и совместимости с предыдущим не имеет.

Странно, что hasp_demo.exe из HASP-SRM-3-50/Windows/Installed/Samples/Runtime/C/win32/msc/dll/ не видит ключ, хотя в идущей рядом hasp_windows_demo.dll проверка на Wine и код обращения к winehasp имеется.

Ситуация по популярным программам

1С:Предприятие 7.7

Сетевые ключи работают без проблем. Поддержка локальных ключей находится в стадии тестирования.

1С:Предприятие 8.х

Для 1С:Предприятия 8.х работают как сетевые, так и локальные ключи.

В WINE@Etersoft 1.0.10 и выше по умолчанию локальные ключи работают через драйвера HASP, входящие в состав WINE@Etersoft.

!!! Обратите внимание !!! В некоторых системах возможны проблемы с правами на устройство ключа, тогда нужно в /proc/bus/usb/devices надо найти шину и номер устройства, соответствующие ключу, и поставить права для всех +rw на /dev/bus/usb/номер_шины/номер_устройства.

Также локальные ключи могут работать через Linux-сервис winehasp, входящий в состав hapsd. Использование winehasp включается правкой реестра. С помощью regedit нужно импортировать такой файл:

REGEDIT4

[HKEY_LOCAL_MACHINE\Software\Wine\Wine\Config]

"compat"="yes"

КОМПАС v.10

Используется HASP HL без поддержки Wine. Локальные ключи работают через "родные" Windows-драйвера, поддержка которых встроена, начиная с WINE@Etersoft 1.0.10. Для использования ключа по сети загрузка "родных" Windows-драйверов также должна быть включена, запускать haspd на машине, на которой запускается Компас, не обязательно.

КОМПАС v.11

Используется HASP SRM. На тестовых ключах возможность сетевой работы проверена, с КОМПАС ещё не проверялось.