.\" -*- 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_SIGNINIT 3ssl" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH EVP_SIGNINIT 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_SignInit, EVP_SignInit_ex, EVP_SignUpdate, EVP_SignFinal_ex, EVP_SignFinal \\&\- دوال التوقيع لـ EVP .SH موجز .IX Header موجز .Vb 1 \& #include \& \& int EVP_SignInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl); \& int EVP_SignUpdate(EVP_MD_CTX *ctx, const void *d, unsigned int cnt); \& int EVP_SignFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, \& EVP_PKEY *pkey, OSSL_LIB_CTX *libctx, const char *propq); \& int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *sig, unsigned int *s, \& EVP_PKEY *pkey); \& \& void EVP_SignInit(EVP_MD_CTX *ctx, const EVP_MD *type); .Ve .SH الوصف .IX Header الوصف إجراءات التوقيع لـ EVP هي واجهة عالية المستوى للتوقيعات الرقمية. .PP \&\fBEVP_SignInit_ex()\fP تُهيئ سياق التوقيع \fIctx\fP لاستخدام المُعمِّي \\&\fItype\fP من \fBENGINE\fP \fIimpl\fP. يجب إنشاء \fIctx\fP باستخدام \\&\fBEVP_MD_CTX_new()\fP قبل استدعاء هذه الدالة. .PP \&\fBEVP_SignUpdate()\fP يُعمي \fIcnt\fP بايت من البيانات عند \fId\fP في سياق التوقيع \fIctx\fP. يمكن استدعاء هذه الدالة عدة مرات على نفس \fIctx\fP لتضمين بيانات إضافية. .PP \&\fBEVP_SignFinal_ex()\fP يُوقع البيانات في \fIctx\fP باستخدام المفتاح الخاص \\&\fIpkey\fP ويضع التوقيع في \fIsig\fP. يُستخدم سياق المكتبة \fIlibctx\fP واستعلام الخاصية \fIpropq\fP عند إنشاء سياق لاستخدامه مع المفتاح \\&\fIpkey\fP. يجب أن يكون حجم \fIsig\fP على الأقل \f(CWEVP_PKEY_get_size(pkey)\fP بايت. \\&\fIs\fP هو معامل إخراج، ولا يُستخدم كمعامل إدخال. سيُكتب عدد بايتات البيانات المكتوبة (أي طول التوقيع) إلى العدد الصحيح عند \fIs\fP، وسيُكتب على الأكثر \f(CWEVP_PKEY_get_size(pkey)\fP بايت. .PP \&\fBEVP_SignFinal()\fP مشابه لـ \fBEVP_SignFinal_ex()\fP لكنه يستخدم قيمًا مبدئية NULL لسياق المكتبة \fIlibctx\fP واستعلام الخاصية \fIpropq\fP. .PP \&\fBEVP_SignInit()\fP يُهيئ سياق توقيع \fIctx\fP لاستخدام التنفيذ المبدئي للمُعمِّي \fItype\fP. .SH "القيم المُرجعة" .IX Header "القيم المُرجعة" \&\fBEVP_SignInit_ex()\fP، \fBEVP_SignUpdate()\fP، \fBEVP_SignFinal_ex()\fP و \\&\fBEVP_SignFinal()\fP تُرجع 1 للنجاح و 0 للفشل. .PP يمكن الحصول على رموز الخطأ بواسطة \fBERR_get_error\fP\|(3). .SH ملاحظات .IX Header ملاحظات ينبغي دائمًا استخدام واجهة \fBEVP\fP للتواقيع الرقمية بدلاً من الواجهات منخفضة المستوى. هذا لأن الكود يصبح حينها شفافًا للخوارزمية المستخدمة وأكثر مرونة بكثير. .PP عند التوقيع ببعض أنواع المفاتيح الخاصة، يجب تغذية مولد الأرقام العشوائية. إذا فشلت التغذية الآلية أو إعادة التغذية لـ CSPRNG الخاص بـ OpenSSL بسبب ظروف خارجية (انظر \fBRAND\fP\|(7))، ستفشل العملية. .PP استدعاء \fBEVP_SignFinal()\fP يُنهي داخليًا نسخة من سياق المُعمِّي. هذا يعني أن استدعاءات \fBEVP_SignUpdate()\fP و \fBEVP_SignFinal()\fP يمكن استدعاؤها لاحقًا لتعمية وتوقيع بيانات إضافية. يمكن للتطبيقات تعطيل هذا السلوك بتعيين علم السياق EVP_MD_CTX_FLAG_FINALISE عبر \\&\fBEVP_MD_CTX_set_flags\fP\|(3). .PP بما أن نسخة فقط من سياق الملخص (digest context) هي التي تُنهى (finalized)، فيجب تنظيف السياق بعد الاستخدام عبر استدعاء \fBEVP_MD_CTX_free()\fP، وإلا سيحدث تسريب في الذاكرة. .PP لاحظ أنه ليست كل المزودات تدعم الاستمرار، في حال عدم السماح للمزود المختار بتكرار السياقات، سينهي \fBEVP_SignFinal()\fP سياق المُعمِّي وستؤدي محاولة معالجة بيانات إضافية عبر \\&\fBEVP_SignUpdate()\fP إلى خطأ. .SH العلل .IX Header العلل ذكرت الإصدارات الأقدم من هذا التوثيق خطأً أنه لا يمكن إجراء استدعاءات لـ \\&\fBEVP_SignUpdate()\fP بعد استدعاء \fBEVP_SignFinal()\fP. .PP بما أن المفتاح الخاص يُمرر في استدعاء \fBEVP_SignFinal()\fP، فلن يُشار إلى أي خطأ يتعلق بالمفتاح الخاص (مثل تركيبة غير مناسبة للمفتاح والمُعمِّي) إلا بعد تمرير كميات كبيرة محتملة من البيانات عبر \fBEVP_SignUpdate()\fP. .PP لا يمكن تغيير معطيات التوقيع باستخدام هذه الدوال. .PP الخطآن السابقان تم إصلاحهما في دوال EVP_DigestSign*() الأحدث. .SH "انظر أيضًا" .IX Header "انظر أيضًا" \&\fBEVP_PKEY_get_size\fP\|(3)، \fBEVP_PKEY_get_bits\fP\|(3)، \\&\fBEVP_PKEY_get_security_bits\fP\|(3)، \\&\fBEVP_VerifyInit\fP\|(3)، \\&\fBEVP_DigestInit\fP\|(3)، \\&\fBevp\fP\|(7)، \fBHMAC\fP\|(3)، \fBMD2\fP\|(3)، \\&\fBMD5\fP\|(3)، \fBMDC2\fP\|(3)، \fBRIPEMD160\fP\|(3)، \\&\fBSHA1\fP\|(3)، \fBopenssl\-dgst\fP\|(1) .SH التاريخ .IX Header التاريخ أُضيفت الدالة \fBEVP_SignFinal_ex()\fP في OpenSSL 3.0. .SH "حقوق النسخ" .IX Header "حقوق النسخ" حقوق النشر 2000\-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 .