حزمة Bouncy Castle Crypto عبارة عن تطبيق Java لخوارزميات التشفير، وقد تم تطويرها بواسطة Legion of the Bouncy Castle، وهي مؤسسة خيرية أسترالية مسجلة، مع القليل من المساعدة! يمكن العثور على The Legion وآخر الأحداث المتعلقة بهذه الحزمة على https://www.bouncycastle.org.
كما يعرب الفيلق أيضًا عن امتنانه للمساهمات التي قدمها الآخرون في هذه الحزمة (انظر هنا للحصول على القائمة الحالية). إذا كنت ترغب في المساهمة في جهودنا، فلا تتردد في الاتصال بنا أو زيارة صفحة التبرعات الخاصة بنا، أو رعاية بعض الأعمال المحددة، أو شراء عقد دعم من خلال Crypto Workshop (الآن جزء من Keyfactor).
تم تنظيم الحزمة بحيث تحتوي على واجهة برمجة تطبيقات خفيفة الوزن مناسبة للاستخدام في أي بيئة (بما في ذلك J2ME الذي تم إصداره حديثًا) مع بنية تحتية إضافية لمطابقة الخوارزميات مع إطار عمل JCE.
ما لم يُنص على خلاف ذلك، يتم توزيع هذا البرنامج بموجب ترخيص يستند إلى ترخيص MIT X Consortium. لعرض الترخيص، انظر هنا. تتضمن مكتبة OpenPGP أيضًا مكتبة BZIP2 معدلة ومرخصة بموجب ترخيص برنامج Apache، الإصدار 2.0.
ملاحظة : شجرة المصدر هذه ليست إصدار 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، فسيضيف إلى مهمة الاختبار المعتادة تبعية على مهام الاختبار التي تستخدم JVMs على وجه التحديد التي تتناولها تلك المتغيرات البيئية. يعتمد البرنامج النصي على 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 إلى التحقق من وجودها ولكن ليس صحة قيمتها.
تنتج بعض المشاريع الفرعية جرارات متعددة الإصدارات ويمكن اختبار هذه الجرار على إصدارات مختلفة من jvm على وجه التحديد.
إذا تم تعريف env vars:
export BC_JDK8=/path/to/java8 export BC_JDK11=/path/to/java11 export BC_JDK17=/path/to/java17
في حالة وجود Java 21 JDK فقط، فسيتم تشغيل مهمة الاختبار العادية وtest21 فقط.
الغرفة النظيفة JCE، للاستخدام مع JDK 1.1 إلى JDK 1.3 موجودة في دليل jce/src/main/java. من JDK 1.4 والإصدارات الأحدث، يتم شحن JCE مع JVM، ويتبع مصدر JDKs الأحدث التقدم الذي تم إحرازه في الإصدارات الأحدث من JCE. إذا كنت تستخدم إصدارًا أحدث من JDK والذي يأتي مع تثبيت JCE، فيرجى عدم تضمين دليل jce كملف مصدر لأنه سيتعارض مع JCE API المثبت مع JDK الخاص بك.
توفر الوحدة الأساسية جميع الوظائف الموجودة في واجهات برمجة التطبيقات خفيفة الوزن.
توفر الوحدة prov جميع وظائف موفر JCA/JCE.
وحدة util هي موطن التعليمات البرمجية التي تستخدمها الوحدات الأخرى التي لا تحتاج إلى أن تكون في Prov. في الوقت الحالي، يعد هذا إلى حد كبير فئات ASN.1 لوحدة PKIX.
وحدة pkix هي موطن التعليمات البرمجية لإنشاء شهادة X.509 وواجهات برمجة التطبيقات للمعايير التي تعتمد على ASN.1 مثل CMS وTSP وPKCS#12 وOCSP وCRMF وCMP.
توفر وحدة البريد واجهة برمجة تطبيقات S/MIME مبنية على نظام إدارة المحتوى (CMS).
وحدة pg هي موطن التعليمات البرمجية المستخدمة لدعم OpenPGP.
وحدة tls هي موطن التعليمات البرمجية المستخدمة في واجهة برمجة تطبيقات TLS العامة وموفر JSSE.
تسمح نصوص البناء التي تأتي مع التوزيع الكامل بإنشاء إصدارات مختلفة باستخدام أشجار المصدر المختلفة مع استبعاد الفئات غير المناسبة ونسخ فئات التوافق المطلوبة من الدلائل التي تحتوي على فئات التوافق المناسبة للتوزيع.
إذا كنت تريد تجربة إنشاء إصدار لنفسك، باستخدام بيئتك الخاصة، فإن أفضل طريقة للقيام بذلك هي البدء بتصميم التوزيعة التي تهتم بها، والتأكد من إنشاء الإصدار، ثم تعديل البرامج النصية للبناء الخاص بك للقيام بما يلي: الاستثناءات المطلوبة ونسخ الملفات لإعدادك، وإلا فمن المحتمل أن تحصل على استثناءات لم يتم العثور على الفئة. التحذير الأخير لهذا هو أنه نظرًا لأن توزيع j2me يتضمن بعض فئات التوافق التي تبدأ في حزمة Java، فأنت بحاجة إلى استخدام أداة تشويش لتغيير أسماء الحزم قبل محاولة استيراد برنامج midlet باستخدام BC API.
هام : ستحتاج أيضًا إلى التحقق من مستودع بيانات bc-test على نفس مستوى مستودع 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
للمهتمين، هناك قائمتين بريديتين للمشاركة في هذا المشروع. للاشتراك استخدم الروابط أدناه وقم بتضمين كلمة الاشتراك في نص الرسالة. (لإلغاء الاشتراك، استبدل الاشتراك بإلغاء الاشتراك في نص الرسالة)
أعلن[email protected]
هذه القائمة البريدية مخصصة لإعلانات الإصدارات الجديدة فقط، ولا يمكن للمشتركين العامين النشر فيها.
[email protected]
هذه القائمة البريدية مخصصة لمناقشة تطوير الحزمة. يتضمن ذلك الأخطاء والتعليقات وطلبات التحسينات والأسئلة حول الاستخدام أو التشغيل.
ملحوظة: يجب أن تكون مشتركًا لإرسال البريد إلى القائمة البريدية أعلاه.
إذا كنت ترغب في تقديم تعليقات مباشرة إلى أعضاء The Legion ، فيرجى استخدام [email protected]، وإذا كنت تريد مساعدة هذا المشروع على البقاء، فيرجى التفكير في التبرع.
للإبلاغ عن الأخطاء/الطلبات، يمكنك الإبلاغ عن المشكلات هنا على github، أو عبر تشفير التعليقات إذا لزم الأمر. سنقبل طلبات السحب بناءً على هذا المستودع أيضًا، ولكن فقط على أساس أنه يجوز توزيع أي كود متضمن بموجب ترخيص Bouncy Castle.
يتمتع!