.\" -*- 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_SET1_CURVES 3ssl" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH SSL_CTX_SET1_CURVES 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_CTX_set1_groups, SSL_CTX_set1_groups_list, SSL_set1_groups, SSL_set1_groups_list, SSL_get1_groups, SSL_get0_iana_groups, SSL_get_shared_group, SSL_get_negotiated_group, SSL_CTX_set1_curves, SSL_CTX_set1_curves_list, SSL_set1_curves, SSL_set1_curves_list, SSL_get1_curves, SSL_get_shared_curve, SSL_CTX_get0_implemented_groups \&\- دوال المنحنيات المدعومة لـ EC .SH موجز .IX Header موجز .Vb 1 \& #include \& \& int SSL_CTX_set1_groups(SSL_CTX *ctx, int *glist, int glistlen); \& int SSL_CTX_set1_groups_list(SSL_CTX *ctx, char *list); \& \& int SSL_set1_groups(SSL *ssl, int *glist, int glistlen); \& int SSL_set1_groups_list(SSL *ssl, char *list); \& \& int SSL_get1_groups(SSL *ssl, int *groups); \& int SSL_get0_iana_groups(SSL *ssl, uint16_t **out); \& int SSL_get_shared_group(SSL *s, int n); \& int SSL_get_negotiated_group(SSL *s); \& \& int SSL_CTX_set1_curves(SSL_CTX *ctx, int *clist, int clistlen); \& int SSL_CTX_set1_curves_list(SSL_CTX *ctx, char *list); \& \& int SSL_set1_curves(SSL *ssl, int *clist, int clistlen); \& int SSL_set1_curves_list(SSL *ssl, char *list); \& \& int SSL_get1_curves(SSL *ssl, int *curves); \& int SSL_get_shared_curve(SSL *s, int n); \& \& int SSL_CTX_get0_implemented_groups(SSL_CTX *ctx, int all, \& STACK_OF(OPENSSL_CSTRING) *names); .Ve .SH الوصف .IX Header الوصف لجميع الدوال أدناه التي تضبط المجموعات المدعومة، يجب وجود مجموعة واحدة على الأقل في القائمة. عدد من هذه الدوال يُعرِّف المجموعات عبر قيمة عددية فريدة \fBNID\fP. لكن، قد يُضاف دعم لبعض المجموعات بواسطة موفري خارجيين. في هذه الحالة، لن يُخصص \fBNID\fP للمجموعة. عند ضبط هذه المجموعات، ينبغي للتطبيقات استخدام صيغة "القائمة" لهذه الدوال (أي \fBSSL_CTX_set1_groups_list()\fP و \fBSSL_set1_groups_list()\fP). .PP \&\fBSSL_CTX_set1_groups()\fP تضبط المجموعات المدعومة لـ \fBctx\fP إلى \fBglistlen\fP مجموعة في المصفوفة \fBglist\fP. تتكون المصفوفة من جميع \fBNIDs\fP للمجموعات المدعومة. المجموعات المدعومة لـ \fBTLSv1.3\fP تشمل: \&\fBNID_X9_62_prime256v1\fP, \&\fBNID_secp384r1\fP, \&\fBNID_secp521r1\fP, \&\fBNID_X25519\fP, \&\fBNID_X448\fP, \&\fBNID_brainpoolP256r1tls13\fP, \&\fBNID_brainpoolP384r1tls13\fP, \&\fBNID_brainpoolP512r1tls13\fP, \&\fBNID_ffdhe2048\fP, \&\fBNID_ffdhe3072\fP, \&\fBNID_ffdhe4096\fP, \&\fBNID_ffdhe6144\fP, و \&\fBNID_ffdhe8192\fP. ستستخدم OpenSSL هذه المصفوفة بطرق مختلفة بناءً على إصدار TLS، وما إذا كانت المجموعات مستخدمة في عميل أو خادم. .PP لعميل TLS، تُستخدم المجموعات مباشرة في امتداد المجموعات المدعومة. ترتيب تفضيل الامتداد، الذي يُقيَّم بواسطة الخادم، يُحدد بترتيب العناصر في المصفوفة. .PP لخادم TLS 1.2، تحدد المجموعات المجموعة المختارة. إذا ضُبط \&\fBSSL_OP_SERVER_PREFERENCE\fP، يحدد ترتيب العناصر في المصفوفة المجموعة المختارة. وإلا، يُتجاهل الترتيب ويحدد ترتيب العميل الاختيار. .PP لخادم TLS 1.3، تحدد المجموعات المجموعة المختارة، لكن الاختيار أكثر تعقيدًا. يرسل عميل TLS 1.3 قائمة مجموعات ومشاركات مفاتيح متوقعة لمجموعة فرعية من المجموعات. خادم يختار مجموعة خارج المجموعة الفرعية المتوقعة للعميل يتكبد رحلة ذهاب وإياب إضافية. لكن، في بعض الحالات، قد لا تُتوقع المجموعة الأكثر تفضيلاً. .PP عند تحديد المجموعات عبر \fBSSL_CTX_set1_groups()\fP كقائمة من قيم \fBNID\fP، تعتبر OpenSSL جميع المجموعات المدعومة في \fIclist\fP قابلة للمقارنة من حيث الأمان وتُعطي أولوية لتجنب الرحلات ذهابًا وإيابًا فوق ترتيب تفضيل العميل أو الخادم. إذا استخدم تطبيق موفرًا خارجيًا لتوسيع OpenSSL بـ، مثلاً، خوارزمية ما بعد الكم، قد يسمح هذا السلوك لمهاجم شبكة بخفض الاتصالات إلى خوارزمية أضعف. لذلك يُوصى باستخدام \fBSSL_CTX_set1_groups_list()\fP بدلاً من ذلك، مما يجعل من الممكن تحديد مجموعات tuples كما هو موصوف أدناه. .PP \&\fBSSL_CTX_set1_groups_list()\fP تضبط المجموعات المدعومة لـ \fBctx\fP إلى السلسلة \fIlist\fP. على عكس \fBSSL_CTX_set1_groups()\fP، تُستخدم أسماء المجموعات بدلاً من \fBNIDs\fP الخاصة بها. .PP تسرد الأوامر أدناه المجموعات المتاحة لـ TLS 1.2 و TLS 1.3، على التوالي: .PP .Vb 2 \& $ openssl list \-tls1_2 \-tls\-groups \& $ openssl list \-tls1_3 \-tls\-groups .Ve .PP يمكن أن تكون كل مجموعة إما اسم \fBNIST\fP (مثل \fBP\-256\fP)، أو اسم آخر شائع الاستخدام حيثما ينطبق (مثل \fBX25519\fP، \fBffdhe2048\fP) أو اسم OID لـ OpenSSL (مثل \fBprime256v1\fP). أسماء المجموعات غير حساسة لحالة الأحرف في OpenSSL 3.5 والإصدارات الأحدث. أسماء المجموعات المفضلة هي تلك المعرفة بواسطة IANA . .PP يمكن استخدام \fIlist\fP لتعريف عدة مجموعات tuples من مستويات أمان قابلة للمقارنة، ويمكنها تحديد أي مشاركات مفاتيح متوقعة يجب أن يرسلها العميل. تُستخدم مجموعات tuples بواسطة خوادم TLS في OpenSSL لتقرير ما إذا كان طلب مفتاح أقوى من تلك المتوقعة عبر إرسال طلب إعادة محاولة الترحيب (\fBHRR\fP) حتى لو كانت بعض المجموعات المتوقعة مدعومة. تتجاهل عملاء OpenSSL حدود tuples، وتنتبه فقط إلى الترتيب العام لعناصر \fIlist\fP وأي المجموعات تُختار كمشاركات مفاتيح متوقعة كما هو موصوف أدناه. .PP يمكن تجاهل عناصر القائمة المحددة اختياريًا إذا لم تُنفذ (إدراج مجموعات غير معروفة يؤدي بخلاف ذلك إلى خطأ). من الممكن أيضًا تحديد مجموعة المجموعات المبدئية المضمنة، وإزالة مجموعة صراحةً من تلك القائمة. .PP في أبسط صيغة تقليدية، السلسلة \fIlist\fP هي مجرد قائمة بأسماء المجموعات مفصولة بنقطتين، على سبيل المثال "P\-521:P\-384:P\-256:X25519:ffdhe2048". المجموعة الأولى المدرجة ستُستخدم في هذه الحالة كمشاركة المفتاح المتوقعة الوحيدة \&\fBkey_share\fP التي يرسلها عميل في TLSv1.3 \fBClientHello\fP. يجب أن تكون القائمة بترتيب التفضيل مع المجموعة الأكثر تفضيلاً أولاً. .PP صيغة أكثر تعبيرًا تدعم تعريف مجموعات tuples من أمان قابل للمقارنة بفصلها عن بعضها بأحرف \f(CW\*(C`/\*(C'\fP. .PP يمكن تحديد مشاركات المفاتيح المتوقعة التي سترسلها العملاء صراحةً بإضافة بادئة \f(CW\*(C`*\*(C'\fP إلى اسم المجموعة المرتبط. تُتجاهل هذه البادئات \f(CW\*(C`*\*(C'\fP بواسطة الخوادم. .PP إذا سُبِق اسم مجموعة بالحرف \f(CW\*(C`?\*(C'\fP، فسيُتجاهل إذا كان التنفيذ مفقودًا. وإلا، فإن سرد اسم مجموعة غير معروف سيؤدي إلى فشل تحليل \&\fIالقائمة\fP. لاحظ أن معرفة المجموعة أو عدمها قد تعتمد على إصدار OpenSSL، وكيفية تجميع OpenSSL و/أو أي المزودين تم تحميلهم. تأكد من صحة تهجئة اسم المجموعة، وعند الشك، سَبِّقها بـ \f(CW\*(C`?\*(C'\fP للتعامل مع التهيئات التي قد تكون فيها غير معروفة على أي حال. .PP إذا سُبِق اسم مجموعة بالحرف \f(CW\*(C`\-\*(C'\fP، فسيُحذف من قائمة المجموعات المحددة حتى تلك النقطة. يمكن إضافته مرة أخرى إذا حُدد لاحقًا. يُتجاهل حذف المجموعات التي لم تُدرج سابقًا في القائمة بصمت. .PP يمكن استخدام اسم المجموعة الزائف \f(CW\*(C`DEFAULT\*(C'\fP لاختيار القائمة المبدئية المضمنة في OpenSSL للمجموعات. إضافة مجموعة أو أكثر قبل \f(CW\*(C`DEFAULT\*(C'\fP باستخدام فواصل \f(CW\*(C`:\*(C'\fP فقط تُضيف تلك المجموعات قبل أول صف في القائمة المبدئية المضمنة. يمكن إضافة صفوف إضافية قبلها باستخدام الفاصل \f(CW\*(C`/\*(C'\fP. إلحاق مجموعة من المجموعات بـ \f(CW\*(C`DEFAULT\*(C'\fP باستخدام فواصل \f(CW\*(C`:\*(C'\fP فقط يُلحق تلك المجموعات بآخر صف في القائمة المبدئية المضمنة. يمكن إلحاق صفوف إضافية باستخدام الفاصل \f(CW\*(C`/\*(C'\fP. .PP تحدد القائمة \fBDEFAULT\fP \fBX25519MLKEM768\fP كأحد مفاتيح المشاركة المتوقعة. في حالات نادرة، قد يؤدي هذا إلى فشل أو انتهاء مهلة لأن رسالة TLS Client Hello الأكبر الناتجة قد لا تتناسب مع مقطع TCP واحد، وقد يعطل برنامج جدار الحماية مصافحة TLS بشكل خاطئ. إذا كانت هذه مشكلة أو مصدر قلق، فإن إضافة \f(CW\*(C`?X25519MLKEM768:\*(C'\fP بدون بادئة \f(CW\*(C`*\*(C'\fP يؤدي إلى تجاهل حدوثها في القائمة المبدئية كمكرر، ومع ذلك أيضًا تجاهل توقع مفتاح المشاركة. سيتم بعد ذلك اختيار المجموعة فقط بواسطة الخوادم التي تتوقعها تحديدًا، بعد طلب إعادة المحاولة (HRR). الخوادم التي تفضل \fBX25519MLKEM768\fP تحديدًا، أقل عرضة للوجود خلف جدران حماية إشكالية. .PP السلسلة \fIlist\fP التالية على سبيل المثال تعرّف ثلاث مجموعات عند استخدامها من جانب الخادم، وتُحفّز توليد ثلاث مفاتيح مشاركة عند استخدامها من جانب العميل: P\-521:*P\-256/*P\-384/*X25519:P\-384:ffdhe2048. .PP بالنسبة لعميل TLS 1.3، تُضاف جميع المجموعات في السلسلة \fIlist\fP إلى امتداد المجموعات المدعومة لـ \f(CW\*(C`ClientHello\*(C'\fP، بالترتيب الذي تُدرج به، مع تفسير فواصل المجموعات كفواصل مجموعات. يتم تحديد ترتيب تفضيل الامتداد، الذي سيُقيّمه الخادم، بترتيب العناصر في المصفوفة، انظر أدناه. .PP إذا سُبق اسم مجموعة بـ \f(CW\*(C`*\*(C'\fP، فسيُرسل مفتاح مشاركة لهذه المجموعة. عند تسبيق \f(CW\*(C`DEFAULT\*(C'\fP بـ \f(CW\*(C`*\*(C'\fP، سيُرسل مفتاح مشاركة للمجموعة الأولى من القائمة المبدئية المضمنة في OpenSSL للمجموعات. إذا لم يُستخدم \f(CW\*(C`*\*(C'\fP في أي مكان في القائمة، يُرسل مفتاح مشاركة واحد للمجموعة الصالحة في أقصى اليسار. يُدعم حد أقصى يبلغ 4 مفاتيح مشاركة. مثال: "P\-521:*P\-256/*P\-384" سيضيف P\-521 وP\-256 وP\-384 إلى امتداد المجموعات المدعومة في \f(CW\*(C`ClientHello\*(C'\fP وسيرسل مفاتيح مشاركة لـ P\-256 وP\-384. .PP بالنسبة لخادم TLS 1.3، ستُستخدم المجموعات في السلسلة \fIlist\fP لتحديد المجموعة المستخدمة لاتفاق المفتاح. يُحدد ترتيب تفضيل مجموعات المجموعات بترتيب المجموعات في المصفوفة، ويُحدد ترتيب تفضيل المجموعات داخل مجموعة المجموعات بترتيب المجموعات في المجموعة. يمكن فرض تفضيل الخادم بتعيين \fBSSL_OP_SERVER_PREFERENCE\fP باستخدام \&\fBSSL_set_options\fP (مبدئي: تفضيل العميل). .PP سيختار الخادم المجموعة المستخدمة لاتفاق المفتاح باستخدام خوارزمية الشبه\-كود التالية: .PP .Vb 12 \& لكل مجموعة بيانات \& إذا كانت تفضيلات العميل (= افتراضية) \& لكل مجموعة مشاركة مفاتيح العميل \& إذا كانت مجموعة مشاركة المفاتيح الحالية جزءًا من مجموعة البيانات الحالية: SH، فأرجع نجاح العملية \& لكل مجموعة بيانات مدعومة من العميل \& إذا كانت المجموعة المدعومة الحالية جزءًا من مجموعة البيانات الحالية: HRR، فأرجع نجاح العملية \& وإلا (= تفضيلات الخادم = مع تعيين خيار SSL_OP_SERVER_PREFERENCE) \& لكل مجموعة في الصف الحالي \& إذا كانت المجموعة الحالية جزءًا من مجموعات مشاركة مفاتيح العميل: SH، فأرجع نجاح \& لكل مجموعة في الصف الحالي \& إذا كانت المجموعة الحالية جزءًا من المجموعات المدعومة من العميل: HRR، فأرجع نجاح \& أرجع فشل \& \& مع : SH: رسالة ترحيب من الخادم مع المجموعة الحالية \& HRR: طلب إعادة محاولة من الخادم مع المجموعة الحالية .Ve .PP وبالتالي، إذا دعم العميل مجموعة في مجموعة مجموعات الخادم، لكنه لم يرسل مفتاح مشاركة لهذه المجموعة، يُحفّز طلب إعادة محاولة (HRR)، يطلب من العميل إرسال رسالة Hello جديدة بمفتاح مشاركة أكثر تفضيلاً. انظر الأمثلة أدناه. .PP يمكن اختياريًا تسبيق اسم مجموعة بأي من \f(CW\*(C`*\*(C'\fP أو \f(CW\*(C`?\*(C'\fP أو \f(CW\*(C`\-\*(C'\fP، بأي ترتيب، مع استثناء أن \f(CW\*(C`*\*(C'\fP فقط مسموح له بتسبيق \f(CW\*(C`DEFAULT\*(C'\fP. أحرف الفصل \&\f(CW\*(C`:\*(C'\fP و \f(CW\*(C`/\*(C'\fP مسموح بها فقط داخل \fIlist\fP وليس في البداية أو النهاية. .PP \&\fBSSL_set1_groups()\fP و \fBSSL_set1_groups_list()\fP متشابهتان باستثناء أنهما تعيّنان المجموعات المدعومة لهيكل SSL \fBssl\fP. .PP \&\fBSSL_get1_groups()\fP تُرجع مجموعة المجموعات المدعومة التي أرسلها عميل في امتداد المجموعات المدعومة. تُرجع العدد الإجمالي للمجموعات المدعومة. يمكن أن يكون المعامل \fBgroups\fP هو \fBNULL\fP لإرجاع عدد المجموعات ببساطة لأغراض تخصيص الذاكرة. مصفوفة \&\fBgroups\fP تكون على شكل مجموعة من NIDs المجموعات بترتيب التفضيل. يمكن أن تُرجع صفرًا إذا لم يرسل العميل امتداد مجموعات مدعومة. إذا كان NID مجموعة مدعومة غير معروف، فتُعيّن القيمة إلى OR المنطقي لـ TLSEXT_nid_unknown (0x1000000) ومعرف المجموعة. .PP \&\fBSSL_get0_iana_groups()\fP تسترجع قائمة المجموعات التي أرسلها العميل في امتداد supported_groups. مصفوفة البايت \fB*out\fP تُملأ بتمثيل ترتيب البايت للمضيف لمعرفات المجموعة uint16_t، كما عيّنتها IANA. تُرجع قائمة المجموعات بنفس الترتيب الذي استُلمت به في ClientHello. قيمة الإرجاع هي عدد المجموعات، وليس عدد البايتات المكتوبة. .PP \&\fBSSL_get_shared_group()\fP تُرجع NID للمجموعة المشتركة \fBn\fP لـ SSL \fBssl\fP من جانب الخادم. إذا كان \fBn\fP هو \-1، فسيُرجَع العدد الإجمالي للمجموعات المشتركة، والذي قد يكون صفرًا. بخلاف أغراض التشخيص، ستكون معظم التطبيقات مهتمة فقط بأول مجموعة مشتركة، لذا يُعيَّن \fBn\fP عادةً إلى صفر. إذا كانت القيمة \fBn\fP خارج النطاق، فتُرجَع NID_undef. إذا كان NID للمجموعة المشتركة غير معروف، فتُعيّن القيمة إلى OR المنطقي لـ TLSEXT_nid_unknown (0x1000000) ومعرف المجموعة. .PP \&\fBSSL_get_negotiated_group()\fP تُرجع NID للمجموعة المتفاوض عليها المستخدمة في عملية تبادل مفتاح المصافحة. بالنسبة لاتصالات TLSv1.3، يعكس هذا عادةً حالة الاتصال الحالي، على الرغم من أنه في حالة استئناف PSK فقط، ستكون القيمة المُرجَعة من اتصال سابق. بالنسبة لإصدارات TLS الأقدم، عندما يُستأنَف جلسة، يعكس دائمًا المجموعة المستخدمة لتبادل المفتاح أثناء المصافحة الأولية (وإلا فهي من الاتصال الحالي غير المستأنَف). يمكن استدعاء هذا بواسطة العميل أو الخادم. إذا كان NID للمجموعة المشتركة غير معروف، فتُعيّن القيمة إلى OR المنطقي لـ TLSEXT_nid_unknown (0x1000000) ومعرف المجموعة. انظر أيضًا \&\fBSSL_get0_group_name\fP\|(3) الذي يُرجع اسم المجموعة المتفاوض عليها مباشرةً ويُفضَّل عمومًا على \fBSSL_get_negotiated_group()\fP. .PP \&\fBSSL_CTX_get0_implemented_groups()\fP تملأ رصة بأسماء مجموعات TLS المتوافقة مع إصدار TLS للوسيط \fBctx\fP. الأسماء المُعادة هي مراجع لثوابت داخلية ويجب عدم تعديلها أو تحريرها. عندما يكون \fBall\fP غير صفري، تتضمن القائمة المُعادة ليس فقط أسماء IANA المفضلة للمجموعات، بل أيضًا أي أسماء مستعارة مرتبطة. إذا كان SSL_CTX مرن الإصدار، فستكون المجموعات تلك المتوافقة مع أي إصدارات بروتوكول دنيا وقصوى مُهيأة. يجب تخصيص رصة \fBnames\fP بواسطة المُستدعي وتكون فارغة، وتُضاف أسماء المجموعات المطابقة إلى الرصة المُقدمة. خيارات \fB\-tls\-groups\fP و \fB\-all\-tls\-groups\fP لأمر openssl list تُخرج هذه القوائم إما لـ TLS 1.2 أو TLS 1.3 (بشكل مبدئي). .PP جميع هذه الدوال مُنفذة ككليّات. .PP دوال المنحنيات هي مرادفات لدوال المجموعات المسماة بالمثل ومتطابقة في كل جانب. إنها موجودة لأنه، قبل TLS1.3، كان هناك فقط مفهوم المنحنيات المدعومة. في TLS1.3، أُعيدت تسمية هذا إلى المجموعات المدعومة، ووُسعت لتشمل مجموعات Diffie Hellman. يجب استخدام دوال المجموعات كأفضلية. .SH ملاحظات .IX Header ملاحظات إذا رغب تطبيق في استخدام العديد من هذه الدوال لأغراض التهيئة إما في سطر أوامر أو في ملف، فيجب عليه النظر في استخدام واجهة SSL_CONF بدلاً من تحليل الخيارات يدويًا. .SH "القيم المُرجعة" .IX Header "القيم المُرجعة" \&\fBSSL_CTX_set1_groups()\fP، \fBSSL_CTX_set1_groups_list()\fP، \fBSSL_set1_groups()\fP، \&\fBSSL_set1_groups_list()\fP، و \fBSSL_CTX_get0_implemented_groups()\fP تُعيد 1 للنجاح و 0 للفشل. .PP \&\fBSSL_get1_groups()\fP تُعيد عدد المجموعات، والذي قد يكون صفرًا. .PP \&\fBSSL_get0_iana_groups()\fP تُرجع عدد المجموعات (uint16_t)، والذي قد يكون صفرًا. .PP \&\fBSSL_get_shared_group()\fP تُرجع NID للمجموعة المشتركة \fBn\fP أو NID_undef إذا لم تكن هناك مجموعة مشتركة \fBn\fP؛ أو العدد الإجمالي للمجموعات المشتركة إذا كان \fBn\fP يساوي \-1. .PP عند استدعائها على عميل \fBssl\fP، لا معنى لـ \fBSSL_get_shared_group()\fP وتُرجع \-1. .PP \&\fBSSL_get_negotiated_group()\fP تُرجع NID للمجموعة المتفاوض عليها المستخدمة لتبادل المفاتيح، أو NID_undef إذا لم تكن هناك مجموعة متفاوض عليها. .SH أمثلة .IX Header أمثلة افترض أن \fIlist\fP الخادم هو "P\-521:P\-256/P\-384/X25519:ffdhe2048" و\&\fIlist\fP العميل هو "P\-521:*P\-384" عند الاتصال بمثل هذا الخادم، مما يعني أن العميل يدعم \f(CW\*(C`P\-521\*(C'\fP لكنه لا يُرسل مشاركة مفتاح لهذه المجموعة إلى الخادم، ويدعم العميل \f(CW\*(C`P\-384\*(C'\fP بما في ذلك مشاركة مفتاح لهذه المجموعة. مع تفضيل كل من الخادم والعميل، سيتم تشغيل HRR لـ \f(CW\*(C`P\-521\*(C'\fP على الرغم من توفر مشاركة مفتاح لـ P\-384، والتي تتداخل مع مجموعة ثنائية ذات أولوية أقل من جانب الخادم. .PP كمثال منفصل، اعتبر \fIlist\fP خادم "A:B/C:D/E:F". مُدرجة بترتيب من الأعلى تفضيلًا إلى الأقل، يتم إنشاء 3 مجموعات ثنائية: "A:B" و"C:D" و"E:F". فيما يلي بعض الأمثلة على \fIlist\fP عميل حيث لن يُغير تعيين تفضيل الخادم/العميل النتيجة: .PP \&\- "A:D:*F": كلاهما يُفضل "A"، لكن الخادم لم يتلقَ مشاركة مفتاح للمجموعة الثنائية الأكثر تفضيلًا التي توجد فيها مجموعة واحدة على الأقل مدعومة من كليهما. لذلك، يتم تشغيل HRR لـ "A". .PP \&\- "B:*C": كلاهما يُفضل "B" من المجموعة الثنائية الأولى "A:B"، لذلك يتم تشغيل HRR لـ "B". .PP \&\- "C:*F": كلاهما يُفضل "C" من المجموعة الثنائية الثانية "C:D"، لذلك يتم تشغيل HRR لـ "C". .PP \&\- "C:*D": على الرغم من أن كليهما يُفضل "C" على "D"، سيقبل الخادم مشاركة المفتاح لـ "D". داخل مجموعة ثنائية، تُغلب مشاركات المفاتيح الموجودة ترتيب التفضيل. .PP \&\- "*C:*D": يقبل الخادم مشاركة المفتاح "C". .PP \&\- "F": على الرغم من أنها غير مسبوقة بـ "*"، سيرسل العميل مشاركة مفتاح لـ "F". ثم سيقبل الخادم مشاركة المفتاح لـ "F". .PP \&\- "*E:C:A": يُفضل الخادم "A" من المجموعة الثنائية "A:B"، لذلك يتم تشغيل HRR لـ "A". .PP \&\- "*E:B:*A": يستخدم الخادم مشاركة المفتاح لـ "A". .PP فيما يلي بعض الأمثلة حيث سيُغير تعيين تفضيل الخادم/العميل النتيجة: .PP \&\- "*D:*C" \- تفضيل العميل: يستخدم الخادم مشاركة المفاتيح لـ "D". \- تفضيل الخادم: يستخدم الخادم مشاركة المفاتيح لـ "C". .PP \&\- "B:A:*C" \- تفضيل العميل: يُفعّل الخادم طلب إعادة توجيه عالي المخاطر (HRR) للخيار "B". بالنسبة للخادم، يُعتبر الخياران "A" و"B" متقاربين في مستوى الأمان. ولكن لأن العميل يُفضّل الخيار "B"، سيُفعّل الخادم طلب إعادة توجيه عالي المخاطر (HRR) للخيار "B". \- تفضيل الخادم: يُفعّل الخادم طلب إعادة توجيه عالي المخاطر (HRR) للخيار "A". .SH "انظر أيضًا" .IX Header "انظر أيضًا" \&\fBssl\fP\|(7)، \&\fBSSL_CTX_add_extra_chain_cert\fP\|(3)، \&\fBSSL_get0_group_name\fP\|(3) .SH التاريخ .IX Header التاريخ أُضيفت دوال المنحنيات في OpenSSL 1.0.2. أُضيفت دوال المجموعات المكافئة في OpenSSL 1.1.1. أُضيفت الدالة \fBSSL_get_negotiated_group()\fP في OpenSSL 3.0.0. .PP أُضيف دعم تجاهل المجموعات غير المعروفة في \fBSSL_CTX_set1_groups_list()\fP و\&\fBSSL_set1_groups_list()\fP في OpenSSL 3.3. .PP دعم \fBML\-KEM\fP أُضيف في OpenSSL 3.5. .PP OpenSSL 3.5 يُقدّم أيضًا دعمًا لثلاث مجموعات \fIهجينة\fP لتبادل المفاتيح ECDH PQ في TLS: \fBX25519MLKEM768\fP و \fBSecP256r1MLKEM768\fP و \&\fBSecP384r1MLKEM1024\fP. تُوفّر أداءً لوحدة المعالجة المركزية (CPU) مشابهًا لمجموعة ECDH المرتبطة، وإن كان ذلك على حساب رسائل تبادل مفاتيح أكبر بكثير. المجموعة الثالثة، \fBSecP384r1MLKEM1024\fP، أكثر استهلاكًا لوحدة المعالجة المركزية بشكل كبير، ويرجع ذلك إلى حد كبير إلى التكلفة العالية لوحدة المعالجة المركزية لـ ECDH للمجموعة الأساسية \fBP\-384\fP. أيضًا، رسائل تبادل المفاتيح الخاصة بها والتي تقترب من 1700 بايت أكبر من الـ 1200 بايت تقريبًا للمجموعتين الأوليين. .PP بدءاً من OpenSSL 3.5، لا تتأثر أسماء مجموعات تبادل المفاتيح بحالة الحروف. .PP \&\fBSSL_CTX_get0_implemented_groups\fP نُفّذ لأول مرة في OpenSSL 3.5. .PP الإصدارات السابقة من هذا المستند وصفت القائمة كترتيب تفضيل. ومع ذلك، سلوك OpenSSL\*(Aqs كخادم TLS 1.3 هو اعتبار \fIجميع\fP المجموعات المدعومة متكافئة في الأمان. .SH "حقوق النسخ" .IX Header "حقوق النسخ" حقوق النشر 2013\-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 .