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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline m.dundukov  
#1 Оставлено : 29 октября 2025 г. 19:40:23(UTC)
m.dundukov

Статус: Участник

Группы: Участники
Зарегистрирован: 08.09.2022(UTC)
Сообщений: 18
Российская Федерация
Откуда: Ярославль

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 1 раз в 1 постах
Доброго дня! На данный момент времени я занимаюсь написанием плагина с реализацией защищенного соединения от криптопро. Заранее отмечу, что локальная реализация отдельно для каждого приложения с помощью .xcframework работает корректно уже много времени. Однако, чтобы систематизировать работу было решено написать отдельный плагин.

На данный момент для example проекта выставлено все ровно то же самое в Build Phases и в Settings, что выставлено в обычных прилах. Для плагина написан следующий .podspec файл:

Цитата:

Pod::Spec.new do |s|
s.name = 'cryptopro_plugin'
s.version = '0.0.1'
s.summary = 'A new Flutter plugin project.'
s.description = <<-DESC
A new Flutter plugin project.
DESC
s.homepage = 'http://example.com'
s.license = { :file => '../LICENSE' }
s.author = { 'Your Company' => 'email@example.com' }
s.source = { :path => '.' }
s.source_files = 'Classes/**/*.{h,m,mm,swift}'
s.dependency 'Flutter'
s.platform = :ios, '14.0'

s.ios.framework = 'CPROCSP'
s.vendored_frameworks = 'CPROCSP.xcframework', 'CPROCSP.xcframework/readers/libcsp_scards.o'

s.pod_target_xcconfig = {
'DEFINES_MODULE' => 'YES',
'VALID_ARCHS' => 'arm64 armv7',
'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386 x86_64 arm64'
}

s.user_target_xcconfig = {
'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386 x86_64 arm64'
}

s.swift_version = '5.0'

end


xcode build успешно билдится, .xcframework виден в Pods, но когда доходит до ios build, то возникает следующая ошибка:

Цитата:
Error (Xcode): Undefined symbol: _SCardBeginTransaction

Error (Xcode): Undefined symbol: _SCardConnect

Error (Xcode): Undefined symbol: _SCardDisconnect

Error (Xcode): Undefined symbol: _SCardEndTransaction

Error (Xcode): Undefined symbol: _SCardEstablishContext

Error (Xcode): Undefined symbol: _SCardListReaders

Error (Xcode): Undefined symbol: _SCardReconnect

Error (Xcode): Undefined symbol: _SCardReleaseContext

Error (Xcode): Undefined symbol: _SCardStatus

Error (Xcode): Undefined symbol: _SCardTransmit

Error (Xcode): Undefined symbol: _g_rgSCardT0Pci

Error (Xcode): Undefined symbol: _g_rgSCardT1Pci

Error (Xcode): Undefined symbol: _main


Отмечу, что в .xcframework в readers папке присутствуют библиотеки librdrpcsc_empty.o, libcsp_scards.o и libcsp_cryptoki.o и также директория Alladin.

Не подскажете, пожалуйста, в чем может быть дело?
Offline m.dundukov  
#2 Оставлено : 30 октября 2025 г. 17:20:46(UTC)
m.dundukov

Статус: Участник

Группы: Участники
Зарегистрирован: 08.09.2022(UTC)
Сообщений: 18
Российская Федерация
Откуда: Ярославль

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 1 раз в 1 постах
Сегодня решил полностью все переписать, потому что уткнулся в проблему, которую никак не мог решить...

Пересоздал тестовый проект и переписал podspec с чистого листа. Теперь валится такая ошибка:
Цитата:
Error (Xcode): Undefined symbol: _CSP_GetLastError

Error (Xcode): Undefined symbol: _CertCloseStore

Error (Xcode): Undefined symbol: _CertEnumCertificatesInStore

Error (Xcode): Undefined symbol: _CertGetCertificateContextProperty

Error (Xcode): Undefined symbol: _CertOpenStore

Error (Xcode): Undefined symbol: _CryptAcquireContextA

Error (Xcode): Undefined symbol: _CryptBinaryToStringA

Error (Xcode): Undefined symbol: _CryptGetProvParam

Error (Xcode): Undefined symbol: _CryptReleaseContext

Error (Xcode): Undefined symbol: _curl_easy_cleanup

Error (Xcode): Undefined symbol: _curl_easy_getinfo

