Пакет Bouncy Castle Crypto представляет собой Java-реализацию криптографических алгоритмов. Он был разработан Legion of the Bouncy Castle, зарегистрированной австралийской благотворительной организацией, с небольшой помощью! Легион и последние новости об этом пакете можно найти на https://www.bouncycastle.org.
Легион также с благодарностью признает вклад, внесенный в этот пакет другими (текущий список см. здесь). Если вы хотите внести свой вклад в наши усилия, свяжитесь с нами или посетите нашу страницу пожертвований, спонсируйте какую-либо конкретную работу или приобретите контракт на поддержку через Crypto Workshop (теперь часть Keyfactor).
Пакет организован таким образом, что содержит легкий API, подходящий для использования в любой среде (включая недавно выпущенный J2ME), с дополнительной инфраструктурой для соответствия алгоритмов структуре JCE.
Если не указано иное, это программное обеспечение распространяется по лицензии, основанной на лицензии Консорциума MIT X. Посмотреть лицензию можно здесь. Библиотека OpenPGP также включает модифицированную библиотеку BZIP2, которая лицензируется по лицензии Apache Software License, версия 2.0.
Примечание . Это дерево исходного кода не является версией API FIPS. Если вас интересует наша версия FIPS, свяжитесь с нами напрямую по адресу [email protected].
Файл bc_maven_public_key.asc содержит открытый ключ, используемый для подписи наших артефактов в Maven Central. Вам нужно будет использовать
gpg -o bc_maven_public_key.gpg --dearmor bc_maven_public_key.asc
деблокировать ключ перед использованием. Как только это будет сделано, файл можно будет проверить, используя:
gpg --no-default-keyring --keyring ./bc_maven_public_key.gpg --verify file_name.jar.asc file_name.jar
Примечание. Перед именем файла ключа требуется расширение ./, чтобы gpg выполнял локальный поиск.
Теперь этот проект можно собрать и протестировать с помощью JDK21.
Если сценарий сборки обнаружит BC_JDK8, BC_JDK11, BC_JDK17, он добавит к обычной тестовой задаче зависимость от тестовых задач, которые специально используют JVM, адресуемые этими переменными среды. Сценарий использует JAVA_HOME для выбора Java 21, если он используется.
Мы поддерживаем тестирование на конкретных JVM, поскольку это единственный способ убедиться в совместимости библиотеки.
Следующие переменные среды могут опционально указывать на JAVA_HOME для каждой версии JVM.
export BC_JDK8=/path/to/java8 export BC_JDK11=/path/to/java11 export BC_JDK17=/path/to/java17
Теперь проект использует gradlew
, который можно вызвать, например:
# from the root of the project # Ensure JAVA_HOME points to JDK 21 or higher JAVA_HOME or that # gradlew can find a java 21 installation to use. ./gradlew clean build
Сценарий gradle попытается проверить их существование, но не правильность их значения.
Некоторые подпроекты создают jar-файлы с несколькими выпусками, и эти jar-файлы можно протестировать специально на разных версиях jvm.
Если переменные env определены:
export BC_JDK8=/path/to/java8 export BC_JDK11=/path/to/java11 export BC_JDK17=/path/to/java17
Если присутствует только JDK Java 21, то запускаются только обычные тестовые задачи и test21.
JCE чистой комнаты для использования с JDK 1.1–JDK 1.3 находится в каталоге jce/src/main/java. Начиная с JDK 1.4 и более поздних версий, JCE поставляется с JVM, исходный код для более поздних JDK соответствует прогрессу, достигнутому в более поздних версиях JCE. Если вы используете более позднюю версию JDK, которая поставляется с установкой JCE, не включайте каталог jce в качестве исходного файла, поскольку он будет конфликтовать с API JCE, установленным с вашим JDK.
Основной модуль предоставляет все функциональные возможности облегченных API.
Модуль prov предоставляет все функции поставщика JCA/JCE.
Модуль util — это дом для кода, который используется другими модулями, которым не обязательно находиться в prov. На данный момент это в основном классы ASN.1 для модуля PKIX.
Модуль pkix является домом для кода для создания сертификата X.509 и API-интерфейсов для стандартов, основанных на ASN.1, таких как CMS, TSP, PKCS#12, OCSP, CRMF и CMP.
Почтовый модуль предоставляет API S/MIME, построенный на базе CMS.
Модуль pg — это дом для кода, используемого для поддержки OpenPGP.
Модуль tls является домом для кода, используемого для общего API TLS и поставщика JSSE.
Сценарии сборки, поставляемые с полным дистрибутивом, позволяют создавать разные выпуски, используя разные деревья исходного кода, исключая при этом неподходящие классы и копируя необходимые классы совместимости из каталогов, содержащих классы совместимости, подходящие для дистрибутива.
Если вы хотите попробовать создать сборку для себя, используя свою собственную среду, лучший способ сделать это — начать со сборки для интересующего вас дистрибутива, убедиться, что сборки, а затем изменить свои сценарии сборки, чтобы выполнить необходимые исключения и копии файлов для вашей настройки, в противном случае вы, скорее всего, получите исключения класса, не найденного. Последнее предостережение: поскольку дистрибутив j2me включает в себя некоторые классы совместимости, начиная с пакета Java, вам необходимо использовать обфускатор для изменения имен пакетов, прежде чем пытаться импортировать мидлет с помощью BC API.
Важно : вам также необходимо будет проверить репозиторий bc-test-data на том же уровне, что и репозиторий bc-java, если вы хотите запустить тесты.
Чтобы просмотреть некоторые примеры, посмотрите тестовые программы в пакетах:
org.bouncycastle.crypto.test
org.bouncycastle.jce.provider.test
org.bouncycastle.cms.test
org.bouncycastle.mail.smime.test
org.bouncycastle.openpgp.test
org.bouncycastle.tsp.test
Есть также несколько конкретных примеров программ для работы с SMIME и OpenPGP. Их можно найти в:
org.bouncycastle.mail.smime.examples
org.bouncycastle.openpgp.examples
Для желающих есть 2 рассылки для участия в этом проекте. Чтобы подписаться, используйте ссылки ниже и включите слово «подписаться» в тело сообщения. (Чтобы отказаться от подписки, замените «подписаться» на «отписаться» в теле сообщения)
анонс[email protected]
Этот список рассылки предназначен только для объявлений о новых выпусках, обычные подписчики не могут отправлять в него сообщения.
[email protected]
Этот список рассылки предназначен для обсуждения разработки пакета. Сюда входят ошибки, комментарии, запросы на улучшения, вопросы по использованию или работе.
ПРИМЕЧАНИЕ. Чтобы отправлять почту в указанный выше список рассылки, вам необходимо подписаться.
Если вы хотите оставить отзыв непосредственно членам The Legion , напишите нам [email protected]. Если вы хотите помочь этому проекту выжить, рассмотрите возможность сделать пожертвование.
Для сообщений об ошибках/запросов вы можете сообщать о проблемах здесь, на github, или, если необходимо, через шифрование обратной связи. Мы также будем принимать запросы на включение на основе этого репозитория, но только при условии, что любой включенный код может распространяться по лицензии Bouncy Castle.
Наслаждаться!