.\" -*- 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_GENERATE_PRIME 3ssl" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH BN_GENERATE_PRIME 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_generate_prime_ex2, BN_generate_prime_ex, BN_is_prime_ex, BN_check_prime, BN_is_prime_fasttest_ex, BN_GENCB_call, BN_GENCB_new, BN_GENCB_free, BN_GENCB_set_old, BN_GENCB_set, BN_GENCB_get_arg, BN_generate_prime, BN_is_prime, BN_is_prime_fasttest \- توليد الأعداد الأولية واختبار الأولية .SH موجز .IX Header موجز .Vb 1 \& #include \& \& int BN_generate_prime_ex2(BIGNUM *ret, int bits, int safe, \& const BIGNUM *add, const BIGNUM *rem, BN_GENCB *cb, \& BN_CTX *ctx); \& \& int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add, \& const BIGNUM *rem, BN_GENCB *cb); \& \& int BN_check_prime(const BIGNUM *p, BN_CTX *ctx, BN_GENCB *cb); \& \& int BN_GENCB_call(BN_GENCB *cb, int a, int b); \& \& BN_GENCB *BN_GENCB_new(void); \& \& void BN_GENCB_free(BN_GENCB *cb); \& \& void BN_GENCB_set_old(BN_GENCB *gencb, \& void (*callback)(int, int, void *), void *cb_arg); \& \& void BN_GENCB_set(BN_GENCB *gencb, \& int (*callback)(int, int, BN_GENCB *), void *cb_arg); \& \& void *BN_GENCB_get_arg(BN_GENCB *cb); .Ve .PP الوظائف التالية مهجورة منذ OpenSSL 0.9.8، ويمكن إخفاؤها تمامًا بتعريف \fBOPENSSL_API_COMPAT\fP بقيمة إصدار مناسبة، انظر \fBopenssl_user_macros\fP\|(7): .PP .Vb 3 \& BIGNUM *BN_generate_prime(BIGNUM *ret, int num, int safe, BIGNUM *add, \& BIGNUM *rem, void (*callback)(int, int, void *), \& void *cb_arg); \& \& int BN_is_prime(const BIGNUM *p, int nchecks, \& void (*callback)(int, int, void *), BN_CTX *ctx, void *cb_arg); \& \& int BN_is_prime_fasttest(const BIGNUM *p, int nchecks, \& void (*callback)(int, int, void *), BN_CTX *ctx, \& void *cb_arg, int do_trial_division); .Ve .PP الدوال التالية أصبحت مهجورة منذ OpenSSL 3.0، ويمكن إخفاؤها تماماً عن طريق تعريف \fBOPENSSL_API_COMPAT\fP بقيمة إصدار مناسبة، انظر \fBopenssl_user_macros\fP\|(7): .PP .Vb 1 \& int BN_is_prime_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, BN_GENCB *cb); \& \& int BN_is_prime_fasttest_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, \& int do_trial_division, BN_GENCB *cb); .Ve .SH الوصف .IX Header الوصف \&\fBBN_generate_prime_ex2()\fP يُولّد عددًا أوليًا شبه عشوائي بطول بت لا يقل عن \fBbits\fP باستخدام BN_CTX المُقدّم في \fBctx\fP. يجب ألا تكون قيمة \&\fBctx\fP NULL. .PP العدد المُرجَع هو على الأرجح أولي مع خطأ ضئيل. أعلى معدل خطأ هو 2^\-128. هو 2^\-287 لعدد أولي بطول 512 بت، و2^\-435 لعدد أولي بطول 1024 بت، و2^\-648 لعدد أولي بطول 2048 بت، وأقل من 2^\-882 للأعداد الأولية الأكبر من 2048 بت. .PP إذا كان \fBadd\fP هو \fBNULL\fP، فسيكون للعدد الأولي المُرجَع طول بت دقيق \fBbits\fP مع تعيين أعلى بتين. .PP إذا لم يكن \fBret\fP هو \fBNULL\fP، فسيُستخدم لتخزين العدد. .PP إذا لم يكن \fBcb\fP هو \fBNULL\fP، فسيُستخدم كالتالي: .IP \(bu 2 \&\fBBN_GENCB_call(cb, 0, i)\fP يُستدعى بعد توليد العدد الأولي المحتمل رقم i. .IP \(bu 2 أثناء اختبار العدد للأولية، \&\fBBN_GENCB_call(cb, 1, j)\fP يُستدعى كما هو موصوف أدناه. .IP \(bu 2 عندما يُعثر على عدد أولي، \fBBN_GENCB_call(cb, 2, i)\fP يُستدعى. .IP \(bu 2 قد يستدعي مستدعو \fBBN_generate_prime_ex()\fP \fBBN_GENCB_call(cb, i, j)\fP بقيم أخرى كما هو موصوف في صفحات الدليل الخاصة بهم؛ انظر "انظر أيضًا". .PP قد يجب على العدد الأولي استيفاء متطلبات إضافية للاستخدام في تبادل المفاتيح Diffie\-Hellman: .PP إذا لم يكن \fBadd\fP هو \fBNULL\fP، فسيستوفي العدد الأولي الشرط p % \fBadd\fP == \fBrem\fP (p % \fBadd\fP == 1 إذا كان \fBrem\fP == \fBNULL\fP) ليتناسب مع مولد معين. .PP إذا كان \fBsafe\fP صحيحًا، فسيكون عددًا أوليًا آمنًا (أي عدد أولي p بحيث (p\-1)/2 هو أيضًا أولي). إذا كان \fBsafe\fP صحيحًا، و \fBrem\fP == \fBNULL\fP، فسيكون الشرط p % \fBadd\fP == 3. يُوصى بأن يكون \fBadd\fP مضاعفًا للعدد 4. .PP يجب بذر المولد العشوائي قبل استدعاء \fBBN_generate_prime_ex()\fP. إذا فشل البذر الآلي أو إعادة البذر لـ CSPRNG الخاص بـ OpenSSL بسبب ظروف خارجية (انظر \fBRAND\fP\|(7))، ستفشل العملية. سيُستخدم مولد الأرقام العشوائية المهيأ لـ OSSL_LIB_CTX المرتبط بـ \&\fBctx\fP. .PP \&\fBBN_generate_prime_ex()\fP مماثل لـ \fBBN_generate_prime_ex2()\fP باستثناء عدم تمرير أي معامل \&\fBctx\fP. في هذه الحالة، سيُستخدم مولد الأرقام العشوائية المرتبط بـ OSSL_LIB_CTX المبدئي. .PP \&\fBBN_check_prime()\fP، \fBBN_is_prime_ex()\fP، \fBBN_is_prime_fasttest_ex()\fP، \fBBN_is_prime()\fP و \fBBN_is_prime_fasttest()\fP تختبر إذا كان العدد \fBp\fP أوليًا. تختبر الدوال حتى يُظهر أحد الاختبارات أن \fBp\fP مركب، أو تجتاز جميع الاختبارات. إذا اجتاز \fBp\fP جميع هذه الاختبارات، يُعتبر أوليًا محتملًا. .PP الاختبار المُجرى على \fBp\fP هو قسمة تجريبية بعدد من الأعداد الأولية الصغيرة وجولات من اختبار ميلر\-رابين الاحتمالي للأولية. .PP تنفذ الدوال 64 جولة على الأقل من اختبار ميلر\-رابين مع إعطاء معدل إيجابي كاذب أقصى قدره 2^\-128. إذا كان حجم \fBp\fP أكبر من 2048 بت، تنفذ 128 جولة على الأقل مع إعطاء معدل إيجابي كاذب أقصى قدره 2^\-256. .PP إذا كان \fBnchecks\fP أكبر من الحد الأدنى أعلاه (64 أو 128)، ستُنفذ جولات \fBnchecks\fP من اختبار ميلر\-رابين. .PP إذا ضُبط \fBdo_trial_division\fP على \fB0\fP، ستُتجاوز القسمة التجريبية. تتجاوز \&\fBBN_is_prime_ex()\fP و \fBBN_is_prime()\fP القسمة التجريبية دائمًا. .PP \&\fBBN_is_prime_ex()\fP، \fBBN_is_prime_fasttest_ex()\fP، \fBBN_is_prime()\fP و \fBBN_is_prime_fasttest()\fP مهملة. .PP تتصرف \&\fBBN_is_prime_fasttest()\fP و \fBBN_is_prime()\fP تمامًا مثل \&\fBBN_is_prime_fasttest_ex()\fP و \fBBN_is_prime_ex()\fP على التوالي، ولكن مع رد النداء ذي النمط القديم. .PP \&\fBctx\fP هو \fBBN_CTX\fP مخصص مسبقًا (لتوفير الحمل الزائد لتخصيص وتحرير البنية في حلقة)، أو \fBNULL\fP. .PP إذا أُجريت القسمة التجريبية، ولم يُعثر على قواسم و \fBcb\fP ليس \fBNULL\fP، يُستدعى \fBBN_GENCB_call(cb, 1, \-1)\fP. .PP بعد كل جولة من اختبار ميلر\-رابين الاحتمالي للأولية، إذا كان \fBcb\fP ليس \fBNULL\fP، يُستدعى \fBBN_GENCB_call(cb, 1, j)\fP مع \fBj\fP التكرار (j = 0, 1, ...). .PP يستدعي \&\fBBN_GENCB_call()\fP دالة رد النداء المحفوظة في بنية \fBBN_GENCB\fP ويمرر الأعداد الصحيحة \fBa\fP و \fBb\fP كوسائط. هناك نوعان من بنية \&\fBBN_GENCB\fP المدعومة: النمط "الجديد" والنمط "القديم". يجب أن تفضل البرامج الجديدة النمط "الجديد"، بينما يُوفر النمط "القديم" لأغراض التوافق مع الإصدارات السابقة. .PP يجب إنشاء بنية \fBBN_GENCB\fP من خلال استدعاء \fBBN_GENCB_new()\fP، وتحريرها من خلال استدعاء \fBBN_GENCB_free()\fP. إذا كانت الوسيطة NULL، لا يُفعل شيء. .PP بالنسبة لردود النداء ذات النمط "الجديد"، يجب تهيئة بنية BN_GENCB باستدعاء \fBBN_GENCB_set()\fP، حيث \fBgencb\fP هو \fBBN_GENCB *\fP، \fBcallback\fP من النوع \fBint (*callback)(int, int, BN_GENCB *)\fP و \fBcb_arg\fP هو \fBvoid *\fP. ردود النداء ذات النمط "القديم" هي نفسها باستثناء أنها تُهيأ باستدعاء \fBBN_GENCB_set_old()\fP و \fBcallback\fP من النوع \&\fBvoid (*callback)(int, int, void *)\fP. .PP يُستدعى رد النداء من خلال استدعاء \fBBN_GENCB_call\fP. سيتحقق هذا من نوع رد النداء وسيستدعي \fBcallback(a, b, gencb)\fP لردود النداء ذات النمط الجديد أو \fBcallback(a, b, cb_arg)\fP للنمط القديم. .PP من الممكن الحصول على الوسيطة المرتبطة ببنية BN_GENCB (المضبوطة عبر استدعاء BN_GENCB_set أو BN_GENCB_set_old) باستخدام BN_GENCB_get_arg. .PP يعمل \&\fBBN_generate_prime()\fP (المهمل) بنفس طريقة \&\fBBN_generate_prime_ex()\fP ولكنه يتوقع دالة رد نداء ذات نمط قديم مباشرة في معامل \fBcallback\fP، ووسيطة لتمريرها إليه في \fBcb_arg\fP. يمكن مقارنة \fBBN_is_prime()\fP و \fBBN_is_prime_fasttest()\fP بالمثل مع \fBBN_is_prime_ex()\fP و \&\fBBN_is_prime_fasttest_ex()\fP، على التوالي. .SH "القيم المُرجعة" .IX Header "القيم المُرجعة" تُرجع \&\fBBN_generate_prime_ex()\fP 1 عند النجاح أو 0 عند الخطأ. .PP تُرجع \&\fBBN_is_prime_ex()\fP، \fBBN_is_prime_fasttest_ex()\fP، \fBBN_is_prime()\fP، \&\fBBN_is_prime_fasttest()\fP و BN_check_prime 0 إذا كان العدد مركبًا، 1 إذا كان أوليًا مع احتمالية خطأ أقل من 0.25^\fBnchecks\fP، و \&\-1 عند الخطأ. .PP \&\fBBN_generate_prime()\fP يُرجع العدد الأولي عند النجاح، أو \fBNULL\fP خلاف ذلك. .PP BN_GENCB_new يُرجع مؤشرًا إلى بنية BN_GENCB عند النجاح، أو \fBNULL\fP خلاف ذلك. .PP BN_GENCB_get_arg يُرجع الوسيط المرتبط سابقًا ببنية BN_GENCB. .PP يجب أن تُرجع دوال الاستدعاء 1 عند النجاح أو 0 عند الخطأ. .PP يمكن الحصول على رموز الخطأ بواسطة \fBERR_get_error\fP\|(3). .SH "الوظائف المزالة" .IX Header "الوظائف المزالة" اعتبارًا من OpenSSL 1.1.0، لم يعد من الممكن إنشاء بنية BN_GENCB مباشرة، كما في: .PP .Vb 1 \& BN_GENCB callback; .Ve .PP بدلاً من ذلك، يجب على التطبيقات إنشاء بنية BN_GENCB باستخدام BN_GENCB_new: .PP .Vb 6 \& BN_GENCB *callback; \& callback = BN_GENCB_new(); \& if (!callback) \& /* error */ \& ... \& BN_GENCB_free(callback); .Ve .SH "انظر أيضًا" .IX Header "انظر أيضًا" \&\fBDH_generate_parameters\fP\|(3), \fBDSA_generate_parameters\fP\|(3), \&\fBRSA_generate_key\fP\|(3), \fBERR_get_error\fP\|(3), \fBRAND_bytes\fP\|(3), \&\fBRAND\fP\|(7) .SH التاريخ .IX Header التاريخ الدالتان \fBBN_is_prime_ex()\fP و \fBBN_is_prime_fasttest_ex()\fP أُهملتا في OpenSSL 3.0. .PP الدوال \fBBN_GENCB_new()\fP و \fBBN_GENCB_free()\fP و \fBBN_GENCB_get_arg()\fP أُضيفت في OpenSSL 1.1.0. .PP \&\fBBN_check_prime()\fP أُضيفت في OpenSSL 3.0. .SH "حقوق النسخ" .IX Header "حقوق النسخ" حقوق النشر 2000\-2025 لمؤلفي مشروع 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 .