PKCS7_SIGN_ADD_SIGNER(3SSL)

الاسم
PKCS7_sign_add_signer, PKCS7_add_certificate, PKCS7_add_crl - إضافة معلومات إلى بنية PKCS7

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

 PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7, X509 *signcert,
                                          EVP_PKEY *pkey, const EVP_MD *md, int flags);
 int PKCS7_add_certificate(PKCS7 *p7, X509 *cert);
 int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl);

الوصف
PKCS7_sign_add_signer() تُضيف مُوقِّعًا بشهادة signcert ومفتاح خاص pkey باستخدام ملخّص الرسالة md إلى بنية بيانات موقّعة PKCS7 p7.

يجب الحصول على بنية PKCS7 من استدعاء أولي لـ PKCS7_sign() مع تعيين العَلَم PKCS7_PARTIAL أو في حالة إعادة توقيع بنية بيانات موقّعة صالحة PKCS#7.

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

ما لم يُعيّن العَلَم PKCS7_REUSE_DIGEST، فإن بنية PKCS7 المُرجَعة ليست كاملة ويجب إنهاؤها إما عن طريق التدفق (إن أمكن) أو استدعاء PKCS7_final().

ملاحظات
الغرض الرئيس من هذه الدالة هو توفير تحكم أدق في بنية بيانات موقّعة PKCS#7 حيث لا تكون المبدئيات الأبسط للدالة PKCS7_sign() مناسبة. على سبيل المثال إذا كانت هناك حاجة إلى مُوقِّعين متعددين أو خوارزميات ملخّص غير مبدئية.

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

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

إذا عُيّن PKCS7_PARTIAL بالإضافة إلى PKCS7_REUSE_DIGEST، فلن تُنهى بنية PKCS7_SIGNER_INO بحيث يمكن إضافة سمات إضافية. في هذه الحالة، يلزم استدعاء صريح لـ PKCS7_SIGNER_INFO_sign() لإنهائها.

إذا وُضع PKCS7_NOCERTS، فلن تُضمَّن شهادة الموقِّع في بنية PKCS7، لكن يجب توفير شهادة الموقِّع في المعامل signcert مع ذلك. يمكن أن يُقلِّل هذا من حجم التوقيع إذا أمكن الحصول على شهادة الموقِّع بوسائل أخرى: على سبيل المثال رسالة موقَّعة سابقًا.

يتضمن هيكل signedData عدة PKCS#7 authenticatedAttributes بما في ذلك وقت التوقيع، ونوع محتوى PKCS#7 وقائمة التعميات المدعومة في سمة SMIMECapabilities. إذا ضُبط PKCS7_NOATTR فلن تُستخدم أي authenticatedAttributes. وإذا ضُبط PKCS7_NOSMIMECAP فستُحذف فقط SMIMECapabilities.

إذا وجدت سمة SMIMECapabilities، فإنها تشير إلى دعم الخوارزميات التالية: DES الثلاثي، وRC2 بـ 128 بت، وRC2 بـ 64 بت، وDES، وRC2 بـ 40 بت. إذا عُطّلت أي من هذه الخوارزميات فلن تُضمّن.

PKCS7_sign_add_signers() تُعيد مؤشرًا داخليًا إلى بنية PKCS7_SIGNER_INFO المُضافة للتو، والتي يمكن استخدامها لتعيين سمات إضافية قبل إنهائها.

PKCS7_add_certificate() تُضيف إلى بنية PKCS7 p7 الشهادة cert، والتي قد تكون شهادة كيان نهائي (مُوقِّع) أو شهادة CA مفيدة لبناء السلسلة. يُنفّذ هذا داخليًا بواسطة PKCS7_sign_ex(3) ودوال توقيع مماثلة. قد يلزم استخدامها قبل استدعاء PKCS7_verify(3) لتوفير أي شهادات مفقودة مطلوبة للتحقق.

PKCS7_add_crl() تُضيف CRL crl إلى بنية PKCS7 p7. يمكن استدعاء هذا لتوفير معلومات حالة الشهادة لتضمينها عند التوقيع أو لاستخدامها عند التحقق من بنية PKCS7.

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

PKCS7_add_certificate() و PKCS7_add_crl() تُعيدان 1 عند النجاح، 0 عند الخطأ.

انظر أيضًا
ERR_get_error(3), PKCS7_sign_ex(3), PKCS7_final(3), PKCS7_verify(3)

التاريخ
أُضيفت الدالة PPKCS7_sign_add_signer() في OpenSSL 1.0.0.

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