CMS_ADD1_SIGNER(3ssl)

الاسم
CMS_add1_signer, CMS_SignerInfo_sign - إضافة موقع إلى بنية بيانات موقعة CMS_ContentInfo

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

 CMS_SignerInfo *CMS_add1_signer(CMS_ContentInfo *cms, X509 *signcert,
                                 EVP_PKEY *pkey, const EVP_MD *md,
                                 unsigned int flags);

 int CMS_SignerInfo_sign(CMS_SignerInfo *si);

الوصف
CMS_add1_signer() تُضيف موقعًا بشهادة signcert ومفتاح خاص pkey باستخدام ملخص رسالة md إلى بنية CMS_ContentInfo SignedData cms.

يجب الحصول على بنية CMS_ContentInfo من استدعاء أولي لـ CMS_sign() مع تعيين العلم CMS_PARTIAL أو في حالة إعادة توقيع بنية CMS_ContentInfo SignedData صالحة.

إذا كانت معلمة md هي NULL فسيُستخدم الملخص المبدئي لخوارزمية المفتاح العام.

ما لم يُعيّن العلم CMS_REUSE_DIGEST، فإن بنية CMS_ContentInfo المُرجعة ليست كاملة ويجب إنهاؤها إما بالتدفق (إن أمكن) أو باستدعاء CMS_final().

دالة CMS_SignerInfo_sign() تُوقع بنية CMS_SignerInfo بشكل صريح، واستخدامها الرئيس يكون عندما يُعيّن كلا العلمين CMS_REUSE_DIGEST و CMS_PARTIAL.

ملاحظات
الغرض الرئيس من CMS_add1_signer() هو توفير تحكم أدق في بنية بيانات CMS الموقعة حيث لا تكون المبدئيات الافتراضية لدالة CMS_sign() الأبسط مناسبة. على سبيل المثال إذا كان هناك حاجة لموقّعين متعددين أو خوارزميات ملخص غير مبدئية. يمكن أيضًا إضافة سمات جديدة باستخدام بنية CMS_SignerInfo المُرجعة ودوال أداة سمات CMS أو دوال طلب الإيصال الموقع CMS.

يمكن تمرير أي من العلامات التالية (مجتمعة بعلامة OR) في معامل flags.

إذا عُيّن CMS_REUSE_DIGEST فسيُبذل جهد لنسخ قيمة ملخص المحتوى من بنية CMS_ContentInfo: لإضافة موقع إلى بنية موجودة. يحدث خطأ إذا تعذر العثور على قيمة ملخص مطابقة لنسخها. ستكون بنية CMS_ContentInfo المُرجعة صالحة ومنتهية عند تعيين هذا العلم.

إذا عُيّن CMS_PARTIAL بالإضافة إلى CMS_REUSE_DIGEST فلن تُنهى بنية CMS_SignerInfo لذا يمكن إضافة سمات إضافية. في هذه الحالة، يلزم استدعاء صريح لـ CMS_SignerInfo_sign() لإنهائها.

إذا ضُبط CMS_NOCERTS فلن تُضمن شهادة الموقع في بنية CMS_ContentInfo، ومع ذلك يجب توفير شهادة الموقع في معامل signcert. يمكن لهذا تقليل حجم التوقيع إذا كان من الممكن الحصول على شهادة الموقع بوسائل أخرى: مثل رسالة موقعة سابقا.

يتضمن هيكل SignedData عدة CMS signedAttributes بما في ذلك وقت التوقيع، ونوع محتوى CMS وقائمة الشفرات المدعومة في سمة SMIMECapabilities. إذا ضُبط CMS_NOATTR فلن تُستخدم أي signedAttributes على الإطلاق. إذا ضُبط CMS_NOSMIMECAP فستُحذف SMIMECapabilities. إذا ضُبط CMS_NO_SIGNING_TIME فسيُحذف وقت التوقيع.

سيقوم OpenSSL مبدئيًا بتحديد شهادات التوقيع باستخدام اسم المصدر والرقم التسلسلي. إذا جرى ضبط CMS_USE_KEYID فسيستخدم قيمة معرف مفتاح الموضوع بدلاً من ذلك. سيحدث خطأ إذا كانت شهادة التوقيع لا تحتوي على امتداد معرف مفتاح الموضوع.

إذا وجدت سمة SMIMECapabilities، فإنها تشير إلى دعم الخوارزميات التالية حسب ترتيب الأفضلية: AES بـ 256 بت، وGost R3411-94، وGost 28147-89، وAES بـ 192 بت، وAES بـ 128 بت، وDES الثلاثي، وRC2 بـ 128 بت، وRC2 بـ 64 بت، وDES، وRC2 بـ 40 بت. إذا لم تتوفر أي من هذه الخوارزميات فلن تُضمّن: على سبيل المثال لن تُضمّن خوارزميات GOST إذا لم يُحمّل محرك GOST.

CMS_add1_signer() تُرجع مؤشرًا داخليًا إلى بنية CMS_SignerInfo المُضافة حديثًا، يمكن استخدامه لتعيين سمات إضافية قبل إنهائها.

القيم المُرجعة
CMS_add1_signer() تُرجع مؤشرًا داخليًا إلى بنية CMS_SignerInfo المُضافة حديثًا أو NULL إذا حدث خطأ.

CMS_SignerInfo_sign() تُرجع 1 عند النجاح، 0 عند الفشل.

انظر أيضًا
ERR_get_error(3), CMS_sign(3), CMS_final(3),

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