SSL_GET_CIPHERS(3SSL)

الاسم
SSL_get1_supported_ciphers, SSL_get_client_ciphers, SSL_get_ciphers, SSL_CTX_get_ciphers, SSL_bytes_to_cipher_list, SSL_get_cipher_list, SSL_get_shared_ciphers - الحصول على قائمة SSL_CIPHERs المتاحة

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

 STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *ssl);
 STACK_OF(SSL_CIPHER) *SSL_CTX_get_ciphers(const SSL_CTX *ctx);
 STACK_OF(SSL_CIPHER) *SSL_get1_supported_ciphers(SSL *s);
 STACK_OF(SSL_CIPHER) *SSL_get_client_ciphers(const SSL *ssl);
 int SSL_bytes_to_cipher_list(SSL *s, const unsigned char *bytes, size_t len,
                              int isv2format, STACK_OF(SSL_CIPHER) **sk,
                              STACK_OF(SSL_CIPHER) **scsvs);
 const char *SSL_get_cipher_list(const SSL *ssl, int priority);
 char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size);

الوصف
SSL_get_ciphers() تُرجع كومة SSL_CIPHERs المتاحة لـ ssl، مُرتبة حسب التفضيل. إذا كان ssl فارغًا أو لم تتوفر أي مُعمِّيات، فتُرجع NULL.

SSL_CTX_get_ciphers() تُرجع كومة SSL_CIPHERs المتاحة لـ ctx.

SSL_get1_supported_ciphers() تُرجع كومة SSL_CIPHERs المُفعَّلة لـ ssl كما ستُرسل في ClientHello (أي مُرتبة حسب التفضيل). تعتمد القائمة على إعدادات مثل قائمة المُعمِّيات، وإصدارات البروتوكول المدعومة، ومستوى الأمان، وخوارزميات التوقيع المُفعَّلة. تُفعَّل مُعمِّيات SRP و PSK فقط إذا طُبقت الاستدعاءات أو الإعدادات المناسبة. قد تختلف قائمة المُعمِّيات التي ستُرسل في ClientHello عن قائمة المُعمِّيات المقبولة عند العمل كخادم. على سبيل المثال، قد يستخدم الخادم مُعمِّيات إضافية إذا وُجدت فجوة في قائمة البروتوكولات المدعومة، وقد لا يستخدم الخادم بعض المُعمِّيات إذا لم يُهيأ شهادة مناسبة. إذا كان ssl فارغًا أو لم تتوفر أي مُعمِّيات، فتُرجع NULL.

SSL_get_client_ciphers() تُرجع كومة SSL_CIPHERs المتاحة المطابقة للقائمة المُستلمة من العميل على ssl. إذا كان ssl فارغًا، أو لم تتوفر أي مُعمِّيات، أو لم يعمل ssl في وضع الخادم، فتُرجع NULL.

SSL_bytes_to_cipher_list() تُعالج len ثمانيات المُقدَّمة في bytes كمواصفات حزمة مُعمِّيات بروتوكول سلكي (بتنسيق SSLv2 السلكي بثلاث ثمانيات لكل مُعمٍّ إذا كان isv2format غير صفري؛ وإلا بتنسيق SSLv3/TLS السلكي بثمانيتين)، وتُحلِّل حزم المُعمِّيات المدعومة من المكتبة إلى كومة كائنات SSL_CIPHER المُرجَعة sk وقيم إشارات حزمة المُعمِّيات scsvs. تُتجاهل حزم المُعمِّيات غير المدعومة. تُرجع 1 عند النجاح و0 عند الفشل.

SSL_get_cipher_list() تُرجع مؤشرًا لاسم SSL_CIPHER المُدرَج لـ ssl مع priority. إذا كان ssl فارغًا، أو لم تتوفر أي مُعمِّيات، أو توفرت مُعمِّيات أقل من priority، فتُرجع NULL.

SSL_get_shared_ciphers() تُنشئ قائمة بأسماء SSL_CIPHER مفصولة بنقطتين ومنتهية بـ NUL والمتاحة في كل من العميل والخادم. buf هو المخزن الذي يجب ملؤه بقائمة الأسماء و size هو حجم ذلك المخزن. يُرجع مؤشر إلى buf عند النجاح أو NULL عند الخطأ. إذا لم يكن المخزن المُقدَّم كبيرًا بما يكفي لاحتواء القائمة الكاملة للأسماء، فتُرجع قائمة مبتورة من الأسماء. لاحظ أن مجرد توفر حزمة مُعمِّيات (أي أنها مُهيأة في قائمة المُعمِّيات) ومشاركتها بين العميل والخادم لا يعني أنها مُفعَّلة (انظر وصف SSL_get1_supported_ciphers() أعلاه). تُرجع هذه الدالة حزم المُعمِّيات المشتركة المتاحة سواء كانت مُفعَّلة أم لا. هذه دالة خاصة بالخادم فقط ويجب استدعاؤها فقط بعد اكتمال المصافحة الأولية. تُعيِّن الدالة سلسلة فارغة عندما يفشل ssl في المصافحة بسبب عدم وجود مُعمِّيات مشتركة.

ملاحظات
يمكن الحصول على تفاصيل المُعمِّيات التي حصلت عليها SSL_get_ciphers() و SSL_CTX_get_ciphers() SSL_get1_supported_ciphers() و SSL_get_client_ciphers() باستخدام عائلة دوال SSL_CIPHER_get_name(3).

استدعِ SSL_get_cipher_list() مع priority بدءًا من 0 للحصول على القائمة المُرتَّبة للمُعمِّيات المتاحة، حتى تُرجع NULL.

ملاحظة: SSL_get_ciphers() و SSL_CTX_get_ciphers() و SSL_get_client_ciphers() تُرجع مؤشرًا لكومة مُعمِّيات داخلية، والتي ستُحرر لاحقًا عند تحرير كائن SSL أو SSL_SESSION. لذلك، يجب ألا يحرر الكود المستدعي القيمة المُرجعة نفسها.

يجب تحرير الكومة المُرجعة بواسطة SSL_get1_supported_ciphers() باستخدام sk_SSL_CIPHER_free().

يجب تحرير الكومات المُرجعة بواسطة SSL_bytes_to_cipher_list() باستخدام sk_SSL_CIPHER_free().

القيم المُرجعة
انظر الوصف (DESCRIPTION)

انظر أيضًا
ssl(7), SSL_CTX_set_cipher_list(3), SSL_CIPHER_get_name(3)

حقوق النسخ
حقوق النشر 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.