X509_NAME_GET_INDEX_BY_NID(3ssl)

الاسم
X509_NAME_get_index_by_NID, X509_NAME_get_index_by_OBJ, X509_NAME_get_entry, X509_NAME_entry_count, X509_NAME_get_text_by_NID, X509_NAME_get_text_by_OBJ - دوال بحث وتعداد X509_NAME

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

 int X509_NAME_get_index_by_NID(const X509_NAME *name, int nid, int lastpos);
 int X509_NAME_get_index_by_OBJ(const X509_NAME *name,
                                const ASN1_OBJECT *obj, int lastpos);

 int X509_NAME_entry_count(const X509_NAME *name);
 X509_NAME_ENTRY *X509_NAME_get_entry(const X509_NAME *name, int loc);

 int X509_NAME_get_text_by_NID(const X509_NAME *name, int nid,
                               char *buf, int len);
 int X509_NAME_get_text_by_OBJ(const X509_NAME *name, const ASN1_OBJECT *obj,
                               char *buf, int len);

الوصف
تسمح هذه الدوال بفحص بنية X509_NAME. بنية X509_NAME هي نفس النوع Name المُعرَّف في RFC 5280 (وفي أماكن أخرى) والمُستخدم مثلاً في أسماء موضوع الشهادة والمُصدِر.

تسترجع X509_NAME_get_index_by_NID() و X509_NAME_get_index_by_OBJ() الفهرس التالي المُطابق لـ nid أو obj بعد lastpos. يُضبط lastpos مبدئياً على -1. إذا لم توجد مدخلات أخرى، يُعاد -1. إذا كان nid غير صالح (لا يُطابق OID صالح)، يُعاد -2.

تُعيد X509_NAME_entry_count() العدد الإجمالي للمدخلات في name.

تسترجع X509_NAME_get_entry() X509_NAME_ENTRY من name المُطابق للفهرس loc. تتراوح القيم المقبولة لـ loc من 0 إلى (X509_NAME_entry_count(name) - 1). القيمة المُعادة هي مؤشر داخلي لا يجب تحريره.

تسترجع X509_NAME_get_text_by_NID() و X509_NAME_get_text_by_OBJ() "النص" من أول مدخل في name يُطابق nid أو obj، إذا لم يوجد مثل هذا المدخل يُعاد -1. سيُكتب على الأكثر len بايت وسيُنهى النص المكتوب في buf بقيمة خالية. يُعاد طول سلسلة المحارف الناتجة المكتوبة باستثناء القيمة الخالية الختامية. إذا كان buf هو <NULL>، تُعاد المساحة المطلوبة في buf (باستثناء القيمة الخالية النهائية).

ملاحظات
يجب اعتبار X509_NAME_get_text_by_NID() و X509_NAME_get_text_by_OBJ() مهملة لأن لهما قيوداً متنوعة تجعلهما ذوي فائدة ضئيلة عملياً. يمكنهما فقط إيجاد أول مدخل مُطابق وسينسخان محتويات الحقل حرفياً: قد يكون هذا مُربكاً جداً إذا كان الهدف من نوع سلسلة محارف متعددة الأحرف مثل BMPString أو UTF8String.

لحل أكثر عمومية، يجب استخدام X509_NAME_get_index_by_NID() أو X509_NAME_get_index_by_OBJ() متبوعاً بـ X509_NAME_get_entry() على أي فهارس مُطابقة ثم دوال الأداة المساعدة المختلفة X509_NAME_ENTRY على النتيجة.

يمكن إيجاد قائمة بجميع NID_* و OBJ_* codes ذات الصلة في ملفات رؤوس الكود المصدري <openssl/obj_mac.h> و/أو <openssl/objects.h>.

يجب على التطبيقات التي قد تُمرر NIDs غير صالحة إلى X509_NAME_get_index_by_NID() التحقق من قيمة الإعادة -2. بدلاً من ذلك، يمكن تحديد صلاحية NID أولاً بالتحقق من أن OBJ_nid2obj(nid) ليس NULL.

القيم المُرجعة
تُعيد X509_NAME_get_index_by_NID() و X509_NAME_get_index_by_OBJ() فهرس المدخل المُطابق التالي أو -1 إذا لم يُوجد. يمكن لـ X509_NAME_get_index_by_NID() أيضاً إعادة -2 إذا كان NID المُقدم غير صالح.

تُعيد X509_NAME_entry_count() العدد الإجمالي للمدخلات، و0 عند الفشل.

تُعيد X509_NAME_get_entry() مؤشر X509_NAME إلى المدخل المطلوب أو NULL إذا كان الفهرس غير صالح.

أمثلة
معالجة جميع المدخلات:

 int i;
 X509_NAME_ENTRY *e;

 for (i = 0; i < X509_NAME_entry_count(nm); i++) {
     e = X509_NAME_get_entry(nm, i);
     /* Do something with e */
 }

معالجة جميع مدخلات commonName:

 int lastpos = -1;
 X509_NAME_ENTRY *e;

 for (;;) {
     lastpos = X509_NAME_get_index_by_NID(nm, NID_commonName, lastpos);
     if (lastpos == -1)
         break;
     e = X509_NAME_get_entry(nm, lastpos);
     /* Do something with e */
 }

انظر أيضًا
ERR_get_error(3)، d2i_X509_NAME(3)

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