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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline sumatra  
#1 Оставлено : 17 мая 2023 г. 16:53:24(UTC)
sumatra

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

Группы: Участники
Зарегистрирован: 23.05.2012(UTC)
Сообщений: 60
Мужчина
Российская Федерация
Откуда: Подмосковье

Сказал «Спасибо»: 4 раз
По следам ранних сообщений...

В версии 5.0.12600 есть в члоге строчка:
Цитата:
* ios: Добавлена возможность статического включения фреймворка в сторонний динамический фреймворк (CPCSP-13181).


Задача - как и раньше - есть приложение, которое использует внешний динамический фреймворк, который, в свою очередь, использует CPROCSP.
В целом это вроде бы работает.
Но есть пара не совсем понятных моментов.

Первый - ресурсы cprocsp.
Правильно я понимаю, что а) их по-прежнему надо явно присоединять к проекту самого приложения, и б) делать это надо, как и раньше, явно по одному?
Про б) - может быть как-то можно сделать отдельный bundle с ресурсами и подключать его одного?

Второй - контроль целостности.
Работает ли в случае использования динамического фреймворка контроль целостности?
Скрипт ConfigureApplication здесь исходно не работает. Но если, допустим, добавить в код приложения из CPROCSP.h декларацию program_control_sum, то и скрипт этот работает, и проверка целостности в панели управления КриптоПро отрабатывает успешно.
Вопрос - есть ли в этом смысл, будет ли в этом случае какая-нибудь польза, типа, как в случае статической линковки (или только визуально - нажал кнопку "проверить" - проверилось - сплю спокойно)?

Есть ли какие-нибудь изменения в этой теме в апрельской 12800?

Спасибо
Offline Русев Андрей  
#2 Оставлено : 18 мая 2023 г. 10:49:31(UTC)
Русев Андрей

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

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

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 446 раз в 325 постах
Здравствуйте.
Мы полностью поддержали работу в качестве динамического фреймворка:

  • можно включать наш статический в свой динамический
  • в дополнение к нашему статическому мы сделали готовый динамический (в дистрибутив пока не кладём, так как это удвоение размера, но выложить можем)
  • обеспечена гибкость при контроле целостности:
    * для статического фреймворка и приложения обязательно контролируется целостность приложения, в который входит фреймворк
    * для динамического фреймворка можно контролировать либо целостность только фреймворка, либо целостность и фреймворка и приложения (для этого в приложении надо вызвать DECLARE_CONTROL_SUM())

Для нашего динамического фреймворка появился ReadMeDynamic.txt, он же годится и для вашего. Подклею его:
Код:
Использование динамического фреймворка CPROCSP.xcframework

Динамический фреймворк содержит в себе модуль librdrpcsc_empty и выставленную переменную USE_CACHE_DIR=true.
Это означает, что динамический фреймворк возможно использовать без поддержки считывателей
и с хранением ключей в Library/Caches/cprocsp/keys/.

Для использования фреймворка требуется:
_______________________________________

1. В папке CPROCSP.xcframework запустить

	./SetApplicationLicense 5050X-80030-05WE5-0QQWR-PWQFL license.enc

   В текущей директории будет создан файл license.enc.
2. Включить фреймворк в приложение на вкладке "General" - "Frameworks, Librarires, and Embedded Content"
   с указанием способа включения - "Embed & Sign"
3. В одном из файлов (и только в одном) проекта вызвать макрос:

DECLARE_CONTROL_SUM();

объявленный в: #import <CPROCSP/CPROCSP.h>

4. Нажать на CPROCSP.xcframework правой кнопкой мыши, выбрать "Show In Finder".
   Перетащить из CPROCSP.xcframework/Resources все ресурсы
   кроме ru.lproj и en.lproj в проект (тоже в Resource).
!!!ВАЖНО!!!---------------------------------------------------------------------
   При переносе файлов следует установить флажок "Create Folder referencies for
    any added folders".
--------------------------------------------------------------------------------
5. Созданный в п.1 файл license.enc перетащить в Resources проекта(аналогично п.4,
   тоже выбрав "Create Folder referencies for any added folders").
