.\" -*- 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 "EVP_PKEY_NEW 3ssl" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH EVP_PKEY_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_PKEY, EVP_PKEY_new, EVP_PKEY_up_ref, EVP_PKEY_dup, EVP_PKEY_free, EVP_PKEY_new_raw_private_key_ex, EVP_PKEY_new_raw_private_key, EVP_PKEY_new_raw_public_key_ex, EVP_PKEY_new_raw_public_key, EVP_PKEY_new_CMAC_key, EVP_PKEY_new_mac_key, EVP_PKEY_get_raw_private_key, EVP_PKEY_get_raw_public_key \\&\- دوال تخصيص المفتاح العام/الخاص ومعالجة المفتاح الخام .SH موجز .IX Header موجز .Vb 1 \& #include \& \& typedef evp_pkey_st EVP_PKEY; \& \& EVP_PKEY *EVP_PKEY_new(void); \& int EVP_PKEY_up_ref(EVP_PKEY *key); \& EVP_PKEY *EVP_PKEY_dup(EVP_PKEY *key); \& void EVP_PKEY_free(EVP_PKEY *key); \& \& EVP_PKEY *EVP_PKEY_new_raw_private_key_ex(OSSL_LIB_CTX *libctx, \& const char *keytype, \& const char *propq, \& const unsigned char *key, \& size_t keylen); \& EVP_PKEY *EVP_PKEY_new_raw_private_key(int type, ENGINE *e, \& const unsigned char *key, size_t keylen); \& EVP_PKEY *EVP_PKEY_new_raw_public_key_ex(OSSL_LIB_CTX *libctx, \& const char *keytype, \& const char *propq, \& const unsigned char *key, \& size_t keylen); \& EVP_PKEY *EVP_PKEY_new_raw_public_key(int type, ENGINE *e, \& const unsigned char *key, size_t keylen); \& EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, const unsigned char *key, \& int keylen); \& \& int EVP_PKEY_get_raw_private_key(const EVP_PKEY *pkey, unsigned char *priv, \& size_t *len); \& int EVP_PKEY_get_raw_public_key(const EVP_PKEY *pkey, unsigned char *pub, \& size_t *len); .Ve .PP الدالة التالية أصبحت مهجورة منذ OpenSSL 3.0، ويمكن إخفاؤها تمامًا عبر تعريف \fBOPENSSL_API_COMPAT\fP بقيمة إصدار مناسبة، انظر \fBopenssl_user_macros\fP\|(7): .PP .Vb 2 \& EVP_PKEY *EVP_PKEY_new_CMAC_key(ENGINE *e, const unsigned char *priv, \& size_t len, const EVP_CIPHER *cipher); .Ve .SH الوصف .IX Header الوصف \&\fBEVP_PKEY\fP هو هيكل عام لحمل أنواع متنوعة من المفاتيح غير المتماثلة (المعروفة أيضًا باسم "أزواج المفاتيح")، ويمكن استخدامه لعمليات متنوعة، مثل التوقيع، التحقق من التوقيعات، اشتقاق المفاتيح، إلخ. المفاتيح غير المتماثلة نفسها يُشار إليها غالبًا باسم "المفتاح الداخلي"، وتُعالج بواسطة الواجهات الخلفية، مثل المزودين (عبر \fBEVP_KEYMGMT\fP\|(3)) أو \fBENGINE\fP. .PP مفاهيميًا، قد يحمل المفتاح الداخلي لـ \fBEVP_PKEY\fP مفتاحًا خاصًا، أو مفتاحًا عامًا، أو كليهما (زوج مفاتيح)، وإلى جانب ذلك، معاملات المفتاح إذا كان نوع المفتاح يتطلبها. وجود هذه المكونات يُحدد العمليات التي يمكن إجراؤها؛ على سبيل المثال، يتطلب التوقيع عادةً وجود مفتاح خاص، ويتطلب التحقق عادةً وجود مفتاح عام. .PP \&\fBEVP_PKEY\fP استُخدم أيضًا لخوارزميات MAC التي صُممت لإنتاج توقيعات، على الرغم من أنها ليست خوارزميات مفاتيح عامة؛ "POLY1305"، "SIPHASH"، "HMAC"، "CMAC". يُعتبر هذا الاستخدام قديمًا ويُثبط لصالح واجهة برمجة التطبيقات \fBEVP_MAC\fP\|(3). .PP الدالة \fBEVP_PKEY_new()\fP تُخصص هيكل \fBEVP_PKEY\fP فارغ يُستخدم بواسطة OpenSSL لتخزين المفاتيح العامة والخاصة. يُضبط عدد المراجع إلى \&\fB1\fP. .PP \&\fBEVP_PKEY_up_ref()\fP تزيد عدد المراجع لـ \fIkey\fP. .PP \&\fBEVP_PKEY_dup()\fP تُكرر \fIkey\fP. يجب ألا يكون \fIkey\fP قائمًا على ENGINE أو مفتاحًا خامًا، وإلا فشلت عملية التكرار. .PP \&\fBEVP_PKEY_free()\fP تُنقص عدد المراجع لـ \fIkey\fP، وإذا كان عدد المراجع صفرًا، تُحرره. إذا كان \fIkey\fP هو NULL، لا يُفعل شيء. .PP \&\fBEVP_PKEY_new_raw_private_key_ex()\fP تُخصص \fBEVP_PKEY\fP جديد. ما لم يُستخدم محرك لنوع المفتاح، يُوجد مزود للمفتاح باستخدام سياق المكتبة \fIlibctx\fP وسلسلة استعلام الخاصية \fIpropq\fP. تشير الوسيطة \&\fIkeytype\fP إلى نوع هذا المفتاح. يجب أن تكون القيمة سلسلة محارف لخوارزمية مفتاح عام تدعم المفاتيح الخاصة الخام، على سبيل المثال، واحدة من: \&\f(CW\*(C`ED25519\*(C'\fP, \&\f(CW\*(C`ED448\*(C'\fP, \&\f(CW\*(C`X25519\*(C'\fP, \&\f(CW\*(C`X448\*(C'\fP, \&\f(CW\*(C`ML\-DSA\-44\*(C'\fP, \&\f(CW\*(C`ML\-DSA\-65\*(C'\fP, \&\f(CW\*(C`ML\-DSA\-87\*(C'\fP, \&\f(CW\*(C`ML\-KEM\-512\*(C'\fP, \&\f(CW\*(C`ML\-KEM\-768\*(C'\fP, أو \&\f(CW\*(C`ML\-KEM\-1024\*(C'\fP. يشير \&\fIkey\fP إلى بيانات المفتاح الخاص الخام لـ \fBEVP_PKEY\fP هذا والتي يجب أن تكون بطول \fIkeylen\fP. يجب أن يكون الطول مناسبًا لنوع المفتاح. تُشتق بيانات المفتاح العام آليًا من بيانات المفتاح الخاص المُعطاة (إذا كان ذلك مناسبًا لنوع الخوارزمية). .PP \&\fBEVP_PKEY_new_raw_private_key()\fP تفعل نفس ما تفعله \&\fBEVP_PKEY_new_raw_private_key_ex()\fP باستثناء استخدام سياق المكتبة المبدئي واستعلام الخاصية المبدئي بدلاً من ذلك. إذا كان \fIe\fP غير NULL، يُربط هيكل \&\fBEVP_PKEY\fP الجديد بالمحرك \fIe\fP. تشير الوسيطة \fItype\fP إلى نوع هذا المفتاح. يجب أن تكون القيمة NID لخوارزمية مفتاح عام تدعم المفاتيح الخاصة الخام، أي واحدة من \fBEVP_PKEY_X25519\fP، \&\fBEVP_PKEY_ED25519\fP، \fBEVP_PKEY_X448\fP أو \fBEVP_PKEY_ED448\fP. .PP \&\fBEVP_PKEY_new_raw_private_key_ex()\fP و \fBEVP_PKEY_new_raw_private_key()\fP قد تُستخدمان أيضًا مع معظم MACs المُنفذة كخوارزميات مفاتيح عامة، لذا تُقبل أنواع المفاتيح مثل "HMAC"، "POLY1305"، "SIPHASH"، أو شكلها NID \fBEVP_PKEY_POLY1305\fP، \&\fBEVP_PKEY_SIPHASH\fP، \fBEVP_PKEY_HMAC\fP. هذا الاستخدام، كما ذُكر أعلاه، يُثبط لصالح واجهة برمجة التطبيقات \fBEVP_MAC\fP\|(3). .PP \&\fBEVP_PKEY_new_raw_public_key_ex()\fP تعمل بنفس طريقة \&\fBEVP_PKEY_new_raw_private_key_ex()\fP باستثناء أن \fIkey\fP يشير إلى بيانات المفتاح العام الخام. يُهيأ هيكل \fBEVP_PKEY\fP دون أي معلومات مفتاح خاص. أنواع الخوارزميات التي تدعم المفاتيح العامة الخام هي \&\fBED25519\fP، \&\fBED448\fP، \&\fBX25519\fP، \&\fBX448\fP، \&\f(CW\*(C`ML\-DSA\-44\*(C'\fP, \&\f(CW\*(C`ML\-DSA\-65\*(C'\fP, \&\f(CW\*(C`ML\-DSA\-87\*(C'\fP, \&\fBML\-KEM\-512\fP، \&\fBML\-KEM\-768\fP، و \&\fBML\-KEM\-1024\fP. .PP \&\fBEVP_PKEY_new_raw_public_key()\fP تعمل بنفس طريقة \&\fBEVP_PKEY_new_raw_private_key_ex()\fP باستثناء أن \fIkey\fP يشير إلى بيانات المفتاح العام الخام. يُهيأ هيكل \fBEVP_PKEY\fP دون أي معلومات مفتاح خاص. .PP تعمل الدالة \&\fBEVP_PKEY_new_mac_key()\fP بنفس طريقة عمل \fBEVP_PKEY_new_raw_private_key()\fP. يجب على التطبيقات الجديدة استخدام \fBEVP_PKEY_new_raw_private_key()\fP بدلاً منها. .PP \&\fBEVP_PKEY_get_raw_private_key()\fP تملأ المخزن المؤقت المقدم بواسطة \fIpriv\fP ببيانات المفتاح الخاص الخام. يجب أن يكون حجم المخزن المؤقت \fIpriv\fP في \fI*len\fP عند الدخول إلى الدالة، وعند الخروج يُحدّث \fI*len\fP بعدد البايتات المكتوبة فعليًا. إذا كان المخزن المؤقت \fIpriv\fP هو NULL، فسيُملأ \fI*len\fP بعدد البايتات المطلوبة لحمل المفتاح. التطبيق المُستدعي مسؤول عن ضمان أن المخزن المؤقت كبير بما يكفي لاستقبال بيانات المفتاح الخاص. تعمل هذه الدالة فقط مع الخوارزميات التي تدعم المفاتيح الخاصة الخام. تشمل هذه: \&\fBED25519\fP، \&\fBED448\fP، \&\fBX25519\fP، \&\fBX448\fP، \&\fBHMAC\fP، \&\fBPOLY1305\fP، و \&\fBSIPHASH\fP. \&\fBEVP_PKEY_get_raw_private_key()\fP تعمل أيضًا مع مفاتيح \&\f(CW\*(C`ML\-DSA\-44\*(C'\fP، \&\f(CW\*(C`ML\-DSA\-65\*(C'\fP، \&\f(CW\*(C`ML\-DSA\-87\*(C'\fP، \&\fBML\-KEM\-512\fP، \&\fBML\-KEM\-768\fP و \&\fBML\-KEM\-1024\fP، والتي ليس لها تعيينات رقمية قديمة \fINID\fP، لكن شكلها الخام متاح مع ذلك. .PP \&\fBEVP_PKEY_get_raw_public_key()\fP تملأ المخزن المؤقت المقدم بواسطة \fIpub\fP ببيانات المفتاح العام الخام. يجب أن يكون حجم المخزن المؤقت \fIpub\fP في \fI*len\fP عند الدخول إلى الدالة، وعند الخروج يُحدّث \fI*len\fP بعدد البايتات المكتوبة فعليًا. إذا كان المخزن المؤقت \fIpub\fP هو NULL، فسيُملأ \fI*len\fP بعدد البايتات المطلوبة لحمل المفتاح. التطبيق المُستدعي مسؤول عن ضمان أن المخزن المؤقت كبير بما يكفي لاستقبال بيانات المفتاح العام. تعمل هذه الدالة فقط مع الخوارزميات التي تدعم المفاتيح العامة الخام. تشمل هذه: \&\fBED25519\fP، \&\fBED448\fP، \&\fBX25519\fP، و \&\fBX448\fP \&\fBEVP_PKEY_get_raw_public_key()\fP تعمل أيضًا مع مفاتيح \&\f(CW\*(C`ML\-DSA\-44\*(C'\fP، \&\f(CW\*(C`ML\-DSA\-65\*(C'\fP، \&\f(CW\*(C`ML\-DSA\-87\*(C'\fP، \&\fBML\-KEM\-512\fP، \&\fBML\-KEM\-768\fP و \&\fBML\-KEM\-1024\fP، والتي ليس لها تعيينات رقمية قديمة \fINID\fP، لكن شكلها الخام متاح مع ذلك. .PP \&\fBEVP_PKEY_new_CMAC_key()\fP تعمل بنفس طريقة \fBEVP_PKEY_new_raw_private_key()\fP باستثناء أنها مخصصة فقط لنوع الخوارزمية \fBEVP_PKEY_CMAC\fP. بالإضافة إلى بيانات المفتاح الخاص الخام، تأخذ أيضًا خوارزمية تعمية لاستخدامها أثناء إنشاء CMAC في وسيط \fBcipher\fP. يجب أن يكون المُعمِّي مُعمِّي تشفير قياسيًا فقط. على سبيل المثال، لا ينبغي استخدام معميات AEAD و XTS. .PP يجب على التطبيقات استخدام واجهة برمجة التطبيقات \fBEVP_MAC\fP\|(3) بدلاً من ذلك وتعيين المعامل \fBOSSL_MAC_PARAM_CIPHER\fP على كائن \fBEVP_MAC_CTX\fP باسم المُعمِّي المستخدم. .SH ملاحظات .IX Header ملاحظات يُستخدم هيكل \fBEVP_PKEY\fP بواسطة دوال OpenSSL المتنوعة التي تتطلب مفتاحًا خاصًا عامًا دون الإشارة إلى أي خوارزمية معينة. .PP الهيكل الذي تُرجعه \fBEVP_PKEY_new()\fP فارغ. لإضافة مفتاح خاص أو عام إلى هذا الهيكل الفارغ، استخدم الدوال المناسبة الموصوفة في \&\fBEVP_PKEY_set1_RSA\fP\|(3)، \fBEVP_PKEY_set1_DSA\fP\|(3)، \fBEVP_PKEY_set1_DH\fP\|(3) أو \&\fBEVP_PKEY_set1_EC_KEY\fP\|(3) لأنواع المفاتيح القديمة المنفذة في موفري OpenSSL الداخليين. .PP لأنواع المفاتيح المُدارة بالكامل بواسطة الموفّر (انظر \fBprovider\-keymgmt\fP\|(7))، والتي قد تُنفذ في موفّرين خارجيين، استخدم دوالًا مثل \&\fBEVP_PKEY_set1_encoded_public_key\fP\|(3) أو \fBEVP_PKEY_fromdata\fP\|(3) لملء بيانات المفتاح. .PP بشكل عام، يُنصح بالحذر عند استخدام هيكل \fBEVP_PKEY\fP عبر سياقات مكتبة مختلفة: لكي يُشارك \fBEVP_PKEY\fP بواسطة سياقات مكتبة متعددة، يجب أن يكون لدى الموفّرين المرتبطين بسياقات المكتبة مديرو مفاتيح يدعمون نوع المفتاح وينفذون الدوال \&\fBOSSL_FUNC_keymgmt_import()\fP و \fBOSSL_FUNC_keymgmt_export()\fP. .SH "القيم المُرجعة" .IX Header "القيم المُرجعة" \&\fBEVP_PKEY_new()\fP، \fBEVP_PKEY_new_raw_private_key()\fP، \fBEVP_PKEY_new_raw_public_key()\fP، \&\fBEVP_PKEY_new_CMAC_key()\fP و \fBEVP_PKEY_new_mac_key()\fP تُرجع إما هيكل \fBEVP_PKEY\fP المُخصص حديثًا أو NULL إذا حدث خطأ. .PP \&\fBEVP_PKEY_dup()\fP تُرجع نسخة المفتاح المكررة أو NULL إذا حدث خطأ. .PP \&\fBEVP_PKEY_up_ref()\fP، \fBEVP_PKEY_get_raw_private_key()\fP و \&\fBEVP_PKEY_get_raw_public_key()\fP تُرجع 1 للنجاح و 0 للفشل. .SH "انظر أيضًا" .IX Header "انظر أيضًا" \&\fBEVP_PKEY_set1_RSA\fP\|(3)، \&\fBEVP_PKEY_set1_DSA\fP\|(3)، \&\fBEVP_PKEY_set1_DH\fP\|(3)، \&\fBEVP_PKEY_set1_EC_KEY\fP\|(3)، \&\fBEVP_PKEY\-ED25519\fP\|(7)، \&\fBEVP_PKEY\-ED448\fP\|(7). \&\fBEVP_PKEY\-HMAC\fP\|(7)، \&\fBEVP_PKEY\-Poly1305\fP\|(7)، \&\fBEVP_PKEY\-Siphash\fP\|(7)، \&\fBEVP_PKEY\-X25519\fP\|(7)، \&\fBEVP_PKEY\-X448\fP\|(7)، \&\fBEVP_PKEY\-ML\-DSA\fP\|(7)، \&\fBEVP_PKEY\-ML\-KEM\fP\|(7). .SH التاريخ .IX Header التاريخ توجد الدالتان \&\fBEVP_PKEY_new()\fP و \fBEVP_PKEY_free()\fP في جميع إصدارات OpenSSL. .PP أُضيفت الدالة \fBEVP_PKEY_up_ref()\fP في OpenSSL 1.1.0. .PP أُضيفت الدوال \&\fBEVP_PKEY_new_raw_private_key()\fP، \fBEVP_PKEY_new_raw_public_key()\fP، \&\fBEVP_PKEY_new_CMAC_key()\fP، \fBEVP_PKEY_new_raw_private_key()\fP و \&\fBEVP_PKEY_get_raw_public_key()\fP في OpenSSL 1.1.1. .PP أُضيفت الدوال \fBEVP_PKEY_dup()\fP، \fBEVP_PKEY_new_raw_private_key_ex()\fP، و \&\fBEVP_PKEY_new_raw_public_key_ex()\fP في OpenSSL 3.0. .PP أُهملت \fBEVP_PKEY_new_CMAC_key()\fP في OpenSSL 3.0. .PP عُدلت وثائق \fBEVP_PKEY\fP في OpenSSL 3.0 للسماح بوجود الجزء الخاص من زوج المفاتيح دون الجزء العام، حيث كان هذا مُضمنًا سابقًا على أنه غير مسموح به. .PP أُضيف دعم لـ \fBML\-DSA\fP و \fBML\-KEM\fP في الإصدار 3.5 من OpenSSL. .SH "حقوق النسخ" .IX Header "حقوق النسخ" حقوق النشر 2002\-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 .