.\" -*- 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_KEY_NEW 3ssl" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH EC_KEY_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 الاسم EVP_EC_gen, EC_KEY_get_method, EC_KEY_set_method, EC_KEY_new_ex, EC_KEY_new, EC_KEY_get_flags, EC_KEY_set_flags, EC_KEY_clear_flags, EC_KEY_new_by_curve_name_ex, EC_KEY_new_by_curve_name, EC_KEY_free, EC_KEY_copy, EC_KEY_dup, EC_KEY_up_ref, EC_KEY_get0_engine, EC_KEY_get0_group, EC_KEY_set_group, EC_KEY_get0_private_key, EC_KEY_set_private_key, EC_KEY_get0_public_key, EC_KEY_set_public_key, EC_KEY_get_conv_form, EC_KEY_set_conv_form, EC_KEY_set_asn1_flag, EC_KEY_decoded_from_explicit_params, EC_KEY_precompute_mult, EC_KEY_generate_key, EC_KEY_check_key, EC_KEY_set_public_key_affine_coordinates, EC_KEY_oct2key, EC_KEY_key2buf, EC_KEY_oct2priv, EC_KEY_priv2oct, EC_KEY_priv2buf \- دوال لإنشاء وتدمير ومعالجة كائنات EC_KEY .SH موجز .IX Header موجز .Vb 1 \& #include \& \& EVP_PKEY *EVP_EC_gen(const char *curve); .Ve .PP الدوال التالية أصبحت مهجورة منذ OpenSSL 3.0، ويمكن إخفاؤها تماماً عن طريق تعريف \fBOPENSSL_API_COMPAT\fP بقيمة إصدار مناسبة، انظر \fBopenssl_user_macros\fP\|(7): .PP .Vb 10 \& EC_KEY *EC_KEY_new_ex(OSSL_LIB_CTX *ctx, const char *propq); \& EC_KEY *EC_KEY_new(void); \& int EC_KEY_get_flags(const EC_KEY *key); \& void EC_KEY_set_flags(EC_KEY *key, int flags); \& void EC_KEY_clear_flags(EC_KEY *key, int flags); \& EC_KEY *EC_KEY_new_by_curve_name_ex(OSSL_LIB_CTX *ctx, const char *propq, \& int nid); \& EC_KEY *EC_KEY_new_by_curve_name(int nid); \& void EC_KEY_free(EC_KEY *key); \& EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src); \& EC_KEY *EC_KEY_dup(const EC_KEY *src); \& int EC_KEY_up_ref(EC_KEY *key); \& ENGINE *EC_KEY_get0_engine(const EC_KEY *eckey); \& const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key); \& int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group); \& const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key); \& int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *priv_key); \& const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key); \& int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); \& point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); \& void EC_KEY_set_conv_form(EC_KEY *eckey, point_conversion_form_t cform); \& void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag); \& int EC_KEY_decoded_from_explicit_params(const EC_KEY *key); \& int EC_KEY_generate_key(EC_KEY *key); \& int EC_KEY_check_key(const EC_KEY *key); \& int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, BIGNUM *x, BIGNUM *y); \& const EC_KEY_METHOD *EC_KEY_get_method(const EC_KEY *key); \& int EC_KEY_set_method(EC_KEY *key, const EC_KEY_METHOD *meth); \& \& int EC_KEY_oct2key(EC_KEY *eckey, const unsigned char *buf, size_t len, BN_CTX *ctx); \& size_t EC_KEY_key2buf(const EC_KEY *eckey, point_conversion_form_t form, \& unsigned char **pbuf, BN_CTX *ctx); \& \& int EC_KEY_oct2priv(EC_KEY *eckey, const unsigned char *buf, size_t len); \& size_t EC_KEY_priv2oct(const EC_KEY *eckey, unsigned char *buf, size_t len); \& \& size_t EC_KEY_priv2buf(const EC_KEY *eckey, unsigned char **pbuf); \& int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx); .Ve .SH الوصف .IX Header الوصف تولد \&\fBEVP_EC_gen()\fP زوج مفاتيح EC جديد على \fIcurve\fP المعطى. .PP جميع الدوال الموصوفة أدناه مهملة. يجب على التطبيقات استخدام \fBEVP_EC_gen()\fP، أو \fBEVP_PKEY_Q_keygen\fP|(3)، أو \&\fBEVP_PKEY_keygen_init\fP|(3) و \fBEVP_PKEY_keygen\fP|(3) بدلاً من ذلك. .PP يمثل EC_KEY مفتاحاً عاماً، واختيارياً، المفتاح الخاص المرتبط. يمكن إنشاء EC_KEY جديد بدون منحنى مرتبط باستدعاء \&\fBEC_KEY_new_ex()\fP وتحديد سياق المكتبة المرتبط في \fIctx\fP (انظر \fBOSSL_LIB_CTX\fP\) وسلسلة استعلام الخاصية \fIpropq\fP. قد يكون المعامل \fIctx\fP NULL، وفي هذه الحالة يُستخدم سياق المكتبة المبدئي. يُضبط عدد المراجع للكائن EC_KEY المُنشأ حديثاً مبدئياً إلى 1. يمكن ربط منحنى بـ EC_KEY باستدعاء \&\fBEC_KEY_set_group()\fP. .PP \&\fBEC_KEY_new()\fP مماثل لـ \fBEC_KEY_new_ex()\fP باستثناء أن سياق المكتبة المبدئي يُستخدم دائماً. .PP بدلاً من ذلك، يمكن إنشاء EC_KEY جديد باستدعاء \fBEC_KEY_new_by_curve_name_ex()\fP وتوفير nid للمنحنى المرتبط، وسياق المكتبة المراد استخدامه \fIctx\fP (انظر \fBOSSL_LIB_CTX\fP\|(3)) وأي سلسلة استعلام خاصية \fIpropq\fP. قد يكون المعامل \fIctx\fP NULL، وفي هذه الحالة يُستخدم سياق المكتبة المبدئي. قد تكون قيمة \fIpropq\fP NULL أيضاً. انظر \fBEC_GROUP_new\fP\|(3) لوصف أسماء المنحنيات. تغلف هذه الدالة ببساطة استدعاءات لـ\fBEC_KEY_new_ex()\fP و \fBEC_GROUP_new_by_curve_name_ex()\fP. .PP \fBEC_KEY_new_by_curve_name()\fP مماثل لـ \fBEC_KEY_new_by_curve_name_ex()\fP باستثناء أن سياق المكتبة المبدئي يُستخدم دائماً وسلسلة استعلام خاصية NULL. .PP يقلل استدعاء \fBEC_KEY_free()\fP عدد المراجع لكائن EC_KEY، وإذا انخفض إلى الصفر، يُحرر الذاكرة المرتبطة به. إذا كان \fIkey\fP NULL، لا يُفعل شيء. .PP ينسخ \fBEC_KEY_copy()\fP محتويات EC_KEY في \fIsrc\fP إلى \fIdest\fP. .PP ينشئ \fBEC_KEY_dup()\fP كائن EC_KEY جديد وينسخ \fIec_key\fP إليه. .PP يزيد \fBEC_KEY_up_ref()\fP عدد المراجع المرتبط بكائن EC_KEY. .PP يعيد \fBEC_KEY_get0_engine()\fP مقبضاً إلى ENGINE الذي وُضع لهذا الكائن EC_KEY. .PP يولد \&\fBEC_KEY_generate_key()\fP مفتاحاً عاماً وخاصاً جديدين لكائن \&\fIeckey\fP المزود. يجب أن يكون لكائن \fIeckey\fPكائن EC_GROUP مرتبط به قبل استدعاء هذه الدالة. المفتاح الخاص هو عدد صحيح عشوائي (ترتيب < priv_key < 0، حيث \fIorder\fP هو ترتيب كائن EC_GROUP). المفتاح العام هو نقطة EC_POINT على المنحنى تُحسب بضرب المولد للمنحنى في المفتاح الخاص. .PP يجري \fBEC_KEY_check_key()\fP فحوصات سلامة متنوعة على كائن EC_KEY لتأكيد صحته. .PP \&\fBEC_KEY_set_public_key_affine_coordinates()\fP يضبط المفتاح العمومي لـ \fIkey\fP استنادًا إلى إحداثياته التقاربية؛ أي أنه ينشئ كائن EC_POINT بناءً على قيمتي \fIx\fP و\fIy\fP المقدمتين ويضبط المفتاح العمومي ليكون هذا EC_POINT. كما يجري فحوصات سلامة معينة على المفتاح لتأكيد صحته. .PP الدوال \fBEC_KEY_get0_group()\fP و\fBEC_KEY_set_group()\fP و\&\fBEC_KEY_get0_private_key()\fP و\fBEC_KEY_set_private_key()\fP و\fBEC_KEY_get0_public_key()\fP و\fBEC_KEY_set_public_key()\fP تحصل وتضبط كائن EC_GROUP والمفتاح الخاص والمفتاح العمومي EC_POINT لـ \fBkey\fP على التوالي. الدالة \&\fBEC_KEY_set_private_key()\fP تقبل NULL كوسيطة priv_key لمسح مكون المفتاح الخاص من EC_KEY بشكل آمن. .PP الدالتان \fBEC_KEY_get_conv_form()\fP و \fBEC_KEY_set_conv_form()\fP تجلبان وتضبطان point_conversion_form للمفتاح \fIkey\fP. لوصف point_conversion_forms، انظر \fBEC_POINT_new\fP\|(3). .PP \&\fBEC_KEY_set_flags()\fP تضبط الأعلام في المعامل \fIflags\fP على كائن EC_KEY. أي أعلام مضبوطة بالفعل تُترك مضبوطة. الأعلام المعرفة حالياً هي EC_FLAG_NON_FIPS_ALLOW و EC_FLAG_FIPS_CHECKED. بالإضافة إلى ذلك، يوجد العلم EC_FLAG_COFACTOR_ECDH الخاص بـ ECDH. \&\fBEC_KEY_get_flags()\fP تُرجع الأعلام الحالية المضبوطة لهذا EC_KEY. \&\fBEC_KEY_clear_flags()\fP تمسح الأعلام المشار إليها بالمعامل \fIflags\fP؛ جميع الأعلام الأخرى تُترك في حالتها الحالية. .PP \&\fBEC_KEY_set_asn1_flag()\fP تضبط asn1_flag على كائن EC_GROUP الأساسي (إذا كان مضبوطاً). راجع \fBEC_GROUP_copy\fP\|(3) لمزيد من المعلومات حول asn1_flag. .PP \&\fBEC_KEY_decoded_from_explicit_params()\fP تُرجع 1 إذا فُك تشفير مجموعة المفتاح \fIkey\fP من بيانات بمعاملات مجموعة مشفرة صراحةً، و \-1 إذا كان المفتاح \fIkey\fP NULL أو معاملات المجموعة مفقودة، و 0 خلاف ذلك. .PP \&\fBEC_KEY_precompute_mult()\fP تخزن مضاعفات مولد EC_GROUP الأساسي لضرب نقاط أسرع. انظر أيضاً \fBEC_POINT_add\fP\|(3). يجب على الإصدارات الحديثة بدلاً من ذلك التبديل إلى المنحنيات المسماة التي لدى OpenSSL جداول بحث مشفرة لها. .PP \&\fBEC_KEY_oct2key()\fP و \fBEC_KEY_key2buf()\fP متطابقتان مع الدالتين \&\fBEC_POINT_oct2point()\fP و \fBEC_POINT_point2buf()\fP باستثناء أنهما تستخدمان المفتاح العام EC_POINT في \fIeckey\fP. .PP \&\fBEC_KEY_oct2priv()\fP و \fBEC_KEY_priv2oct()\fP تحولان بين مكون المفتاح الخاص لـ \fIeckey\fP والشكل الثماني. الشكل الثماني يتكون من ثمانيات المحتوى لسلسلة OCTET STRING الخاصة بـ \fIprivateKey\fP في بنية \fIECPrivateKey\fP ASN.1. .PP يجب تزويد الدالة \fBEC_KEY_priv2oct()\fP بمخزن طويل بما يكفي لتخزين الشكل الثماني. قيمة الإرجاع توفر عدد الثمانيات المخزنة. استدعاء الدالة بمخزن NULL لن يُجري التحويل بل سيعيد فقط طول المخزن المطلوب. .PP الدالة \fBEC_KEY_priv2buf()\fP تخصص مخزناً بطول مناسب وتكتب EC_KEY فيه بالشكل الثماني. يُكتب المخزن المخصص إلى \fI*pbuf\fP ويُعاد طوله. يجب على المستدعي تحرير المخزن المخصص باستدعاء \fBOPENSSL_free()\fP. نظراً لأن قيمة المخزن المخصص تُكتب إلى \fI*pbuf\fP، فإن المعامل \fIpbuf\fP \fBيجب ألا\fP يكون \fBNULL\fP. .PP \&\fBEC_KEY_priv2buf()\fP تحول مفتاحاً خاصاً لـ EC_KEY إلى مخزن مخصص. .SH "القيم المُرجعة" .IX Header "القيم المُرجعة" \&\fBEC_KEY_new_ex()\fP، \fBEC_KEY_new()\fP، \fBEC_KEY_new_by_curve_name_ex()\fP، \&\fBEC_KEY_new_by_curve_name()\fP و \fBEC_KEY_dup()\fP تُرجع مؤشراً إلى كائن EC_KEY المنشأ حديثاً، أو NULL عند الخطأ. .PP \&\fBEC_KEY_get_flags()\fP تُرجع الأعلام المرتبطة بكائن EC_KEY كعدد صحيح. .PP \&\fBEC_KEY_copy()\fP تُرجع مؤشراً إلى المفتاح الوجهة، أو NULL عند الخطأ. .PP \&\fBEC_KEY_get0_engine()\fP تُرجع مؤشراً إلى ENGINE، أو NULL إذا لم يُضبط. .PP \&\fBEC_KEY_up_ref()\fP، \fBEC_KEY_set_group()\fP، \fBEC_KEY_set_public_key()\fP، \&\fBEC_KEY_precompute_mult()\fP، \fBEC_KEY_generate_key()\fP، \fBEC_KEY_check_key()\fP، \&\fBEC_KEY_set_public_key_affine_coordinates()\fP، \fBEC_KEY_oct2key()\fP و \&\fBEC_KEY_oct2priv()\fP تُرجع 1 عند النجاح أو 0 عند الخطأ. .PP \&\fBEC_KEY_set_private_key()\fP تُرجع 1 عند النجاح أو 0 عند الخطأ باستثناء عندما تكون وسيطة priv_key NULL، في تلك الحالة تُرجع 0، للتوافق القديم، ولا ينبغي معاملتها كخطأ. .PP \&\fBEC_KEY_get0_group()\fP تُرجع EC_GROUP المرتبط بـ EC_KEY. .PP \&\fBEC_KEY_get0_private_key()\fP تُرجع المفتاح الخاص المرتبط بـ EC_KEY. .PP \&\fBEC_KEY_get_conv_form()\fP تُرجع point_conversion_form لـ EC_KEY. .PP \&\fBEC_KEY_key2buf()\fP، \fBEC_KEY_priv2oct()\fP و \fBEC_KEY_priv2buf()\fP تُرجع طول المخزن أو 0 عند الخطأ. .SH "انظر أيضًا" .IX Header "انظر أيضًا" \&\fBEVP_PKEY_Q_keygen\fP\|(3) \&\fBcrypto\fP\|(7), \fBEC_GROUP_new\fP\|(3), \&\fBEC_GROUP_copy\fP\|(3), \fBEC_POINT_new\fP\|(3), \&\fBEC_POINT_add\fP\|(3), \&\fBEC_GFp_simple_method\fP\|(3), \&\fBd2i_ECPKParameters\fP\|(3), \&\fBOSSL_LIB_CTX\fP\|(3) .SH التاريخ .IX Header التاريخ أُضيفت \&\fBEVP_EC_gen()\fP في OpenSSL 3.0. أُهملت جميع الدوال الأخرى الموصوفة هنا في OpenSSL 3.0. للاستبدال، انظر \fBEVP_PKEY\-EC\fP\|(7). .SH "حقوق النسخ" .IX Header "حقوق النسخ" حقوق النشر 2013\-2023 لمؤلفي مشروع 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 .