BN_CTX_NEW(3ssl)

الاسم
BN_CTX_new_ex, BN_CTX_new, BN_CTX_secure_new_ex, BN_CTX_secure_new, BN_CTX_free - تخصيص وتحرير هياكل BN_CTX

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

 BN_CTX *BN_CTX_new_ex(OSSL_LIB_CTX *ctx);
 BN_CTX *BN_CTX_new(void);

 BN_CTX *BN_CTX_secure_new_ex(OSSL_LIB_CTX *ctx);
 BN_CTX *BN_CTX_secure_new(void);

 void BN_CTX_free(BN_CTX *c);

الوصف
BN_CTX هو هيكل يحمل متغيرات مؤقتة من نوع BIGNUM تُستخدم بواسطة دوال المكتبة. نظرًا لأن تخصيص الذاكرة الديناميكي لإنشاء BIGNUMات مكلف نسبيًا عند استخدامه مع استدعاءات متكررة للروتينات الفرعية، يُستخدم هيكل BN_CTX.

BN_CTX_new_ex() يخصص ويهيئ هيكل BN_CTX لسياق المكتبة المعطى ctx. قيمة <ctx> قد تكون NULL وفي هذه الحالة يُستخدم سياق المكتبة المبدئي. BN_CTX_new() هو نفسه BN_CTX_new_ex() باستثناء أن سياق المكتبة المبدئي يُستخدم دائمًا.

BN_CTX_secure_new_ex() يخصص ويهيئ هيكل BN_CTX لكنه يستخدم الكومة الآمنة (انظر CRYPTO_secure_malloc(3)) لحمل BIGNUMات لسياق المكتبة المعطى ctx. قيمة <ctx> قد تكون NULL وفي هذه الحالة يُستخدم سياق المكتبة المبدئي. BN_CTX_secure_new() هو نفسه BN_CTX_secure_new_ex() باستثناء أن سياق المكتبة المبدئي يُستخدم دائمًا.

BN_CTX_free() يحرر مكونات BN_CTX والهيكل نفسه. نظرًا لأن BN_CTX_start() مطلوب للحصول على BIGNUMات من BN_CTX، في معظم الحالات يجب استدعاء BN_CTX_end() قبل أن يُحرر BN_CTX بواسطة BN_CTX_free(). إذا كان c هو NULL، لا يُفعل شيء.

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

القيم المُرجعة
BN_CTX_new() و BN_CTX_secure_new() يُرجعان مؤشرًا إلى BN_CTX. إذا فشل التخصيص، يُرجعان NULL ويُعيّنان رمز خطأ يمكن الحصول عليه بواسطة ERR_get_error(3).

BN_CTX_free() ليس له قيم إرجاع.

الوظائف المزالة
 void BN_CTX_init(BN_CTX *c);

BN_CTX_init() لم يعد متاحًا اعتبارًا من OpenSSL 1.1.0. يجب على التطبيقات استبدال استخدام BN_CTX_init بـ BN_CTX_new بدلاً من ذلك:

 BN_CTX *ctx;
 ctx = BN_CTX_new();
 if (!ctx)
     /* error */
 ...
 BN_CTX_free(ctx);

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

التاريخ
BN_CTX_init() أُزيل في OpenSSL 1.1.0.

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