Если вам действительно нужен Bouncy Castle как есть, рассмотрите возможность использования j2objc
Недавно мы столкнулись с такой же ситуацией, и до сих пор нам удавалось использовать j2objc для преобразования как Bouncy Castle, так и код, который использовал его, в Objective C. Нам нужна была строгая совместимость между версиями приложения для iOS и Android, и мы не хотели рисковать, обнаружив несовместимости с нашим решением в будущем.
Чтобы преобразовать Bouncy Castle, нам пришлось удалить несколько классов, связанных с LDAP (в которых мы и так не нуждались), но помимо этого все было довольно просто. Мы сделали это путем проб и ошибок, посмотрев, что не удалось преобразовать, а затем просто удалив файл и попытавшись снова.
Использование j2objc также имело то преимущество, что позволило нам перенести большую часть бизнес-логики и избежать повторной реализации ее в Swift/Objective-C. Мы только что создали несколько простых оболочек в Swift для классов, которые нам нужно было использовать напрямую, и использовали их во всем приложении.
Важные предостережения
Стоит отметить, что это решение подходит не всем, как указано в этом прокомментируйте проблему использование Bouncy Castle таким образом может привести к некоторым последствиям, поэтому убедитесь, что вы знаете, что делаете. Это также то, что требует времени и ноу-хау для настройки, между пониманием потенциальных проблем с путями к классам Java и выяснением того, как извлекать и конвертировать все, что вам нужно (в идеале с использованием сценариев оболочки или чего-то подобного для автоматизации процесса, когда у вас есть обновления) .
Поэтому, если вы не используете много функций Bouncy Castle, это может привести к дополнительным сложностям, которые делают его нецелесообразным, в частности, часть Соответствия экспорту США.
person
thesquaregroot
schedule
18.03.2019