X509_NAME_ADD_ENTRY_BY_TXT(3SSL)

الاسم
X509_NAME_add_entry_by_txt, X509_NAME_add_entry_by_OBJ, X509_NAME_add_entry_by_NID, X509_NAME_add_entry, X509_NAME_delete_entry - دوال تعديل X509_NAME

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

 int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type,
                                const unsigned char *bytes, int len, int loc, int set);

 int X509_NAME_add_entry_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, int type,
                                const unsigned char *bytes, int len, int loc, int set);

 int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type,
                                const unsigned char *bytes, int len, int loc, int set);

 int X509_NAME_add_entry(X509_NAME *name, const X509_NAME_ENTRY *ne, int loc, int set);

 X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc);

الوصف
تُضيف الدالتان X509_NAME_add_entry_by_txt() وX509_NAME_add_entry_by_OBJ() وX509_NAME_add_entry_by_NID() حقلاً يُعرَّف اسمه بواسطة سلسلة محارف field، أو كائن obj، أو NID nid على التوالي. تكون قيمة الحقل المراد إضافتها في bytes بطول len. إذا كان len يساوي -1، يُحسب طول الحقل داخليًا باستخدام strlen(bytes).

يُحدد نوع الحقل بواسطة type الذي يمكن أن يكون تعريفًا لنوع bytes (مثل MBSTRING_ASC) أو نوع ASN1 قياسي (مثل V_ASN1_IA5STRING). يُضاف الإدخال الجديد إلى موضع يُحدد بواسطة loc وset.

تُضيف الدالة X509_NAME_add_entry() نسخة من بنية X509_NAME_ENTRY ne إلى name. يُضاف الإدخال الجديد إلى موضع يُحدد بواسطة loc وset. نظرًا لإضافة نسخة من ne، يجب تحرير ne بعد الاستدعاء.

تحذف الدالة X509_NAME_delete_entry() إدخالاً من name في الموضع loc. يُعاد الإدخال المحذوف ويجب تحريره.

ملاحظات
يُوصى بشدة باستخدام أنواع السلاسل مثل MBSTRING_ASC أو MBSTRING_UTF8 للمعامل type. يسمح هذا للكود الداخلي بتحديد نوع الحقل بشكل صحيح وتطبيق فحوصات الطول وفقًا للمعايير ذات الصلة. يُنجز هذا باستخدام ASN1_STRING_set_by_NID().

إذا استُخدم نوع ASN1 بدلاً من ذلك، لا تُجرى أي فحوصات وتُستخدم البيانات المقدمة في bytes مباشرة.

في الدالة X509_NAME_add_entry_by_txt()، تمثل سلسلة المحارف field اسم الحقل باستخدام OBJ_txt2obj(field, 0).

يُحدد المعاملان loc وset مكان إضافة إدخال جديد. بالنسبة لمعظم التطبيقات، يمكن ضبط loc على -1 وset على 0. يُضيف هذا إدخالاً جديدًا إلى نهاية name كـ RelativeDistinguishedName (RDN) بقيمة مفردة.

يُحدد loc فعليًا الفهرس الذي يُدرج فيه الإدخال الجديد: إذا كان -1، يُلحق في النهاية.

يُحدد set كيفية إضافة النوع الجديد. إذا كان صفرًا، يُنشأ RDN جديد.

إذا كان set يساوي -1 أو 1، يُضاف كعضو مجموعة جديد إلى بنية RDN السابقة أو التالية على التوالي. يصبح هذا بعد ذلك جزءًا من RDN متعدد القيم (يحتوي على مجموعة من AVAs). نظرًا لأن RDNs متعددة القيم نادرًا ما تُستخدم، سيكون set عادةً صفرًا.

القيم المُرجعة
تُرجع الدوال X509_NAME_add_entry_by_txt() وX509_NAME_add_entry_by_OBJ() وX509_NAME_add_entry_by_NID() وX509_NAME_add_entry() القيمة 1 عند النجاح أو 0 إذا حدث خطأ.

تُرجع الدالة X509_NAME_delete_entry() إما بنية X509_NAME_ENTRY المحذوفة أو NULL إذا حدث خطأ.

أمثلة
إنشاء بنية X509_NAME:

"C=UK, O=Disorganized Organization, CN=Joe Bloggs"

 X509_NAME *nm;

 nm = X509_NAME_new();
 if (nm == NULL)
     /* Some error */
 if (!X509_NAME_add_entry_by_txt(nm, "C", MBSTRING_ASC,
                                 "UK", -1, -1, 0))
     /* Error */
 if (!X509_NAME_add_entry_by_txt(nm, "O", MBSTRING_ASC,
                                 "Disorganized Organization", -1, -1, 0))
     /* Error */
 if (!X509_NAME_add_entry_by_txt(nm, "CN", MBSTRING_ASC,
                                 "Joe Bloggs", -1, -1, 0))
     /* Error */

العلل
لا يزال بالإمكان ضبط type إلى V_ASN1_APP_CHOOSE لاستخدام خوارزمية مختلفة لتحديد أنواع الحقول. نظرًا لأن هذه الصيغة لا تفهم الأنواع متعددة المحارف، ولا تجري فحوصات الطول، وقد تؤدي إلى أنواع حقول غير صالحة، فإن استخدامها غير مستحسن بشدة.

انظر أيضًا
ERR_get_error(3)، d2i_X509_NAME(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.