Нет, Java JCA - это криптографический API.Он не поддерживает протоколы более высокого уровня , он просто предоставляет относительно высокий уровень доступа к криптографическим алгоритмам .Конечно, есть один заслуживающий внимания протокол, который реализован в Java: TLS внутри (отдельного) поставщика JSSE.Это требует поддержки для использования / проверки сертификатов X.509v3 и тому подобного, но это все (JCA очень сильно ориентирован на поддержку TLS в качестве основной цели по очевидным причинам).
OpenPGP, с другой стороны, являетсяспецификация протокола, которая не поддерживается Java.Вам нужно построить реализацию протокола поверх JCA для поддержки OpenPGP.Тем не менее, это именно то, что сделал Bouncy Castle ;их реализация зависит от интерфейса JCA, а не от «легковесного» API Bouncy Castle.Таким образом, вы можете использовать библиотеку OpenPGP Bouncy Castle и использовать JCA, например, для поддержки AES-NI или аппаратных ключей.Просто убедитесь, что поставщик JCA, который вы хотите использовать , имеет больший приоритет , чем любой сторонний поставщик, например, поставщик Bouncy Castle (добавьте его в конец списка поставщиков!).
Конечно, для поддержки некоторых более эзотерических опций (в частности, поддержки определенных кривых ЕС) вы все равно можете добавить провайдера Bouncy Castle в вашу среду выполнения.Модуль Maven OpenPGP по-прежнему перечисляет провайдера Bouncy Castle в качестве требования к компиляции, но я не уверен, что это не только для тестирования или что библиотека необходима напрямую.
Одна проблема, которая может бытьнеприятно то, что PGP использует свою собственную версию алгоритма шифрования CFB, которая не доступна напрямую у провайдеров по умолчанию во время выполнения, о котором я знаю. Так что вам может потребоваться включить библиотеку для этой функции.Это также может означать, что ускорение AES недоступно для библиотеки.