Bouncy Castle Crypto パッケージは、暗号化アルゴリズムの Java 実装であり、オーストラリアの慈善団体として登録されている Legion of the Bouncy Castle によって、わずかな協力を得て開発されました。 Legion とこのパッケージに関する最新情報は、https://www.bouncycastle.org でご覧いただけます。
Legion はまた、他の人によるこのパッケージへの貢献に感謝の意を表します (最新のリストについては、ここを参照してください)。私たちの取り組みに貢献したい場合は、お気軽に私たちにご連絡いただくか、寄付ページにアクセスして、特定の作品のスポンサーになったり、Crypto Workshop (現在は Keyfactor の一部) を通じてサポート契約を購入してください。
このパッケージは、アルゴリズムを JCE フレームワークに準拠させるための追加インフラストラクチャを備えた、あらゆる環境 (新しくリリースされた J2ME を含む) での使用に適した軽量 API を含むように編成されています。
特に明記されていない限り、このソフトウェアは MIT X コンソーシアム ライセンスに基づくライセンスに基づいて配布されます。ライセンスを表示するには、ここを参照してください。 OpenPGP ライブラリには、Apache ソフトウェア ライセンス バージョン 2.0 に基づいてライセンス供与される、修正された BZIP2 ライブラリも含まれています。
注: このソース ツリーは 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 21 が使用されている場合、スクリプトは JAVA_HOME に依存して Java 21 を取得します。
ライブラリに互換性があることを確認する唯一の方法であるため、特定の JVM でのテストをサポートしています。
次の環境変数は、オプションで各 JVM バージョンの JAVA_HOME を指すことができます。
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 バージョンでテストできます。
環境変数が定義されている場合:
export BC_JDK8=/path/to/java8 export BC_JDK11=/path/to/java11 export BC_JDK17=/path/to/java17
Java 21 JDK のみが存在する場合は、通常のテスト タスクと test21 のみが実行されます。
JDK 1.1 から JDK 1.3 で使用するクリーン ルーム JCE は、jce/src/main/java ディレクトリにあります。 JDK 1.4 以降では、JCE が JVM に同梱されており、それ以降の JDK のソースは、JCE の以降のバージョンで行われた進歩に従っています。 JCE インストールに付属する新しいバージョンの JDK を使用している場合は、JDK にインストールされている JCE API と衝突するため、ソース ファイルとして jce ディレクトリを含めないでください。
コアモジュールは、ligthweight API のすべての機能を提供します。
provモジュールは、すべての JCA/JCE プロバイダー機能を提供します。
utilモジュールは、prov にある必要のない他のモジュールによって使用されるコードのホームです。現時点では、これは主に PKIX モジュールの ASN.1 クラスです。
pkixモジュールは、X.509 証明書生成用のコードと、CMS、TSP、PKCS#12、OCSP、CRMF、CMP などの ASN.1 に依存する標準用の API のホームです。
メールモジュールは、CMS 上に構築された S/MIME API を提供します。
pgモジュールは、OpenPGP をサポートするために使用されるコードのホームです。
tlsモジュールは、一般的な TLS API および JSSE プロバイダーに使用されるコードのホームです。
完全なディストリビューションに付属するビルド スクリプトを使用すると、異なるソース ツリーを使用して、適切でないクラスを除外し、ディストリビューションに適切な互換性クラスを含むディレクトリから必要な互換性クラスをコピーすることで、異なるリリースを作成できます。
自分の環境を使用して自分用のビルドを作成してみたい場合は、興味のあるディストリビューションのビルドから開始し、それがビルドされることを確認してから、ビルド スクリプトを変更して次のことを実行するのが最善の方法です。セットアップに必要な除外とファイルのコピーが必要です。そうしないと、クラスが見つからない例外が発生する可能性があります。これに対する最後の注意点は、j2me ディストリビューションには Java パッケージから始まるいくつかの互換性クラスが含まれているため、BC API を使用してミドレットをインポートする前に、難読化ツールを使用してパッケージ名を変更する必要があることです。
重要: テストを実行する場合は、bc-java リポジトリと同じレベルで bc-test-data リポジトリもチェックアウトする必要があります。
いくつかの例を確認するには、パッケージ内のテスト プログラムを確認してください。
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 つあります。購読するには、以下のリンクを使用し、メッセージ本文に「購読」という単語を含めてください。 (購読を解除するには、メッセージ本文の「subscribe」を「unsubscribe」に置き換えます)
発表[email protected]
このメーリングリストは新作発表専用であり、一般の方は投稿できません。
[email protected]
このメーリング リストは、パッケージの開発について議論するためのものです。これには、バグ、コメント、機能拡張のリクエスト、使用法や操作に関する質問が含まれます。
注:上記のメーリング リストにメールを送信するには、購読する必要があります。
The Legionのメンバーに直接フィードバックを提供したい場合は、[email protected] をご利用ください。このプロジェクトの存続を支援したい場合は、寄付をご検討ください。
バグ報告/リクエストについては、ここ github で問題を報告するか、必要に応じてフィードバック クリプト経由で問題を報告できます。このリポジトリに基づいてプル リクエストも受け付けますが、含まれるコードは Bouncy Castle ライセンスに基づいて配布できることが前提となります。
楽しむ!