.\" -*- 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 "EC_GROUP_NEW 3ssl" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH EC_GROUP_NEW 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 الاسم EC_GROUP_get_ecparameters, EC_GROUP_get_ecpkparameters, EC_GROUP_new_from_params, EC_GROUP_to_params, EC_GROUP_new_from_ecparameters, EC_GROUP_new_from_ecpkparameters, EC_GROUP_new, EC_GROUP_free, EC_GROUP_clear_free, EC_GROUP_new_curve_GFp, EC_GROUP_new_curve_GF2m, EC_GROUP_new_by_curve_name_ex, EC_GROUP_new_by_curve_name, EC_GROUP_set_curve, EC_GROUP_get_curve, EC_GROUP_set_curve_GFp, EC_GROUP_get_curve_GFp, EC_GROUP_set_curve_GF2m, EC_GROUP_get_curve_GF2m, EC_get_builtin_curves, OSSL_EC_curve_nid2name \- دوال لإنشاء وتدمير كائنات EC_GROUP .SH موجز .IX Header موجز .Vb 1 \& #include \& \& EC_GROUP *EC_GROUP_new_from_params(const OSSL_PARAM params[], \& OSSL_LIB_CTX *libctx, const char *propq); \& OSSL_PARAM *EC_GROUP_to_params(const EC_GROUP *group, OSSL_LIB_CTX *libctx, \& const char *propq, BN_CTX *bnctx); \& EC_GROUP *EC_GROUP_new_from_ecparameters(const ECPARAMETERS *params); \& EC_GROUP *EC_GROUP_new_from_ecpkparameters(const ECPKPARAMETERS *params); \& void EC_GROUP_free(EC_GROUP *group); \& \& EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, \& const BIGNUM *b, BN_CTX *ctx); \& EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, \& const BIGNUM *b, BN_CTX *ctx); \& EC_GROUP *EC_GROUP_new_by_curve_name_ex(OSSL_LIB_CTX *libctx, const char *propq, \& int nid); \& EC_GROUP *EC_GROUP_new_by_curve_name(int nid); \& \& int EC_GROUP_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, \& const BIGNUM *b, BN_CTX *ctx); \& int EC_GROUP_get_curve(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, \& BN_CTX *ctx); \& \& ECPARAMETERS *EC_GROUP_get_ecparameters(const EC_GROUP *group, \& ECPARAMETERS *params); \& ECPKPARAMETERS *EC_GROUP_get_ecpkparameters(const EC_GROUP *group, \& ECPKPARAMETERS *params); \& \& size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); \& const char *OSSL_EC_curve_nid2name(int nid); .Ve .PP الدوال التالية أصبحت مهجورة منذ OpenSSL 3.0، ويمكن إخفاؤها تماماً عن طريق تعريف \fBOPENSSL_API_COMPAT\fP بقيمة إصدار مناسبة، انظر \fBopenssl_user_macros\fP\|(7): .PP .Vb 2 \& EC_GROUP *EC_GROUP_new(const EC_METHOD *meth); \& void EC_GROUP_clear_free(EC_GROUP *group); \& \& int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, \& const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); \& int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, \& BIGNUM *a, BIGNUM *b, BN_CTX *ctx); \& int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, \& const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); \& int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, \& BIGNUM *a, BIGNUM *b, BN_CTX *ctx); .Ve .SH الوصف .IX Header الوصف داخل المكتبة يوجد شكلان من المنحنيات الإهليلجية ذات الاهتمام. الشكل الأول هو تلك المعرفة فوق الحقل الأولي Fp. عناصر Fp هي الأعداد الصحيحة من 0 إلى p\-1، حيث p عدد أولي. يعطينا هذا معادلة منحنى إهليلجي منقحة كما يلي: .PP y^2 mod p = x^3 +ax + b mod p .PP الشكل الثاني هو تلك المعرفة فوق حقل ثنائي F2^m حيث عناصر الحقل هي أعداد صحيحة بطول m بت كحد أقصى. لهذا الشكل، تُعدل معادلة المنحنى الإهليلجي إلى: .PP y^2 + xy = x^3 + ax^2 + b (حيث b != 0) .PP تُنفذ العمليات في حقل ثنائي بالنسبة إلى \&\fBكثيرة حدود غير قابلة للاختزال\fP. جميع هذه المنحنيات مع OpenSSL تستخدم ثلاثية الحدود أو خماسية الحدود لهذا المعامل. .PP على الرغم من إهماله منذ OpenSSL 3.0 ولا ينبغي استخدامه بعد الآن، يمكن بناء منحنى جديد باستدعاء \fBEC_GROUP_new()\fP، باستخدام التنفيذ المقدم من \fImeth\fP (انظر \fBEC_GFp_simple_method\fP\|(3)) ومرتبط بسياق المكتبة \fIctx\fP (انظر \fBOSSL_LIB_CTX\fP\|(3)). قد يكون معامل \fIctx\fP NULL وفي هذه الحالة يُستخدم سياق المكتبة المبدئي. من الضروري بعد ذلك استدعاء \fBEC_GROUP_set_curve()\fP لتعيين معاملات المنحنى. ينبغي للتطبيقات بدلاً من ذلك استخدام أحد منشئات EC_GROUP_new_* الأخرى. .PP \&\fBEC_GROUP_new_from_params()\fP ينشئ مجموعة بمعاملات محددة بواسطة \fIparams\fP. يُستخدم سياق المكتبة \fIlibctx\fP (انظر \fBOSSL_LIB_CTX\fP\|(3)) وسلسلة استعلام الخاصية \&\fIpropq\fP لجلب الخوارزميات من المزودين. قد يكون \fIparams\fP إما قائمة بمعاملات صريحة أو مجموعة مسماة. قد تكون قيم \fIctx\fP و \fIpropq\fP NULL. تُوصف \fIparams\fP التي يمكن استخدامها في \&\fBEVP_PKEY\-EC\fP(7). .PP EC_GROUP_to_params ينشئ مصفوفة OSSL_PARAM بالمعاملات المقابلة التي تصف EC_GROUP المعطى. قد تحتوي المعاملات الناتجة على معاملات تصف منحنى مسماً أو صريحاً اعتماداً على EC_GROUP. يُستخدم سياق المكتبة \fIlibctx\fP (انظر \fBOSSL_LIB_CTX\fP\|(3)) وسلسلة استعلام الخاصية \&\fIpropq\fP لجلب الخوارزميات من المزودين. \&\fIbnctx\fP هو BN_CTX مخصص مسبقاً اختياري (لتوفير تكلفة تخصيص وتحرير البنية في حلقة). قد تكون قيم \fIlibctx\fP و \fIpropq\fP و \fIbnctx\fP NULL. المتصل مسؤول عن تحرير مؤشر OSSL_PARAM المُعاد. .PP \&\fBEC_GROUP_new_from_ecparameters()\fP ينشئ مجموعة من \fIparams\fP المحددة و \&\fBEC_GROUP_new_from_ecpkparameters()\fP ينشئ مجموعة من PK المحددة \&\fIparams\fP. .PP \&\fBEC_GROUP_set_curve()\fP يعين معاملات المنحنى \fIp\fP و \fIa\fP و \fIb\fP. لمنحنى فوق Fp، \fIp\fP هو العدد الأولي للحقل. لمنحنى فوق F2^m، يمثل \fIp\fP كثيرة الحدود غير القابلة للاختزال \- كل بت يمثل حداً في كثيرة الحدود. لذلك، سيكون هناك إما ثلاثة أو خمسة بتات مضبوطة اعتماداً على ما إذا كانت كثيرة الحدود ثلاثية أو خماسية. في كلتا الحالتين، يمثل \fIa\fP و \fIb\fP المعاملين a و b من المعادلة ذات الصلة المقدمة أعلاه. .PP \&\fBEC_group_get_curve()\fP يحصل على معاملات المنحنى المضبوطة سابقاً. .PP \&\fBEC_GROUP_set_curve_GFp()\fP و \fBEC_GROUP_set_curve_GF2m()\fP هما مرادفان لـ \&\fBEC_GROUP_set_curve()\fP. عُرفتا للتوافق مع الإصدارات السابقة فقط ولا ينبغي استخدامهما. .PP \&\fBEC_GROUP_get_curve_GFp()\fP و \fBEC_GROUP_get_curve_GF2m()\fP هما مرادفان لـ \&\fBEC_GROUP_get_curve()\fP. عُرفتا للتوافق مع الإصدارات السابقة فقط ولا ينبغي استخدامهما. .PP تُعد الدالتان \fBEC_GROUP_new_curve_GFp()\fP و \fBEC_GROUP_new_curve_GF2m()\fP اختصارين لاستدعاء الدالة \fBEC_GROUP_new()\fP ثم الدالة \fBEC_GROUP_set_curve()\fP. ستُستخدم طريقة تنفيذ مبدئية مناسبة. .PP بينما يمكن استخدام المكتبة لإنشاء أي منحنى باستخدام الدوال الموصوفة أعلاه، فإن هناك أيضاً عدداً من المنحنيات المُعرفة مسبقاً والمتاحة للاستخدام. وللحصول على قائمة بجميع المنحنيات المُعرفة مسبقاً، استدعِ الدالة \&\fBEC_get_builtin_curves()\fP. ينبغي أن يكون الوسيط \fIr\fP مصفوفة من بنى EC_builtin_curve بحجم \fInitems\fP. وستقوم الدالة بملء المصفوفة \&\fIr\fP بالمعلومات المتعلقة بالمنحنيات المدمجة. إذا كان \fInitems\fP أقل من العدد الإجمالي للمنحنيات المتاحة، فستُرجع الدالة منحنيات بعدد \fInitems\fP الأولى فقط، وإلا فسيُوفر العدد الإجمالي للمنحنيات. القيمة المُرجعة هي العدد الإجمالي للمنحنيات المتاحة (سواء جرى ملؤها في \fIr\fP أم لا). وتمرير قيمة NULL للوسيط \fIr\fP، أو ضبط \fInitems\fP على 0، لن يفعل شيئاً سوى إرجاع العدد الإجمالي للمنحنيات المتاحة. تُعرف بنية EC_builtin_curve على النحو التالي: .PP .Vb 4 \& typedef struct { \& int nid; \& const char *comment; \& } EC_builtin_curve; .Ve .PP لكل عنصر EC_builtin_curve مُعرّف صحيح فريد (\fInid\fP)، وسلسلة تعليق readable بشرية تصف المنحنى. .PP لبناء منحنى مدمج، استخدم الدالة \&\fBEC_GROUP_new_by_curve_name_ex()\fP وقدّم \fInid\fP للمنحنى المراد بناؤه، وسياق المكتبة المرتبط المستخدم في \fIctx\fP (انظر \&\fBOSSL_LIB_CTX\fP\|(3)) وأي سلسلة استعلام خاصية في \fIpropq\fP. قد تكون قيمة \fIctx\fP NULL وفي هذه الحالة يُستخدم سياق المكتبة المبدئي. قد تكون قيمة \fIpropq\fP NULL أيضًا. .PP \&\fBEC_GROUP_new_by_curve_name()\fP مماثلة لـ \&\fBEC_GROUP_new_by_curve_name_ex()\fP باستثناء أن سياق المكتبة المبدئي يُستخدم دائمًا مع سلسلة استعلام خاصية NULL. .PP \&\fBEC_GROUP_free()\fP تُحرّر الذاكرة المرتبطة بـ EC_GROUP. إذا كان \fIgroup\fP NULL، لا يُفعل شيء. .PP \&\fBEC_GROUP_clear_free()\fP مُهملة: كانت تهدف إلى تدمير أي بيانات حساسة محفوظة داخل EC_GROUP ثم تحرير ذاكرتها، ولكن بما أن جميع البيانات المخزنة في EC_GROUP عامة على أي حال، فهذه الدالة غير ضرورية. يمكن استبدال استخدامها بأمان بـ \fBEC_GROUP_free()\fP. إذا كان \fIgroup\fP NULL، لا يُفعل شيء. .PP \&\fBOSSL_EC_curve_nid2name()\fP تُحوّل \fInid\fP منحنى إلى الاسم المقابل. .SH "القيم المُرجعة" .IX Header "القيم المُرجعة" جميع دوال EC_GROUP_new* تُعيد مؤشرًا إلى المجموعة المُنشأة حديثًا، أو NULL عند الخطأ. .PP \&\fBEC_get_builtin_curves()\fP تُعيد عدد المنحنيات المدمجة المتاحة. .PP \&\fBEC_GROUP_set_curve_GFp()\fP, \fBEC_GROUP_get_curve_GFp()\fP, \fBEC_GROUP_set_curve_GF2m()\fP, \&\fBEC_GROUP_get_curve_GF2m()\fP تُعيد 1 عند النجاح أو 0 عند الخطأ. .PP \&\fBOSSL_EC_curve_nid2name()\fP تُعيد ثابت سلسلة محارف، أو NULL عند الخطأ. .SH "انظر أيضًا" .IX Header "انظر أيضًا" \&\fBcrypto\fP\|(7), \fBEC_GROUP_copy\fP\|(3), \&\fBEC_POINT_new\fP\|(3), \fBEC_POINT_add\fP\|(3), \fBEC_KEY_new\fP\|(3), \&\fBEC_GFp_simple_method\fP\|(3), \fBd2i_ECPKParameters\fP\|(3), \&\fBOSSL_LIB_CTX\fP\|(3), \fBEVP_PKEY\-EC\fP\|(7) .SH التاريخ .IX Header التاريخ \&\fBEC_GROUP_to_params()\fP أُضيفت في OpenSSL 3.2. .IP \(bu 2 \&\fBEC_GROUP_new()\fP أُهملت في OpenSSL 3.0. .Sp \&\fBEC_GROUP_new_by_curve_name_ex()\fP و \fBEC_GROUP_new_from_params()\fP أُضيفتا في OpenSSL 3.0. .IP \(bu 2 \&\fBEC_GROUP_clear_free()\fP أُهملت في OpenSSL 3.0؛ استخدم \fBEC_GROUP_free()\fP بدلاً منها. .IP \(bu 2 .Sp .Vb 3 \& EC_GROUP_set_curve_GFp()، EC_GROUP_get_curve_GFp()، \& EC_GROUP_set_curve_GF2m() و EC_GROUP_get_curve_GF2m() أُهملت في \& OpenSSL 3.0؛ استخدم EC_GROUP_set_curve() و EC_GROUP_get_curve() بدلاً منها. .Ve .SH "حقوق النسخ" .IX Header "حقوق النسخ" حقوق النشر 2013\-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 .