Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.05.2012(UTC) Сообщений: 60 Откуда: Подмосковье Сказал «Спасибо»: 4 раз
|
По следам ранних сообщений... В версии 5.0.12600 есть в члоге строчка: Цитата:* ios: Добавлена возможность статического включения фреймворка в сторонний динамический фреймворк (CPCSP-13181). Задача - как и раньше - есть приложение, которое использует внешний динамический фреймворк, который, в свою очередь, использует CPROCSP. В целом это вроде бы работает. Но есть пара не совсем понятных моментов. Первый - ресурсы cprocsp. Правильно я понимаю, что а) их по-прежнему надо явно присоединять к проекту самого приложения, и б) делать это надо, как и раньше, явно по одному? Про б) - может быть как-то можно сделать отдельный bundle с ресурсами и подключать его одного? Второй - контроль целостности. Работает ли в случае использования динамического фреймворка контроль целостности? Скрипт ConfigureApplication здесь исходно не работает. Но если, допустим, добавить в код приложения из CPROCSP.h декларацию program_control_sum, то и скрипт этот работает, и проверка целостности в панели управления КриптоПро отрабатывает успешно. Вопрос - есть ли в этом смысл, будет ли в этом случае какая-нибудь польза, типа, как в случае статической линковки (или только визуально - нажал кнопку "проверить" - проверилось - сплю спокойно)? Есть ли какие-нибудь изменения в этой теме в апрельской 12800? Спасибо
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 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 для них не делали. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.05.2012(UTC) Сообщений: 60 Откуда: Подмосковье Сказал «Спасибо»: 4 раз
|
Цитата:Ресурсы мы немного реорганизовали ещё в 2022-05-19 КриптоПро CSP 5.0.12500 Perun, но bundle для них не делали. Ну, т.е. пока подключаем их как раньше - в само приложение, явно и по одному, а в динамическом фреймворке, к которому подключен CPROCSP, они в скомпилированном виде не нужны. Возможности, типа, поместить их все в отдельную директорию и указать эту директорию - в CPROCSP сейчас нет. Понятно...
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.05.2012(UTC) Сообщений: 60 Откуда: Подмосковье Сказал «Спасибо»: 4 раз
|
Русев Андрей
Цитата:обеспечена гибкость при контроле целостности: * для статического фреймворка и приложения обязательно контролируется целостность приложения, в который входит фреймворк * для динамического фреймворка можно контролировать либо целостность только фреймворка, либо целостность и фреймворка и приложения (для этого в приложении надо вызвать DECLARE_CONTROL_SUM()) А вот насчет варианта - csp линкуется статически в динамический фреймворк, который потом используется приложением... Можно проверять целостность динамического фреймворка, в который статически прилинкован csp? Есть в этом смысл (теоретически, наверное есть)?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.05.2012(UTC) Сообщений: 60 Откуда: Подмосковье Сказал «Спасибо»: 4 раз
|
Если добавить в динамический фреймворк, статически линкующий csp, в c или objc (не c++) файл вызов
DECLARE_CHECKSUM_VARIABLE(framework_control_sum);
то все собирается и при проверке целостности проверяется два модуля - "framework-module-Framework" и "main_moduleProgram".
Наверное, оно работает правильно и этого достаточно.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close