6. Файлы из Resources\en.lproj и Resources\ru.lproj перетащить в ресурсы приложения.
   В меню выбрать "Create Folder Groups".
   При этом они будут автоматически сгруппированы в двуязычные файлы локализации.
7. В свойствах проекта настроить
   "Valid Architectures: $(ARCHS_STANDARD)"
8. Если используется XCode, в левой панели выбрать проект, затем
   в основном окне в списке targets выбрать цель сборки, перейти на вкладку
   "Build Phases", выбрать там "Add Build Phase - Add Run Script". Появившуюся
   фазу сборки "Run Script" отредактировать, поместив в поле для скрипта перед фазой Embed Frameworks
          <Путь к директории с фреймворком>/CPROCSP.xcframework/program_checksum.sh \
          <Путь к директории с фреймворком>/CPROCSP.xcframework/ios-arm64_armv7/CPROCSP.framework/CPROCSP framework_control_sum
          <Путь к директории с фреймворком>/CPROCSP.xcframework/program_checksum.sh \
          <Путь к директории с фреймворком>/CPROCSP.xcframework/ios-x86_64-simulator/CPROCSP.framework/CPROCSP framework_control_sum
   Если путь содержит пробелы, перед ними надо поставить backslash: "\".

8.1. Выбрать еще раз "Add Build Phase - Add Run Script". Появившуюся
   фазу сборки "Run Script" отредактировать, поместив в поле для скрипта после фазы Embed Frameworks
          <Путь к директории с фреймворком>/ConfigureApplication
9. В свойствах проекта укажите "C++ Standard Library" - "libc++ (LLVM C++ Stanard Library)".


Остальные настройки выполняются в соответствии с ReadMe.txt


Ресурсы мы немного реорганизовали ещё в 2022-05-19 КриптоПро CSP 5.0.12500 Perun, но bundle для них не делали.
Официальная техподдержка. Официальная база знаний.
Offline sumatra  
#3 Оставлено : 18 мая 2023 г. 11:24:59(UTC)
sumatra

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

Группы: Участники
Зарегистрирован: 23.05.2012(UTC)
Сообщений: 60
Мужчина
Российская Федерация
Откуда: Подмосковье

Сказал «Спасибо»: 4 раз
Цитата:
Ресурсы мы немного реорганизовали ещё в 2022-05-19 КриптоПро CSP 5.0.12500 Perun, но bundle для них не делали.


Ну, т.е. пока подключаем их как раньше - в само приложение, явно и по одному, а в динамическом фреймворке, к которому подключен CPROCSP, они в скомпилированном виде не нужны.
Возможности, типа, поместить их все в отдельную директорию и указать эту директорию - в CPROCSP сейчас нет.

Понятно...
Offline sumatra  
#4 Оставлено : 18 мая 2023 г. 16:51:22(UTC)
sumatra

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

Группы: Участники
Зарегистрирован: 23.05.2012(UTC)
Сообщений: 60
Мужчина
Российская Федерация
Откуда: Подмосковье

Сказал «Спасибо»: 4 раз
Русев Андрей Offline

Цитата:
обеспечена гибкость при контроле целостности:
* для статического фреймворка и приложения обязательно контролируется целостность приложения, в который входит фреймворк
* для динамического фреймворка можно контролировать либо целостность только фреймворка, либо целостность и фреймворка и приложения (для этого в приложении надо вызвать DECLARE_CONTROL_SUM())


А вот насчет варианта - csp линкуется статически в динамический фреймворк, который потом используется приложением...
Можно проверять целостность динамического фреймворка, в который статически прилинкован csp? Есть в этом смысл (теоретически, наверное есть)?
Offline sumatra  
#5 Оставлено : 18 мая 2023 г. 17:55:25(UTC)
sumatra

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

Группы: Участники
Зарегистрирован: 23.05.2012(UTC)
Сообщений: 60
Мужчина
Российская Федерация
Откуда: Подмосковье

Сказал «Спасибо»: 4 раз
Если добавить в динамический фреймворк, статически линкующий csp, в c или objc (не c++) файл вызов

DECLARE_CHECKSUM_VARIABLE(framework_control_sum);

то все собирается и при проверке целостности проверяется два модуля - "framework-module-Framework" и "main_moduleProgram".

Наверное, оно работает правильно и этого достаточно.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.