Paket Bouncy Castle Crypto adalah implementasi algoritma kriptografi Java, dikembangkan oleh Legion of the Bouncy Castle, Badan Amal Australia yang terdaftar, dengan sedikit bantuan! Legiun, dan hal terkini mengenai paket ini, dapat ditemukan di https://www.bouncycastle.org.
Legio juga mengucapkan terima kasih atas kontribusi pihak lain terhadap paket ini (lihat di sini untuk daftar terkini). Jika Anda ingin berkontribusi pada upaya kami, silakan menghubungi kami atau kunjungi halaman donasi kami, mensponsori beberapa pekerjaan tertentu, atau membeli kontrak dukungan melalui Crypto Workshop (sekarang bagian dari Keyfactor).
Paket ini disusun sedemikian rupa sehingga berisi API ringan yang cocok untuk digunakan di lingkungan apa pun (termasuk J2ME yang baru dirilis) dengan infrastruktur tambahan untuk menyesuaikan algoritme dengan kerangka JCE.
Kecuali dinyatakan lain, perangkat lunak ini didistribusikan di bawah lisensi berdasarkan lisensi Konsorsium MIT X. Untuk melihat lisensinya, lihat di sini. Pustaka OpenPGP juga menyertakan pustaka BZIP2 yang dimodifikasi yang dilisensikan di bawah Lisensi Perangkat Lunak Apache, Versi 2.0.
Catatan : pohon sumber ini bukan API versi FIPS - jika Anda tertarik dengan versi FIPS kami, silakan hubungi kami langsung di [email protected].
File bc_maven_public_key.asc berisi kunci publik yang digunakan untuk menandatangani artefak kami di Maven Central. Anda harus menggunakan
gpg -o bc_maven_public_key.gpg --dearmor bc_maven_public_key.asc
untuk sayang kuncinya sebelum digunakan. Setelah selesai, file dapat diverifikasi dengan menggunakan:
gpg --no-default-keyring --keyring ./bc_maven_public_key.gpg --verify file_name.jar.asc file_name.jar
Catatan: ./ diperlukan di depan nama file kunci untuk memberitahu gpg agar mencari secara lokal.
Proyek ini sekarang dapat dibangun dan diuji dengan JDK21.
Jika skrip build mendeteksi BC_JDK8, BC_JDK11, BC_JDK17, maka tugas pengujian biasa akan menambah ketergantungan pada tugas pengujian yang secara khusus menggunakan JVM yang ditangani oleh variabel lingkungan tersebut. Skrip ini mengandalkan JAVA_HOME untuk mengambil Java 21 jika digunakan.
Kami mendukung pengujian pada JVM tertentu karena ini adalah satu-satunya cara untuk memastikan perpustakaan tersebut kompatibel.
Variabel lingkungan berikut secara opsional dapat menunjuk ke JAVA_HOME untuk setiap versi JVM.
export BC_JDK8=/path/to/java8 export BC_JDK11=/path/to/java11 export BC_JDK17=/path/to/java17
Proyek ini sekarang menggunakan gradlew
yang dapat dipanggil misalnya:
# 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
Skrip gradle akan berusaha memverifikasi keberadaannya tetapi bukan kebenaran nilainya.
Beberapa subproyek memproduksi stoples multi-rilis dan stoples ini dapat diuji pada versi jvm yang berbeda secara khusus.
Jika vars env didefinisikan:
export BC_JDK8=/path/to/java8 export BC_JDK11=/path/to/java11 export BC_JDK17=/path/to/java17
Jika hanya ada Java 21 JDK maka tugas pengujian normal dan test21 hanya dijalankan.
Clean room JCE, untuk digunakan dengan JDK 1.1 hingga JDK 1.3 ada di direktori jce/src/main/java. Dari JDK 1.4 dan JCE yang lebih baru dikirimkan bersama JVM, sumber untuk JDK selanjutnya mengikuti kemajuan yang dibuat di versi JCE yang lebih baru. Jika Anda menggunakan JDK versi lebih baru yang disertakan dengan instalasi JCE, harap jangan sertakan direktori jce sebagai file sumber karena akan berbenturan dengan JCE API yang diinstal dengan JDK Anda.
Modul inti menyediakan semua fungsi dalam API kelas ringan.
Modul prov menyediakan semua fungsionalitas penyedia JCA/JCE.
Modul util adalah rumah bagi kode yang digunakan oleh modul lain yang tidak perlu ada di prov. Saat ini sebagian besar merupakan kelas ASN.1 untuk modul PKIX.
Modul pkix adalah rumah bagi kode untuk pembuatan sertifikat X.509 dan API untuk standar yang mengandalkan ASN.1 seperti CMS, TSP, PKCS#12, OCSP, CRMF, dan CMP.
Modul email menyediakan S/MIME API yang dibangun di atas CMS.
Modul pg adalah rumah bagi kode yang digunakan untuk mendukung OpenPGP.
Modul tls adalah rumah bagi kode yang digunakan untuk API TLS umum dan Penyedia JSSE.
Skrip build yang disertakan dengan distribusi lengkap memungkinkan pembuatan rilis yang berbeda dengan menggunakan pohon sumber yang berbeda sambil mengecualikan kelas yang tidak sesuai dan menyalin kelas kompatibilitas yang diperlukan dari direktori yang berisi kelas kompatibilitas yang sesuai untuk distribusi tersebut.
Jika Anda ingin mencoba membuat build untuk Anda sendiri, menggunakan lingkungan Anda sendiri, cara terbaik untuk melakukannya adalah memulai dengan build untuk distribusi yang Anda minati, pastikan build tersebut, lalu modifikasi skrip build Anda untuk melakukan pengecualian yang diperlukan dan salinan file untuk pengaturan Anda, jika tidak, kemungkinan besar Anda akan mendapatkan pengecualian kelas tidak ditemukan. Peringatan terakhir untuk hal ini adalah karena distribusi j2me menyertakan beberapa kelas kompatibilitas yang dimulai pada paket java, Anda perlu menggunakan obfuscator untuk mengubah nama paket sebelum mencoba mengimpor midlet menggunakan BC API.
Penting : Anda juga perlu memeriksa repositori bc-test-data pada level yang sama dengan repositori bc-java jika Anda ingin menjalankan pengujian.
Untuk melihat beberapa contoh, lihat program pengujian dalam paket:
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
Ada juga beberapa contoh program khusus untuk menangani SMIME dan OpenPGP. Mereka dapat ditemukan di:
org.bouncycastle.mail.smime.examples
org.bouncycastle.openpgp.contoh
Bagi yang berminat, ada 2 milis untuk berpartisipasi dalam proyek ini. Untuk berlangganan gunakan tautan di bawah dan sertakan kata berlangganan di badan pesan. (Untuk berhenti berlangganan, ganti berlangganan dengan berhenti berlangganan di badan pesan)
[email protected]
Milis ini hanya untuk pengumuman rilis baru, pelanggan umum tidak dapat mengirimkannya.
[email protected]
Milis ini untuk diskusi pengembangan paket. Ini termasuk bug, komentar, permintaan penyempurnaan, pertanyaan tentang penggunaan atau pengoperasian.
CATATAN: Anda harus berlangganan untuk mengirim email ke milis di atas.
Jika Anda ingin memberikan umpan balik secara langsung kepada anggota The Legion , silakan gunakan [email protected], jika Anda ingin membantu proyek ini bertahan, silakan pertimbangkan untuk berdonasi.
Untuk pelaporan/permintaan bug, Anda dapat melaporkan masalah di sini di github, atau melalui feedback-crypto jika diperlukan. Kami juga akan menerima permintaan penarikan berdasarkan repositori ini, tetapi hanya atas dasar bahwa kode apa pun yang disertakan dapat didistribusikan di bawah Lisensi Bouncy Castle.
Menikmati!