Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

4 Страницы123>»
Опции
К последнему сообщению К первому непрочитанному
Offline Veronica99  
#1 Оставлено : 12 февраля 2021 г. 17:01:45(UTC)
Veronica99

Статус: Активный участник

Группы: Участники
Зарегистрирован: 17.06.2020(UTC)
Сообщений: 37
Российская Федерация

Сказал(а) «Спасибо»: 3 раз
Как использовать библиотеки КриптоПро в среде Qt Creator для системы Sailfish OS?
КриптоПро есть как на i486, так и на armv7hl. Нашла семплы, устанавливающиеся вместе с КриптоПро, если правильно понимаю, с devel-пакетом. Т.е., функции криптопро возможно спокойно использовать, подключая соответствующие хедеры в c++ коде.
Работаю в Qt Creator, подключаюсь к устройству (armv7hl). Заранее поставила КриптоПро на устройство разумеется.

Подключаю в .pro файл:
Цитата:

QMAKE_RPATHDIR += \
/usr/share/cprocsp/lib/arm \ #usr/share

LIBS += \
-L/usr/share/cprocsp/lib/arm -lssp

INCLUDEPATH += \
/usr/share/cprocsp/include \
/usr/share/cprocsp/include/cpcsp \
/usr/share/cprocsp/include/reader


Билдится, но если попытаться подключить какие-нибудь хедеры из соответствующей папки с устройства в cpp, то среда скажет, что такого хедера нет.
До этого, с горем пополам как-то удавалось что-то запустить, хотя работали по прежнему не все функции, а после обновления, которые теперь ставится почему-то в /usr/share/, не работает не старая версия криптопро (/opt/), ни новая (/usr/share/).

