PKCS7_ENCRYPT(3SSL)

الاسم
PKCS7_encrypt_ex, PKCS7_encrypt - إنشاء بنية PKCS#7 envelopedData

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

 PKCS7 *PKCS7_encrypt_ex(STACK_OF(X509) *certs, BIO *in,
                         const EVP_CIPHER *cipher, int flags,
                         OSSL_LIB_CTX *libctx, const char *propq);
 PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher,
                      int flags);

الوصف
PKCS7_encrypt_ex() تُنشئ وتُعيد بنية PKCS#7 envelopedData. certs هي قائمة بشهادات المستلمين. in هو المحتوى المراد تعميه. cipher هو المُعمِّي المتماثل المراد استخدامه. flags هي مجموعة اختيارية من الأعلام. يُستخدم سياق المكتبة libctx واستعلام الخاصية propq عند استرداد الخوارزميات من المزوّدين.

تُدعم مفاتيح RSA فقط في PKCS#7 وenvelopedData، لذا يجب أن تحتوي جميع شهادات المستلمين المُقدَّمة لهذه الدالة على مفاتيح عامة RSA، على الرغم من أنها لا تحتاج إلى التوقيع باستخدام خوارزمية RSA.

EVP_des_ede3_cbc() (DES الثلاثي) هو الخوارزمية المختارة لاستخدام S/MIME لأن معظم العملاء سيدعمونها.

قد تدعم بعض العملاء القدامى من "درجة التصدير" فقط التعمية الضعيفة باستخدام RC2 بطول 40 أو 64 بت. يمكن استخدام هذه بتمرير EVP_rc2_40_cbc() وEVP_rc2_64_cbc() على التوالي.

يجب أن تدعم الخوارزمية المُمرَّرة في المعامل cipher ترميز ASN1 لمعاملاتها.

تُنفّذ العديد من المتصفحات خيار "التوقيع والتعمية" وهو ببساطة envelopedData من S/MIME يحتوي على رسالة موقّعة من S/MIME. يمكن إنتاج هذا بسهولة بتخزين رسالة S/MIME الموقّعة في BIO ذاكرة وتمريرها إلى PKCS7_encrypt().

يمكن تمرير العلامات التالية في معامل flags.

إذا وُضع العلم PKCS7_TEXT، تُسبَق ترويسات MIME من النوع text/plain إلى البيانات.

عادةً، يُترجَم المحتوى المُقدَّم إلى تنسيق MIME القانوني (كما هو مطلوب في مواصفات S/MIME)؛ إذا وُضع PKCS7_BINARY، لا تحدث ترجمة. يجب استخدام هذا الخيار إذا كانت البيانات المُقدَّمة بتنسيق ثنائي، وإلا ستُفسدها الترجمة. إذا وُضع PKCS7_BINARY، يُتجاهَل PKCS7_TEXT.

إذا وُضع العلم PKCS7_STREAM، يُخرَج بنية PKCS7 جزئية مناسبة للإدخال/الإخراج المتدفق: لا تُقرأ أي بيانات من BIO in.

إذا ضُبِط علم PKCS7_STREAM، فإن هيكل PKCS7 المرتجع ليس مكتملاً، وإخراج محتوياته عبر دالة لا تنهي هيكل PKCS7 بشكل صحيح سيؤدي إلى نتائج غير متوقعة.

تقوم عدة دوال بما في ذلك SMIME_write_PKCS7() و i2d_PKCS7_bio_stream() و PEM_write_bio_PKCS7_stream() بإنهاء الهيكلية. بدلاً من ذلك، يمكن إجراء الإنهاء بالحصول على تدفق ASN1 BIO مباشرة باستخدام BIO_new_PKCS7().

PKCS7_encrypt() مشابهة لـ PKCS7_encrypt_ex() ولكنها تستخدم قيماً مبدئية من NULL لسياق المكتبة libctx واستعلام الخاصية propq.

القيم المُرجعة
PKCS7_encrypt_ex() وPKCS7_encrypt() تُعيدان إما بنية PKCS7 أو NULL إذا حدث خطأ. يمكن الحصول على الخطأ من ERR_get_error(3).

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

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

أُضيف علم PKCS7_STREAM في OpenSSL 1.0.0.

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