.\" -*- 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_DERIVE 3ssl" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH EVP_PKEY_DERIVE 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_derive_init, EVP_PKEY_derive_init_ex, EVP_PKEY_derive_set_peer_ex, EVP_PKEY_derive_set_peer, EVP_PKEY_derive, EVP_PKEY_derive_SKEY \&\- اشتقاق السر المشترك لخوارزمية المفتاح العام .SH موجز .IX Header موجز .Vb 1 \& #include \& \& int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx); \& int EVP_PKEY_derive_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); \& int EVP_PKEY_derive_set_peer_ex(EVP_PKEY_CTX *ctx, EVP_PKEY *peer, \& int validate_peer); \& int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); \& int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); \& EVP_SKEY *EVP_PKEY_derive_SKEY(EVP_PKEY_CTX *ctx, EVP_SKEYMGMT *mgmt, \& const char *key_type, const char *propquery, \& size_t keylen, const OSSL_PARAM params[]); .Ve .SH الوصف .IX Header الوصف \&\fBEVP_PKEY_derive_init()\fP يُهيئ سياق خوارزمية المفتاح العام \fIctx\fP لاشتقاق السر المشترك باستخدام الخوارزمية المُعطاة عند إنشاء السياق باستخدام \fBEVP_PKEY_CTX_new\fP\|(3) أو متغيراتها. تُستخدم الخوارزمية لجلب طريقة \fBEVP_KEYEXCH\fP ضمنيًا، انظر "الجلب الضمني" في \fBprovider\fP\|(7) لمزيد من المعلومات حول الجلب الضمني. .PP \&\fBEVP_PKEY_derive_init_ex()\fP مماثلة لـ \fBEVP_PKEY_derive_init()\fP ولكنها تُعين أيضًا المعاملات المُمررة \fIparams\fP على السياق قبل الإرجاع. .PP \&\fBEVP_PKEY_derive_set_peer_ex()\fP تُعين مفتاح النظير: سيكون هذا عادةً مفتاحًا عامًا. سيتحقق \fIvalidate_peer\fP من صحة المفتاح العام إذا كانت هذه القيمة غير صفرية. .PP \&\fBEVP_PKEY_derive_set_peer()\fP مماثلة لـ \fBEVP_PKEY_derive_set_peer_ex()\fP مع تعيين \&\fIvalidate_peer\fP إلى 1. .PP \&\fBEVP_PKEY_derive()\fP يشتق سرًا مشتركًا باستخدام \fIctx\fP. إذا كان \fIkey\fP فارغًا، فسيُكتب الحجم الأقصى للمخزن المؤقت للمخرجات إلى المعامل \&\fIkeylen\fP. إذا لم يكن \fIkey\fP فارغًا، فيجب أن يحتوي المعامل \fIkeylen\fP قبل الاستدعاء على طول المخزن المؤقت \fIkey\fP، وإذا كان الاستدعاء ناجحًا، فسيُكتب السر المشترك إلى \fIkey\fP وكمية البيانات المكتوبة إلى \fIkeylen\fP. .PP \&\fBEVP_PKEY_derive_SKEY()\fP مماثلة لـ \fBEVP_PKEY_derive()\fP ولكنها تُرجع كائن \&\fBEVP_SKEY\fP يُخزن البيانات المُعمَّاة للمفتاح المُشتق. إذا تم تمرير وسيطة \&\fBEVP_SKEYMGMT\fP، فسيتم استخدامها صراحةً لإنشاء \&\fBEVP_SKEY\fP. وإلا، فسيتم جلب كائن \fBEVP_SKEYMGMT\fP المستخدم لـ \fBEVP_SKEY\fP وفقًا لـ \fIskeymgmtname\fP و\fIpropquery\fP. إذا كان \&\fIskeymgmtname\fP فارغًا، فسيُفترض الاسم المطابق لاسم طريقة تبادل المفاتيح. .SH ملاحظات .IX Header ملاحظات بعد استدعاء \fBEVP_PKEY_derive_init()\fP، يمكن إجراء عمليات تحكم خاصة بالخوارزمية لتعيين أي معاملات مناسبة للعملية. .PP يمكن استدعاء الدالة \fBEVP_PKEY_derive()\fP أكثر من مرة على نفس السياق إذا تم إجراء عدة عمليات باستخدام نفس المعاملات. .SH "القيم المُرجعة" .IX Header "القيم المُرجعة" \&\fBEVP_PKEY_derive_init()\fP و\fBEVP_PKEY_derive()\fP تُرجعان 1 للنجاح و0 أو قيمة سالبة للفشل. على وجه الخصوص، تشير قيمة الإرجاع \-2 إلى أن العملية غير مدعومة من قبل خوارزمية المفتاح العام. .PP \&\fBEVP_PKEY_derive_SKEY()\fP تُرجع كائن \fBEVP_SKEY\fP مُنشأ حديثًا عند النجاح أو NULL عند الفشل. .SH أمثلة .IX Header أمثلة اشتقاق السر المشترك (على سبيل المثال مفاتيح DH أو EC): .PP .Vb 2 \& #include \& #include \& \& EVP_PKEY_CTX *ctx; \& ENGINE *eng; \& unsigned char *skey; \& size_t skeylen; \& EVP_PKEY *pkey, *peerkey; \& /* NB: assumes pkey, eng, peerkey have been already set up */ \& \& ctx = EVP_PKEY_CTX_new(pkey, eng); \& if (!ctx) \& /* Error occurred */ \& if (EVP_PKEY_derive_init(ctx) <= 0) \& /* Error */ \& if (EVP_PKEY_derive_set_peer(ctx, peerkey) <= 0) \& /* Error */ \& \& /* Determine buffer length */ \& if (EVP_PKEY_derive(ctx, NULL, &skeylen) <= 0) \& /* Error */ \& \& skey = OPENSSL_malloc(skeylen); \& \& if (!skey) \& /* malloc failure */ \& \& if (EVP_PKEY_derive(ctx, skey, &skeylen) <= 0) \& /* Error */ \& \& /* Shared secret is skey bytes written to buffer skey */ .Ve .SH "انظر أيضًا" .IX Header "انظر أيضًا" \&\fBEVP_PKEY_CTX_new\fP\|(3), \&\fBEVP_PKEY_encrypt\fP\|(3), \&\fBEVP_PKEY_decrypt\fP\|(3), \&\fBEVP_PKEY_sign\fP\|(3), \&\fBEVP_PKEY_verify\fP\|(3), \&\fBEVP_PKEY_verify_recover\fP\|(3), \&\fBEVP_KEYEXCH_fetch\fP\|(3) .SH التاريخ .IX Header التاريخ الدوال \fBEVP_PKEY_derive_init()\fP و\fBEVP_PKEY_derive_set_peer()\fP و\fBEVP_PKEY_derive()\fP أُضيفت أصلاً في OpenSSL 1.0.0. .PP الدوال \fBEVP_PKEY_derive_init_ex()\fP و\fBEVP_PKEY_derive_set_peer_ex()\fP أُضيفت في OpenSSL 3.0. .PP الدالة \fBEVP_PKEY_derive_SKEY()\fP أُضيفت في OpenSSL 3.6. .SH "حقوق النسخ" .IX Header "حقوق النسخ" حقوق النشر 2006\-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 .