BN_MOD_MUL_MONTGOMERY(3SSL)

الاسم
BN_mod_mul_montgomery, BN_MONT_CTX_new, BN_MONT_CTX_free, BN_MONT_CTX_set, BN_MONT_CTX_copy, BN_from_montgomery, BN_to_montgomery - ضرب مونتغمري

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

 BN_MONT_CTX *BN_MONT_CTX_new(void);
 void BN_MONT_CTX_free(BN_MONT_CTX *mont);

 int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *m, BN_CTX *ctx);
 BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from);

 int BN_mod_mul_montgomery(BIGNUM *r, BIGNUM *a, BIGNUM *b,
                           BN_MONT_CTX *mont, BN_CTX *ctx);

 int BN_from_montgomery(BIGNUM *r, BIGNUM *a, BN_MONT_CTX *mont,
                        BN_CTX *ctx);

 int BN_to_montgomery(BIGNUM *r, BIGNUM *a, BN_MONT_CTX *mont,
                      BN_CTX *ctx);

الوصف
تنفذ هذه الدوال ضرب مونتغمري. تُستخدم آلي عندما تُستدعى BN_mod_exp(3) بإدخال مناسب، لكنها قد تكون مفيدة عند تنفيذ عدة عمليات باستخدام نفس المقياس.

تخصص BN_MONT_CTX_new() وتهيئ بنية BN_MONT_CTX.

تعد BN_MONT_CTX_set() بنية mont من المقياس m بحساب معكوسها وقيمة R مسبق.

تنسخ BN_MONT_CTX_copy() BN_MONT_CTX from إلى to.

تحرر BN_MONT_CTX_free() مكونات BN_MONT_CTX، وإذا أُنشئت بواسطة BN_MONT_CTX_new()، تحرر البنية نفسها أيضًا. إذا كان mont NULL، لا يُفعل شيء.

تحسب BN_mod_mul_montgomery() Mont(a,b):=a*b*R^-1 وتضع النتيجة في r.

تنفذ BN_from_montgomery() اختزال مونتغمري r = a*R^-1.

تحسب BN_to_montgomery() Mont(a,R^2)، أي a*R. لاحظ أن a يجب أن يكون غير سالب وأصغر من المقياس.

لكل الدوال، ctx هو BN_CTX مخصص مسبق يُستخدم للمتغيرات المؤقتة.

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

ليس لـ BN_MONT_CTX_free() قيمة إرجاع.

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

تحذيرات
يجب اختزال المدخلات مقياس m، وإلا ستكون النتيجة خارج النطاق المتوقع.

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

التاريخ
أُزيلت BN_MONT_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.