BN_MOD_MUL_RECIPROCAL(3SSL)

الاسم
BN_mod_mul_reciprocal, BN_div_recp, BN_RECP_CTX_new, BN_RECP_CTX_free, BN_RECP_CTX_set - ضرب نمطي باستخدام المقلوب

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

 BN_RECP_CTX *BN_RECP_CTX_new(void);
 void BN_RECP_CTX_free(BN_RECP_CTX *recp);

 int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *m, BN_CTX *ctx);

 int BN_div_recp(BIGNUM *dv, BIGNUM *rem, const BIGNUM *a, BN_RECP_CTX *recp,
                 BN_CTX *ctx);

 int BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
                           BN_RECP_CTX *recp, BN_CTX *ctx);

الوصف
يمكن استخدام الدالة BN_mod_mul_reciprocal() لأداء عملية BN_mod_mul(3) بكفاءة عندما تُنفذ العملية بشكل متكرر بنفس المعامل. تحسب r=(a*b)%m باستخدام recp=1/m، الذي يُضبط كما هو موصوف أدناه. ctx هو BN_CTX مخصص مسبقًا يُستخدم للمتغيرات المؤقتة.

تخصص الدالة BN_RECP_CTX_new() وتهيئ بنية BN_RECP.

تحرر الدالة BN_RECP_CTX_free() مكونات BN_RECP، وإذا أُنشئت بواسطة BN_RECP_CTX_new()، تحرر البنية نفسها أيضًا. إذا كان recp NULL، لا يُفعل شيء.

تخزن الدالة BN_RECP_CTX_set() m في recp وتضبطه لحساب 1/m وإزاحته يسارًا بمقدار BN_num_bits(m)+1 لجعله عددًا صحيحًا. ستُخزن النتيجة وعدد البتات التي أزيحت يسارًا لاحقًا في recp.

تقسم الدالة BN_div_recp() a على m باستخدام recp. تضع ناتج القسمة في dv والباقي في rem.

لا يمكن مشاركة بنية BN_RECP_CTX بين الخيوط.

القيم المُرجعة
ترجع الدالة BN_RECP_CTX_new() BN_RECP_CTX المخصص حديثًا، وNULL عند الخطأ.

لا تملك الدالة BN_RECP_CTX_free() قيمة إرجاع.

للدوال الأخرى، تُرجع القيمة 1 للنجاح، و0 للخطأ. يمكن الحصول على رموز الخطأ عبر ERR_get_error(3).

انظر أيضًا
ERR_get_error(3)، BN_add(3)، BN_CTX_new(3)

التاريخ
أُزيلت الدالة BN_RECP_CTX_init() في OpenSSL 1.1.0

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