Чего не хватает? Нужно ли что-то ещё подключить? В devel пакете содержится инструкция по работе с функциями? Если да, то где искать?
Offline Андрей Русев  
#2 Оставлено : 12 февраля 2021 г. 20:40:27(UTC)
Русев Андрей

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,260

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 442 раз в 322 постах
Здравствуйте.
А вы разрабатываете именно под Sailfish, а не под Аврору? Из-за ограничений в последней (в валидаторе пакетов) между ними большая разница (и поэтому у нас два разных дистрибутива):
  • наши библиотеки на Авроре лежат не по стандарту FHS, в отличие от всех остальных *nix, включая Sailfish
  • разделения на пакты нет
  • пакета для разработки нет
  • наших консольных приложений нет
  • готовых средств управления ключами и сертификатами нет
  • в общем под Аврору есть только API, а на Sailfish - все Linux-овые средства
    https://support.cryptopr...7/0/sbork-primerov-n-nix
  • Официальная техподдержка. Официальная база знаний.
    Offline Veronica99  
    #3 Оставлено : 13 февраля 2021 г. 11:02:49(UTC)
    Veronica99

    Статус: Активный участник

    Группы: Участники
    Зарегистрирован: 17.06.2020(UTC)
    Сообщений: 37
    Российская Федерация

    Сказал(а) «Спасибо»: 3 раз
    Здравствуйте.
    Спасибо за ответ. Уже не первый день пытаюсь разобраться, как подключить библиотеки КриптоПро.
    Работаю конкретно с устройством Sailfish на данный момент, но через Aurora SDK.
    Хочу сделать уточнение, исходя из Вашего ответа. Получается, в случае работы конкретно с системой Aurora использовать библиотеки КриптоПро на данный момент не предоставится возможным, и, такой функционал не будет реализован в ближайшем будущем? Что на данный момент можно использовать для работы с Aurora из КриптоПро? Только команды для командной строки?
    А как поступать для работы с Sailfish? Возможно ли использовать библиотеки в моём коде? Если да, то как?
    Offline Андрей Русев  
    #4 Оставлено : 15 февраля 2021 г. 9:33:04(UTC)
    Русев Андрей

    Статус: Сотрудник

    Группы: Администраторы, Участники
    Зарегистрирован: 16.04.2008(UTC)
    Сообщений: 1,260

    Сказал(а) «Спасибо»: 21 раз
    Поблагодарили: 442 раз в 322 постах
    Наоборот: на Авроре можно использовать только библиотеки, а на Sailfish - и библиотеки, и приложения. Настройки в pro-файле на глаз верные (если rpath указывается именно так: у нас Qt Creator никто не использует), плюс при линковке надо указывать библиотеки вместе с их зависимостями (-lssp недостаточно, надо -lssp -lcapi10 -lcapi20 -lrdrsup). См. также https://www.cryptopro.ru...aspx?g=posts&t=16466 Тут рецепт, как добавлять наши библиотеки в build-engine (для Авроры, вероятно, стоит ставить как cprocsp, так и запрещённый для сертифицированных устройств cprocsp-binaries - в нём хэдеры).
    Официальная техподдержка. Официальная база знаний.
    Offline Veronica99  
    #5 Оставлено : 15 февраля 2021 г. 10:37:36(UTC)
    Veronica99

    Статус: Активный участник

    Группы: Участники
    Зарегистрирован: 17.06.2020(UTC)
    Сообщений: 37
    Российская Федерация

    Сказал(а) «Спасибо»: 3 раз
    Спасибо за ответ. Ссылку смотрела ещё до вопроса здесь. Всё это подключать пробовала, оттуда же брала всю остальную информацию, но в коде функции так и не было видно.
    Попробовала указать дополнительно: -lcapi10 -lcapi20 -lrdrsup, но получила следующие ошибки:

    \srv\mer\toolings\AuroraOS-3.2.1.65-base\opt\cross\bin\armv7hl-meego-linux-gnueabi-ld:-1: error: cannot find -lcapi10
    \srv\mer\toolings\AuroraOS-3.2.1.65-base\opt\cross\bin\armv7hl-meego-linux-gnueabi-ld:-1: error: cannot find -lcapi20
    \srv\mer\toolings\AuroraOS-3.2.1.65-base\opt\cross\bin\armv7hl-meego-linux-gnueabi-ld:-1: error: cannot find -lrdrsup

    Удалось исправить все ошибки, немного изменив .pro:

    QMAKE_RPATH += \
    -L/usr/share/cprocsp/lib \
    -L/srv/mer/targets/$$(MER_SSH_TARGET_NAME)/lib \
    -L/srv/mer/targets/$$(MER_SSH_TARGET_NAME)/usr/lib

    QMAKE_LIBDIR += \
    -L/usr/share/cprocsp/lib -lssp -lcapi10 -lcapi20 -lrdrsup \

    INCLUDEPATH += \
    /usr/share/cprocsp/include \
    /usr/share/cprocsp/include/cpcsp \
    /usr/share/cprocsp/include/reader \

    И тем не менее, в коде всё ещё не могу использовать. Беру хедеры из примера InstallCert.cpp:

    #include <stdio.h>
    #ifdef _WIN32
    #include <windows.h>
    #include <wincrypt.h>
    #include <wincryptex.h>
    #else
    #include <string.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <WinCryptEx.h>
    #endif // _WIN32
    #include "UnixEnroll.h"

    И получаю ошибки:

    error: WinCryptEx.h: No such file or directory
    #include <WinCryptEx.h>

    error: 'WinCryptEx.h' file not found

    error: 'UnixEnroll.h' file not found
    Offline Veronica99  
    #6 Оставлено : 15 февраля 2021 г. 13:02:20(UTC)
    Veronica99

    Статус: Активный участник

    Группы: Участники
    Зарегистрирован: 17.06.2020(UTC)
    Сообщений: 37
    Российская Федерация

    Сказал(а) «Спасибо»: 3 раз
    Я дополнительно попробовала воспользоваться следующими командами, находясь в папке с rpm пакетами (очень не уверена, что делаю верно):

    export TARGET=AuroraOS-3.2.1.65-base-armv7hl
    sb2 -t $TARGET -m sdk-install -R zypper in *.rpm

    При этом не установились:

    cprocsp-rdr-pcsc-5.0.11998-4.noarch
    --
    Installation of cprocsp-rdr-pcsc-5.0.11998-4.noarch failed:
    Error: Subprocess failed. Error: RPM failed: Error: Unknown non-lsb linux
    libpcsclite.so.1 was not found!
    error: %prein(cprocsp-rdr-pcsc-5.0.11998-4.noarch) scriptlet failed, exit status 1
    error: cprocsp-rdr-pcsc-5.0.11998-4.noarch: install failed

    cprocsp-rdr-cpfkc-5.0.11998-4.noarch
    --
    Installation of cprocsp-rdr-cpfkc-5.0.11998-4.noarch failed:
    Error: Subprocess failed. Error: RPM failed: Error: Unknown non-lsb linux
    libpcsclite.so.1 was not found!
    error: %prein(cprocsp-rdr-cpfkc-5.0.11998-4.noarch) scriptlet failed, exit status 1
    error: cprocsp-rdr-cpfkc-5.0.11998-4.noarch: install failed

    Теперь хедеры как бы видны, но среда их выделяет как несуществуемые и вадёт ошибки, при этом компилится.
    Например, если я пишу:

    cryptocheck::cryptocheck()
    {
    HCRYPTPROV hCryptProv = 0;
    }
    то компилится.

    А такая строка вызывает ошибки:
    cryptocheck::cryptocheck()
    {
    HCERTSTORE hStoreHandle = CertOpenSystemStore(0, "uMy");
    }

    Ошибки:
    cryptocheck.o:-1: error: in function `cryptocheck::cryptocheck()':
    cryptocheck.o
    cryptocheck.cpp:33: error: undefined reference to `CertOpenSystemStoreA'
    collect2:-1: error: collect2: error: ld returned 1 exit status
    Offline Андрей Русев  
    #7 Оставлено : 15 февраля 2021 г. 17:54:37(UTC)
    Русев Андрей

    Статус: Сотрудник

    Группы: Администраторы, Участники
    Зарегистрирован: 16.04.2008(UTC)
    Сообщений: 1,260

    Сказал(а) «Спасибо»: 21 раз
    Поблагодарили: 442 раз в 322 постах
    Начните с того, под какую ОС вы собираете. Либо под Аврору, либо под Sailfish. У вас каша: пути к библиотекам как в Авроре, а пакеты от дистрибутива для Sailfish.
    Официальная техподдержка. Официальная база знаний.
    Offline Veronica99  
    #8 Оставлено : 16 февраля 2021 г. 9:53:37(UTC)
    Veronica99

    Статус: Активный участник

    Группы: Участники
    Зарегистрирован: 17.06.2020(UTC)
    Сообщений: 37
    Российская Федерация

    Сказал(а) «Спасибо»: 3 раз
    Установка приложения с КриптоПро на устройство с Sailfish OS.
    Offline Андрей Русев  
    #9 Оставлено : 16 февраля 2021 г. 10:05:21(UTC)
    Русев Андрей

    Статус: Сотрудник

    Группы: Администраторы, Участники
    Зарегистрирован: 16.04.2008(UTC)
    Сообщений: 1,260

    Сказал(а) «Спасибо»: 21 раз
    Поблагодарили: 442 раз в 322 постах
    Тогда у вас неверные пути к библиотекам в pro-файле.
    Официальная техподдержка. Официальная база знаний.
    Offline Veronica99  
    #10 Оставлено : 16 февраля 2021 г. 10:12:12(UTC)
    Veronica99

    Статус: Активный участник

    Группы: Участники
    Зарегистрирован: 17.06.2020(UTC)
    Сообщений: 37
    Российская Федерация

    Сказал(а) «Спасибо»: 3 раз
    Хорошо. А какие пути будут правильными?
    RSS Лента  Atom Лента
    Пользователи, просматривающие эту тему
    4 Страницы123>»
    Быстрый переход  
    Вы не можете создавать новые темы в этом форуме.
    Вы не можете отвечать в этом форуме.
    Вы не можете удалять Ваши сообщения в этом форуме.
    Вы не можете редактировать Ваши сообщения в этом форуме.
    Вы не можете создавать опросы в этом форуме.
    Вы не можете голосовать в этом форуме.