Error (Xcode): Undefined symbol: _curl_easy_init

Error (Xcode): Undefined symbol: _curl_easy_perform

Error (Xcode): Undefined symbol: _curl_easy_setopt

Error (Xcode): Undefined symbol: _curl_global_init

Error (Xcode): Undefined symbol: _curl_slist_append

Error (Xcode): Undefined symbol: _curl_slist_free_all

Error (Xcode): Undefined symbol: _support_registry_put_bool


.podspec выглядит так:
Цитата:
Pod::Spec.new do |s|
s.name = 'cryptopro_plugin'
s.version = '0.0.1'
s.summary = 'CryptoPRO Flutter plugin'
s.description = <<-DESC
Flutter plugin for CryptoPRO cryptographic services support.
DESC
s.homepage = 'http://example.com'
s.license = { :file => '../LICENSE' }
s.author = { 'Your Company' => 'email@example.com' }
s.source = { :path => '.' }
s.source_files = 'Classes/**/*.{h,m,mm,swift}'
s.dependency 'Flutter'
s.platform = :ios, '14.0'

s.static_framework = true

# Проверка существования framework
if !File.exist?('./CPROCSP.xcframework')
puts "[Warning] CPROCSP.xcframework not found at expected path: #{File.expand_path('./CPROCSP.xcframework')}"
else
puts "[Info] CPROCSP.xcframework found and will be vendored"
end

# Системные зависимости
s.libraries = 'c++', 'z', 'sqlite3'
s.frameworks = 'Security', 'Foundation', 'SystemConfiguration'
s.vendored_frameworks = 'CPROCSP.xcframework'

# Детальные настройки компилятора
s.pod_target_xcconfig = {
'DEFINES_MODULE' => 'YES',
'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386',

# Принудительная линковка всех символов
'OTHER_LDFLAGS' => '$(inherited) -ObjC -all_load -framework Security -lc++ -lz -lsqlite3',
'HEADER_SEARCH_PATHS' => [
'"${PODS_ROOT}/cryptopro_plugin/CPROCSP.xcframework/ios-arm64_armv7/CPROCSP.framework/Headers"',
'"${PODS_ROOT}/cryptopro_plugin/CPROCSP.xcframework/ios-arm64_armv7/CPROCSP.framework/Headers/curl"',
'"${PODS_ROOT}/cryptopro_plugin/CPROCSP.xcframework/ios-arm64_armv7/CPROCSP.framework/Headers/pki"',
'"${PODS_ROOT}/cryptopro_plugin/CPROCSP.xcframework/ios-arm64_armv7/CPROCSP.framework/Headers/reader"',
'"${PODS_ROOT}/cryptopro_plugin/CPROCSP.xcframework/ios-x86_64-simulator/CPROCSP.framework/Headers"',
'"${PODS_ROOT}/cryptopro_plugin/CPROCSP.xcframework/ios-x86_64-simulator/CPROCSP.framework/Headers/curl"',
'"${PODS_ROOT}/cryptopro_plugin/CPROCSP.xcframework/ios-x86_64-simulator/CPROCSP.framework/Headers/pki"',
'"${PODS_ROOT}/cryptopro_plugin/CPROCSP.xcframework/ios-x86_64-simulator/CPROCSP.framework/Headers/reader"'
].join(' '),

'VALID_ARCHS' => 'arm64 armv7 x86_64'
}

s.user_target_xcconfig = {
'FRAMEWORK_SEARCH_PATHS' => '"${PODS_ROOT}/your_plugin/CPROCSP.xcframework"'
}

s.swift_version = '5.0'
end


Также я для полной автономности плагина у example проекта, который проверяет работу плагина, убрал все либы и фреймы из раннера, чтобы билд получался максимально независимым. Не подскажете, нет ли никакой инструкции, как можно грамотно подключить ваш CPROCSP.xcframework с помощью .podspec?

Отредактировано пользователем 1 ноября 2025 г. 11:34:14(UTC)  | Причина: Не указана

Offline m.dundukov  
#3 Оставлено : 30 октября 2025 г. 17:42:36(UTC)
m.dundukov

Статус: Участник

Группы: Участники
Зарегистрирован: 08.09.2022(UTC)
Сообщений: 18
Российская Федерация
Откуда: Ярославль

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 1 раз в 1 постах
.

Отредактировано пользователем 1 ноября 2025 г. 11:34:31(UTC)  | Причина: Не указана

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