EVP_PKEY_ENCRYPT(3SSL)

الاسم
EVP_PKEY_encrypt_init_ex, EVP_PKEY_encrypt_init, EVP_PKEY_encrypt - يعمي باستخدام خوارزمية مفتاح عام

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

 int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx);
 int EVP_PKEY_encrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]);
 int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx,
                      unsigned char *out, size_t *outlen,
                      const unsigned char *in, size_t inlen);

الوصف
الدالة EVP_PKEY_encrypt_init() تبدأ سياق خوارزمية مفتاح عام باستخدام المفتاح pkey لعملية تعمية.

الدالة EVP_PKEY_encrypt_init_ex() تبدأ سياق خوارزمية مفتاح عام باستخدام المفتاح pkey لعملية تعمية وتضبط params الخاصة بالخوارزمية.

الدالة EVP_PKEY_encrypt() تنفذ عملية تعمية بمفتاح عام باستخدام ctx. تُحدد البيانات المراد تعميتها باستخدام المعاملين in وinlen. إذا كان out هو NULL فسيُكتب الحجم الأقصى لمخزن الإخراج إلى المعامل outlen. إذا لم يكن out هو NULL فيجب قبل الاستدعاء أن يحتوي المعامل outlen على طول مخزن out، إذا نجح الاستدعاء فتُكتب البيانات المُعمَّاة إلى out وتُكتب كمية البيانات إلى outlen.

ملاحظات
بعد استدعاء EVP_PKEY_encrypt_init() يمكن تنفيذ عمليات تحكم خاصة بالخوارزمية لضبط أي معاملات مناسبة للعملية. يمكن تضمين هذه العمليات في استدعاء EVP_PKEY_encrypt_init_ex().

يمكن استدعاء الدالة EVP_PKEY_encrypt() أكثر من مرة على نفس السياق إذا نُفذت عدة عمليات باستخدام نفس المعاملات.

القيم المُرجعة
EVP_PKEY_encrypt_init(), EVP_PKEY_encrypt_init_ex() و EVP_PKEY_encrypt() تُرجع 1 للنجاح و0 أو قيمة سالبة للفشل. على وجه الخصوص، قيمة الإرجاع -2 تشير إلى أن العملية غير مدعومة من قبل خوارزمية المفتاح العام.

أمثلة
عمِّ البيانات باستخدام OAEP (لمفاتيح RSA). انظر أيضًا PEM_read_PUBKEY(3) أو d2i_X509(3) لوسائل تحميل مفتاح عام. يمكنك أيضًا ببساطة ضبط 'eng = NULL;' للبدء بتنفيذ OpenSSL RSA المبدئي:

 #include <openssl/evp.h>
 #include <openssl/rsa.h>
 #include <openssl/engine.h>

 EVP_PKEY_CTX *ctx;
 ENGINE *eng;
 unsigned char *out, *in;
 size_t outlen, inlen;
 EVP_PKEY *key;

 /*
  * NB: يفترض أن eng, key, in, inlen قد وُضعت مسبقًا،
  * وأن key هو مفتاح عام RSA
  */
 ctx = EVP_PKEY_CTX_new(key, eng);
 if (!ctx)
     /* حدث خطأ */
 if (EVP_PKEY_encrypt_init(ctx) <= 0)
     /* خطأ */
 if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_OAEP_PADDING) <= 0)
     /* خطأ */

 /* حدد طول المخزن */
 if (EVP_PKEY_encrypt(ctx, NULL, &outlen, in, inlen) <= 0)
     /* خطأ */

 out = OPENSSL_malloc(outlen);

 if (!out)
     /* فشل malloc */

 if (EVP_PKEY_encrypt(ctx, out, &outlen, in, inlen) <= 0)
     /* خطأ */

 /* البيانات المُعمَّاة هي outlen بايت مكتوبة إلى المخزن out */

انظر أيضًا
d2i_X509(3), ENGINE_by_id(3), EVP_PKEY_CTX_new(3), EVP_PKEY_decrypt(3), EVP_PKEY_sign(3), EVP_PKEY_verify(3), EVP_PKEY_verify_recover(3), EVP_PKEY_derive(3)

التاريخ
أُضيفت هذه الدوال في OpenSSL 1.0.0.

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