.\" -*- coding: UTF-8 -*- .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .de IX .. .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .if n .ds AD l .\" .\" Required to disable full justification in groff 1.23.0. .\" ======================================================================== .\" .IX Title "SSL_CTX_SET_PSK_CLIENT_CALLBACK 3ssl" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH SSL_CTX_SET_PSK_CLIENT_CALLBACK 3ssl "7 أبريل 2026" 3.6.2 OpenSSL .if n .ad l .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .nh .SH الاسم SSL_psk_client_cb_func, SSL_psk_use_session_cb_func, SSL_CTX_set_psk_client_callback, SSL_set_psk_client_callback, SSL_CTX_set_psk_use_session_callback, SSL_set_psk_use_session_callback \&\- ضبط دالة الاستدعاء لعميل PSK .SH موجز .IX Header موجز .Vb 1 \& #include \& \& typedef int (*SSL_psk_use_session_cb_func)(SSL *ssl, const EVP_MD *md, \& const unsigned char **id, \& size_t *idlen, \& SSL_SESSION **sess); \& \& \& void SSL_CTX_set_psk_use_session_callback(SSL_CTX *ctx, \& SSL_psk_use_session_cb_func cb); \& void SSL_set_psk_use_session_callback(SSL *s, SSL_psk_use_session_cb_func cb); \& \& \& typedef unsigned int (*SSL_psk_client_cb_func)(SSL *ssl, \& const char *hint, \& char *identity, \& unsigned int max_identity_len, \& unsigned char *psk, \& unsigned int max_psk_len); \& \& void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, SSL_psk_client_cb_func cb); \& void SSL_set_psk_client_callback(SSL *ssl, SSL_psk_client_cb_func cb); .Ve .SH الوصف .IX Header الوصف تطبيق عميل يرغب في استخدام PSKs لـ TLSv1.3 يجب أن يستخدم إما \&\fBSSL_CTX_set_psk_use_session_callback()\fP أو \fBSSL_set_psk_use_session_callback()\fP حسب المناسبة. لا يمكن استخدام هذه الدوال لـ PSKs الخاصة بـ TLSv1.2 وما دونه. .PP تُعطى دالة الاستدعاء مؤشرًا لاتصال SSL في \fBssl\fP. .PP في المرة الأولى التي تُستدعى فيها دالة الاستدعاء لاتصال، يكون المعامل \fBmd\fP هو NULL. في بعض الظروف، تُستدعى دالة الاستدعاء مرة ثانية. في هذه الحالة، يكون الخادم قد حدد مجموعة تشفير لاستخدامها بالفعل، ويجب أن يكون PSK متوافقًا مع الملخص الخاص بتلك المجموعة. يُعطى الملخص في \fBmd\fP. يُسمح أن يكون PSK المُعاد من دالة الاستدعاء مختلفًا بين المرة الأولى والثانية التي تُستدعى فيها. .PP عند الإكمال الناجح، يجب على دالة الاستدعاء تخزين مؤشر لمعرّف PSK في \fB*id\fP. يجب تخزين طول المعرّف بالبايتات في \fB*idlen\fP. تبقى الذاكرة المشار إليها بواسطة \fB*id\fP مملوكة للتطبيق ويجب تحريرها منه حسب الحاجة في أي نقطة بعد اكتمال المصافحة. .PP بالإضافة إلى ذلك، يجب على دالة الاستدعاء تخزين مؤشر لكائن SSL_SESSION في \&\fB*sess\fP. يُستخدم هذا كأساس لـ PSK، ويجب، على الأقل، تعيين الحقول التالية: .IP "المفتاح الرئيس" 4 .IX Item "المفتاح الرئيس" يمكن تعيين هذا عبر استدعاء \fBSSL_SESSION_set1_master_key\fP\|(3). .IP "مجموعة تشفير" 4 .IX Item "مجموعة تشفير" فقط ملخص المصافحة المرتبط بمجموعة التشفير هو ذو صلة بـ PSK (قد يستمر الخادم في التفاوض على أي مجموعة تشفير متوافقة مع الملخص). يمكن للتطبيق استخدام أي مجموعة تشفير لـ TLSv1.3. إذا كان \fBmd\fP ليس NULL، يجب أن يكون ملخص المصافحة لمجموعة التشفير هو نفسه. يمكن تعيين مجموعة التشفير عبر استدعاء <\fBSSL_SESSION_set_cipher\fP\|(3)>. يمكن التحقق من ملخص المصافحة لكائن SSL_CIPHER باستخدام <\fBSSL_CIPHER_get_handshake_digest\fP\|(3)>. .IP "إصدار البروتوكول" 4 .IX Item "إصدار البروتوكول" يمكن تعيين هذا عبر استدعاء \fBSSL_SESSION_set_protocol_version\fP\|(3) ويجب أن يكون TLS1_3_VERSION. .PP بالإضافة إلى ذلك، يجب تعيين قيمة البيانات المبكرة القصوى عبر استدعاء \&\fBSSL_SESSION_set_max_early_data\fP\|(3) إذا كان PSK سيُستخدم لإرسال بيانات مبكرة. .PP بدلاً من ذلك، يمكن أيضًا استخدام SSL_SESSION تم إنشاؤه من مصافحة سابقة غير PSK كأساس لـ PSK. .PP تُمرر ملكية كائن SSL_SESSION إلى مكتبة OpenSSL، وبالتالي لا يجب تحريره من التطبيق. .PP لاحظ أنه كما هو موصوف أعلاه، قد تُستدعى دالة الاستدعاء مرة ثانية أثناء المصافحة. نظرًا لأن ملكية SSL_SESSION تُنقل إلى OpenSSL في كل استدعاء، إذا رغبت دالة الاستدعاء في إرجاع نفس مؤشر SSL_SESSION في استدعاء لاحق، يجب عليها أولاً استدعاء \fBSSL_SESSION_up_ref\fP\|(3) لزيادة عدد المراجع. عدم القيام بذلك سيؤدي إلى خطأ استخدام بعد التحرير. بدلاً من ذلك، قد تُرجع دالة الاستدعاء كائن SSL_SESSION مختلفًا في كل استدعاء (مثلًا، باستدعاء \fBSSL_SESSION_dup\fP\|(3)). .PP من الممكن أيضًا أن تنجح دالة الاستدعاء ولكن لا توفر PSK. في هذه الحالة، لن يُرسل أي PSK إلى الخادم ولكن ستستمر المصافحة. للقيام بذلك، يجب أن تعود دالة الاستدعاء بنجاح وتضمن أن \fB*sess\fP هو NULL. سيتم تجاهل محتويات \fB*id\fP و \fB*idlen\fP. .PP يجب على تطبيق عميل يرغب في استخدام معميات PSK لـ TLSv1.2 وما دونه توفير دالة رد نداء مختلفة. تُستدعى هذه الدالة عندما يرسل العميل رسالة ClientKeyExchange إلى الخادم. .PP الغرض من دالة رد النداء هو اختيار هوية PSK والمفتاح المشترك مسبقًا لاستخدامهما خلال مرحلة إعداد الاتصال. .PP تُضبط دالة رد النداء باستخدام الدالتين \fBSSL_CTX_set_psk_client_callback()\fP أو \fBSSL_set_psk_client_callback()\fP. تُعطى دالة رد النداء الاتصال في المعامل \fBssl\fP، وتلميح هوية PSK منتهي بـ \fBNUL\fP يُرسله الخادم في المعامل \fBhint\fP، ومخزنًا مؤقتًا \fBidentity\fP بطول \fBmax_identity_len\fP بايت (بما في ذلك المنهي \fBNUL\fP) حيث تُخزَّن الهوية الناتجة المنتهية بـ \fBNUL\fP، ومخزنًا مؤقتًا \fBpsk\fP بطول \fBmax_psk_len\fP بايت حيث يُخزَّن المفتاح المشترك مسبقًا الناتج. .PP ستعمل دالة رد النداء المستخدمة في TLSv1.2 أيضًا في TLSv1.3، على الرغم من أنه يُوصى باستخدام \fBSSL_CTX_set_psk_use_session_callback()\fP أو \fBSSL_set_psk_use_session_callback()\fP لهذا الغرض بدلاً من ذلك. إذا تم التفاوض على TLSv1.3، فسيتحقق OpenSSL أولاً مما إذا كانت دالة رد نداء قد ضُبطت عبر \fBSSL_CTX_set_psk_use_session_callback()\fP أو \fBSSL_set_psk_use_session_callback()\fP وسيستخدمها كأولوية. إذا لم توجد دالة رد نداء من هذا القبيل، فسيتحقق مما إذا كانت دالة رد نداء قد ضُبطت عبر \fBSSL_CTX_set_psk_client_callback()\fP أو \&\fBSSL_set_psk_client_callback()\fP ويستخدمها. في هذه الحالة، ستكون قيمة \fBhint\fP دائمًا NULL وسيكون ملخص المصافحة مبدئيًا SHA\-256 لأي PSK مُعاد. تبادلات البيانات المبكرة لـ TLSv1.3 ممكنة في اتصالات PSK فقط مع دالة رد النداء \&\fBSSL_psk_use_session_cb_func\fP، وغير ممكنة مع دالة رد النداء \&\fBSSL_psk_client_cb_func\fP. .SH ملاحظات .IX Header ملاحظات لاحظ أن المعامل \fBhint\fP المُعطى لدالة رد النداء قد يكون \fBNULL\fP. .PP سيظهر الاتصال المنشأ عبر TLSv1.3 PSK كما لو أن استئناف الجلسة قد حدث بحيث تُعيد \fBSSL_session_reused\fP\|(3) قيمة «صواب». .PP لا توجد مشكلات أمنية معروفة عند مشاركة نفس PSK بين TLSv1.2 (أو أقل) و TLSv1.3. ومع ذلك، تحتوي RFC على هذه الملحوظة التحذيرية: .PP "على الرغم من عدم وجود طريقة معروفة يمكن من خلالها لنفس PSK إنتاج مخرجات مرتبطة في كلا الإصدارين، إلا أنه لم يُجرَ إلا تحليل محدود. يمكن للمنفذين ضمان السلامة من المخرجات المرتبطة عبر البروتوكولات بعدم إعادة استخدام مفاتيح PSK بين TLS 1.3 و TLS 1.2." .SH "القيم المُرجعة" .IX Header "القيم المُرجعة" تُفسَّر القيم المُعادة من دالة رد النداء \fBSSL_psk_client_cb_func\fP كالتالي: .PP عند النجاح (وجدت دالة رد النداء هوية PSK ومفتاحًا مشتركًا مسبقًا لاستخدامه)، يُعاد طول (> 0) \fBpsk\fP بالبايت. .PP وإلا أو عند الأخطاء، يجب أن تُعيد دالة رد النداء 0. في هذه الحالة، يفشل إعداد الاتصال. .PP يجب أن تُعيد دالة رد النداء SSL_psk_use_session_cb_func القيمة 1 عند النجاح أو 0 عند الفشل. في حالة الفشل، يفشل إعداد الاتصال. .SH "انظر أيضًا" .IX Header "انظر أيضًا" \&\fBssl\fP\|(7), \&\fBSSL_CTX_set_psk_find_session_callback\fP\|(3), \&\fBSSL_set_psk_find_session_callback\fP\|(3) .SH التاريخ .IX Header التاريخ أُضيفت \&\fBSSL_CTX_set_psk_use_session_callback()\fP و \fBSSL_set_psk_use_session_callback()\fP في OpenSSL 1.1.1. .SH "حقوق النسخ" .IX Header "حقوق النسخ" حقوق النشر 2006\-2026 لمؤلفي مشروع OpenSSL. جميع الحقوق محفوظة. .PP مرخص بموجب رخصة Apache 2.0 (المشار إليها فيما يلي بـ ”الرخصة“). لا يجوز لك استخدام هذا الملف إلا وفقًا لشروط الرخصة. يمكنك الحصول على نسخة منها في الملف LICENSE الموجود في حزمة التوزيع المصدرية أو على الرابط . .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .