BIO_PUSH(3SSL)

الاسم
BIO_push, BIO_pop, BIO_set_next - إضافة وإزالة BIOs من سلسلة

موجز
 #include <openssl/bio.h>

 BIO *BIO_push(BIO *b, BIO *next);
 BIO *BIO_pop(BIO *b);
 void BIO_set_next(BIO *b, BIO *next);

الوصف
BIO_push() تدفع b على next. إذا كان b NULL فلا تفعل الدالة شيئًا وتُرجِع next. وإلا تُسبِق b، الذي قد يكون BIO مفردًا أو سلسلة من BIOs، إلى next (ما لم يكن next NULL). ثم تُجري استدعاء تحكم على b وتُرجِع b.

BIO_pop() تُزيل BIO b من أي سلسلة هو جزء منها. إذا كان b NULL فلا تفعل الدالة شيئًا وتُرجِع NULL. وإلا تُجري استدعاء تحكم على b وتُرجِع BIO التالي في السلسلة، أو NULL إذا لم يكن هناك BIO تالٍ. يُصبح BIO المُزال BIO مفردًا بلا ارتباط بالسلسلة الأصلية، وبالتالي يمكن تحريره أو جعله جزءًا من سلسلة مختلفة.

BIO_set_next() تستبدل BIO التالي الموجود في سلسلة بـ BIO المُشار إليه بواسطة next. قد تتضمن السلسلة الجديدة بعضًا من نفس BIOs من السلسلة القديمة أو قد تكون مختلفة تمامًا.

ملاحظات
أسماء هذه الدوال ربما مُضللة قليلاً. BIO_push() تصل سلسلتي BIO بينما BIO_pop() تحذف BIO مفردًا من سلسلة، لا يلزم أن يكون BIO المحذوف في نهاية سلسلة.

قد تكون لعملية استدعاء BIO_push() و BIO_pop() على BIO عواقب إضافية (يُجرى استدعاء تحكم إلى BIOs المتأثرة). ستُلاحظ أي تأثيرات في أوصاف BIOs الفردية.

القيم المُرجعة
BIO_push() تُرجِع رأس السلسلة، والذي عادةً ما يكون b، أو next إذا كان b NULL.

BIO_pop() تُرجِع BIO التالي في السلسلة، أو NULL إذا لم يكن هناك BIO تالٍ.

أمثلة
لهذه الأمثلة، افترض أن md1 و md2 هما BIOs تلخيص، b64 هو BIO base64 و f هو BIO ملف.

إذا كان الاستدعاء:

 BIO_push(b64, f);

يُجرى، فستكون السلسلة الجديدة b64-f. بعد إجراء الاستدعاءات

 BIO_push(md2, b64);
 BIO_push(md1, md2);

السلسلة الجديدة هي md1-md2-b64-f. البيانات المكتوبة إلى md1 ستُهضم بواسطة md1 و md2، وتُرمَز base64، وتُكتب أخيرًا إلى f.

يجب ملاحظة أن القراءة تُسبب مرور البيانات في الاتجاه المعاكس، أي تُقرأ البيانات من f، وتُفك ترميز base64، وتُهضم بواسطة md2 ثم md1.

الاستدعاء:

 BIO_pop(md2);

سيرجع b64 وستكون السلسلة الجديدة md1-b64-f. يمكن كتابة البيانات وقراءتها من md1 كما في السابق، باستثناء أن md2 لن يُطبق بعد الآن.

انظر أيضًا
bio(7)

التاريخ
أُضيفت الدالة BIO_set_next() في OpenSSL 1.1.0.

حقوق النسخ
حقوق النشر 2000-2026 لمؤلفي مشروع OpenSSL. جميع الحقوق محفوظة.

مرخص بموجب رخصة Apache 2.0 (المشار إليها فيما يلي بـ ”الرخصة“). لا يجوز لك استخدام هذا الملف إلا وفقًا لشروط الرخصة. يمكنك الحصول على نسخة منها في الملف LICENSE الموجود في حزمة التوزيع المصدرية أو على الرابط <https://www.openssl.org/source/license.html>.

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.