SSL_DO_HANDSHAKE(3SSL)

الاسم
SSL_do_handshake - تنفيذ مصافحة TLS/SSL

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

 int SSL_do_handshake(SSL *ssl);

الوصف
SSL_do_handshake() تنتظر حدوث مصافحة SSL/TLS. إذا كان الاتصال في وضع العميل، تُبدأ المصافحة. قد يلزم ضبط إجراءات المصافحة صراحةً مسبقًا باستخدام إما SSL_set_connect_state(3) أو SSL_set_accept_state(3).

ملاحظات
يعتمد سلوك SSL_do_handshake() على BIO الأساسي.

إذا كان BIO الأساسي blocking، فإن SSL_do_handshake() لا تُرجع إلا بعد اكتمال المصافحة أو حدوث خطأ.

إذا كان BIO الأساسي nonblocking، فإن SSL_do_handshake() تُرجع أيضًا عندما لا يستطيع BIO الأساسي تلبية احتياجات SSL_do_handshake() لمواصلة المصافحة. في هذه الحالة، يُنتج استدعاء SSL_get_error() بقيمة إرجاع SSL_do_handshake() SSL_ERROR_WANT_READ أو SSL_ERROR_WANT_WRITE. يجب على العملية المستدعية عندئذٍ تكرار الاستدعاء بعد اتخاذ الإجراء المناسب لتلبية احتياجات SSL_do_handshake(). يعتمد الإجراء على BIO الأساسي. عند استخدام مقبس غير محجوب، لا يُفعل شيء، لكن يمكن استخدام select() للتحقق من الشرط المطلوب. عند استخدام BIO تخزين مؤقت، مثل زوج BIO، يجب كتابة البيانات في BIO أو استرجاعها منه قبل القدرة على المتابعة.

القيم المُرجعة
يمكن أن تحدث قيم الإعادة التالية:

0   لم تكن مصافحة TLS/SSL ناجحة ولكن أُنهيت بشكل مضبوط وبموجب مواصفات بروتوكول TLS/SSL. استدعِ SSL_get_error() مع قيمة الإرجاع ret لمعرفة السبب.

1   اكتملت مصافحة TLS/SSL بنجاح، وأُنشئ اتصال TLS/SSL.

<0  لم تنجح مصافحة TLS/SSL بسبب حدوث خطأ فادح إما على مستوى البروتوكول أو حدوث فشل في الاتصال. لم يكن الإغلاق نظيفًا. يمكن أن يحدث ذلك أيضًا إذا كان هناك حاجة لإجراء لمتابعة العملية لـ BIOs غير الحاجزة. استدعِ SSL_get_error() مع قيمة العودة ret لمعرفة السبب.

انظر أيضًا
SSL_get_error(3), SSL_connect(3), SSL_accept(3), ssl(7), bio(7), SSL_set_connect_state(3)

حقوق النسخ
حقوق النشر 2002-2020 لمؤلفي مشروع 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.