.\" -*- coding: UTF-8 -*- .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .de IX .. .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .if n .ds AD l .\" .\" Required to disable full justification in groff 1.23.0. .\" ======================================================================== .\" .IX Title "BN_ADD 3ssl" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH BN_ADD 3ssl "7 أبريل 2026" 3.6.2 OpenSSL .if n .ad l .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .nh .SH الاسم BN_add, BN_sub, BN_mul, BN_sqr, BN_div, BN_mod, BN_nnmod, BN_mod_add, BN_mod_sub, BN_mod_mul, BN_mod_sqr, BN_mod_sqrt, BN_exp, BN_mod_exp, BN_gcd \- عمليات حسابية على BIGNUMs .SH موجز .IX Header موجز .Vb 1 \& #include \& \& int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); \& \& int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); \& \& int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); \& \& int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx); \& \& int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *a, const BIGNUM *d, \& BN_CTX *ctx); \& \& int BN_mod(BIGNUM *rem, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); \& \& int BN_nnmod(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); \& \& int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, \& BN_CTX *ctx); \& \& int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, \& BN_CTX *ctx); \& \& int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, \& BN_CTX *ctx); \& \& int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); \& \& BIGNUM *BN_mod_sqrt(BIGNUM *in, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); \& \& int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); \& \& int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, \& const BIGNUM *m, BN_CTX *ctx); \& \& int BN_gcd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); .Ve .SH الوصف .IX Header الوصف \&\fBBN_add()\fP تجمع \fIa\fP و \fIb\fP وتضع النتيجة في \fIr\fP (\f(CW\*(C`r=a+b\*(C'\fP). \&\fIr\fP قد يكون نفس \fBBIGNUM\fP مثل \fIa\fP أو \fIb\fP. .PP \&\fBBN_sub()\fP تطرح \fIb\fP من \fIa\fP وتضع النتيجة في \fIr\fP (\f(CW\*(C`r=a\-b\*(C'\fP). \&\fIr\fP قد يكون نفس \fBBIGNUM\fP مثل \fIa\fP أو \fIb\fP. .PP \&\fBBN_mul()\fP تضرب \fIa\fP و \fIb\fP وتضع النتيجة في \fIr\fP (\f(CW\*(C`r=a*b\*(C'\fP). \&\fIr\fP قد يكون نفس \fBBIGNUM\fP مثل \fIa\fP أو \fIb\fP. للضرب في قوى العدد 2، استخدم \fBBN_lshift\fP\|(3). .PP \&\fBBN_sqr()\fP تأخذ مربع \fIa\fP وتضع النتيجة في \fIr\fP (\f(CW\*(C`r=a^2\*(C'\fP). \fIr\fP و \fIa\fP قد يكونان نفس \fBBIGNUM\fP. هذه الدالة أسرع من BN_mul(r,a,a). .PP \&\fBBN_div()\fP تقسم \fIa\fP على \fId\fP وتضع النتيجة في \fIdv\fP والباقي في \fIrem\fP (\f(CW\*(C`dv=a/d, rem=a%d\*(C'\fP). أي من \fIdv\fP و \fIrem\fP قد يكون \fBNULL\fP، وفي هذه الحالة لا تُعاد القيمة المعنية. تُقرّب النتيجة نحو الصفر؛ لذا إذا كان \fIa\fP سالبًا، سيكون الباقي صفرًا أو سالبًا. للقسمة على قوى العدد 2، استخدم \fBBN_rshift\fP\|(3). .PP \&\fBBN_mod()\fP تقابل \fBBN_div()\fP مع ضبط \fIdv\fP على \fBNULL\fP. .PP \&\fBBN_nnmod()\fP تُقلل \fIa\fP بمعامل \fIm\fP وتضع الباقي غير السالب في \fIr\fP. .PP \&\fBBN_mod_add()\fP تجمع \fIa\fP إلى \fIb\fP بمعامل \fIm\fP وتضع النتيجة غير السالبة في \fIr\fP. .PP \&\fBBN_mod_sub()\fP تطرح \fIb\fP من \fIa\fP بمعامل \fIm\fP وتضع النتيجة غير السالبة في \fIr\fP. .PP \&\fBBN_mod_mul()\fP تضرب \fIa\fP في \fIb\fP وتجد الباقي غير السالب بالنسبة للمعامل \fIm\fP (\f(CW\*(C`r=(a*b) mod m\*(C'\fP). \fIr\fP قد يكون نفس \fBBIGNUM\fP مثل \fIa\fP أو \fIb\fP. للخوارزميات الأكثر كفاءة للحسابات المتكررة باستخدام نفس المعامل، انظر \&\fBBN_mod_mul_montgomery\fP\|(3) و \&\fBBN_mod_mul_reciprocal\fP\|(3). .PP \&\fBBN_mod_sqr()\fP تأخذ مربع \fIa\fP بمعامل \fBm\fP وتضع النتيجة في \fIr\fP. .PP \&\fBBN_mod_sqrt()\fP تُعيد الجذر التربيعي المعياري لـ \fIa\fP بحيث \&\f(CW\*(C`in^2 = a (mod p)\*(C'\fP. يجب أن يكون المعامل \fIp\fP عددًا أوليًا، وإلا فسيُعاد خطأ أو "نتيجة" غير صحيحة. تُخزّن النتيجة في \fIin\fP الذي يمكن أن يكون NULL. في هذه الحالة، سيُخصص للنتيجة ذاكرة جديدة. .PP \&\fBBN_exp()\fP ترفع \fIa\fP إلى القوة \fIp\fP وتضع النتيجة في \fIr\fP (\f(CW\*(C`r=a^p\*(C'\fP). هذه الدالة أسرع من التطبيقات المتكررة لـ \&\fBBN_mul()\fP. .PP \&\fBBN_mod_exp()\fP تحسب \fIa\fP إلى القوة \fIp\fP بمعامل \fIm\fP (\f(CW\*(C`r=a^p % m\*(C'\fP). تستخدم هذه الدالة وقتًا ومساحة أقل من \fBBN_exp()\fP. لا تستدع هذه الدالة عندما يكون \fBm\fP زوجيًا وأي من المعاملات لديه العلم \&\fBBN_FLG_CONSTTIME\fP مضبوطًا. .PP \&\fBBN_gcd()\fP تحسب القاسم المشترك الأكبر لـ \fIa\fP و \fIb\fP وتضع النتيجة في \fIr\fP. \fIr\fP قد يكون نفس \fBBIGNUM\fP مثل \fIa\fP أو \&\fIb\fP. .PP لجميع الدوال، \fIctx\fP هو \fBBN_CTX\fP مخصص مسبقًا يُستخدم للمتغيرات المؤقتة؛ انظر \fBBN_CTX_new\fP\|(3). .PP ما لم يُذكر خلاف ذلك، يجب أن يكون \fBBIGNUM\fP الناتج مختلفًا عن الوسائط. .SH ملاحظات .IX Header ملاحظات للعمليات النمطية مثل \fBBN_nnmod()\fP أو \fBBN_mod_exp()\fP يُعد خطأً استخدام نفس كائن \fBBIGNUM\fP للمعامل كما هو للمخرج. .SH "القيم المُرجعة" .IX Header "القيم المُرجعة" تُرجع \fBBN_mod_sqrt()\fP النتيجة (ربما غير صحيحة إذا لم يكن \fIp\fP أوليًا)، أو NULL. .PP لجميع الدوال المتبقية، يُعاد 1 للنجاح، 0 عند الخطأ. يجب دائمًا فحص القيمة المُعادة (مثلًا، \f(CW\*(C`if (!BN_add(r,a,b)) goto err;\*(C'\fP). يمكن الحصول على رموز الخطأ بواسطة \fBERR_get_error\fP\|(3). .SH "انظر أيضًا" .IX Header "انظر أيضًا" \&\fBERR_get_error\fP\|(3), \fBBN_CTX_new\fP\|(3), \&\fBBN_add_word\fP\|(3), \fBBN_set_bit\fP\|(3) .SH "حقوق النسخ" .IX Header "حقوق النسخ" حقوق النشر 2000\-2024 لمؤلفي مشروع OpenSSL. جميع الحقوق محفوظة. .PP مرخص بموجب رخصة Apache 2.0 (المشار إليها فيما يلي بـ ”الرخصة“). لا يجوز لك استخدام هذا الملف إلا وفقًا لشروط الرخصة. يمكنك الحصول على نسخة منها في الملف LICENSE الموجود في حزمة التوزيع المصدرية أو على الرابط . .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .