.\" -*- 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_VERIFY 3ssl" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH EVP_PKEY_VERIFY 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_verify_init, EVP_PKEY_verify_init_ex, EVP_PKEY_verify_init_ex2, EVP_PKEY_verify, EVP_PKEY_verify_message_init, EVP_PKEY_verify_message_update, EVP_PKEY_verify_message_final, EVP_PKEY_CTX_set_signature \- التحقق من التوقيع باستخدام خوارزمية مفتاح عمومي .SH موجز .IX Header موجز .Vb 1 \& #include \& \& int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx); \& int EVP_PKEY_verify_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); \& int EVP_PKEY_verify_init_ex2(EVP_PKEY_CTX *ctx, EVP_SIGNATURE *algo, \& const OSSL_PARAM params[]); \& int EVP_PKEY_verify_message_init(EVP_PKEY_CTX *ctx, EVP_SIGNATURE *algo, \& const OSSL_PARAM params[]); \& int EVP_PKEY_CTX_set_signature(EVP_PKEY_CTX *pctx, \& const unsigned char *sig, size_t siglen); \& int EVP_PKEY_verify_message_update(EVP_PKEY_CTX *ctx, \& unsigned char *in, size_t inlen); \& int EVP_PKEY_verify_message_final(EVP_PKEY_CTX *ctx); \& int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, \& const unsigned char *sig, size_t siglen, \& const unsigned char *tbs, size_t tbslen); .Ve .SH الوصف .IX Header الوصف \&\fBEVP_PKEY_verify_init()\fP يُهيئ سياق خوارزمية مفتاح عمومي \fIctx\fP للتحقق باستخدام الخوارزمية المُعطاة عند إنشاء السياق باستخدام \fBEVP_PKEY_CTX_new\fP\|(3) أو متغيراتها. تُستخدم الخوارزمية لجلب طريقة \fBEVP_SIGNATURE\fP ضمنيًا، انظر "الجلب الضمني" في \fBprovider\fP\|(7) لمزيد من المعلومات حول الجلب الضمني. .PP \&\fBEVP_PKEY_verify_init_ex()\fP هو نفسه \fBEVP_PKEY_verify_init()\fP لكنه يضبط بالإضافة إلى ذلك المُعاملات المُمررة \fIparams\fP على السياق قبل الإرجاع. .PP \&\fBEVP_PKEY_verify_init_ex2()\fP هو نفسه \fBEVP_PKEY_verify_init_ex()\fP، لكنه يعمل مع \fBEVP_SIGNATURE\fP \fIalgo\fP مأخوذ بشكل صريح. لا يمكن استخدام سياق \fIctx\fP بدون مفتاح مُحمّل مسبقًا مع هذه الدالة. اعتمادًا على الخوارزمية المأخوذة، قد تكون بعض التفاصيل المتعلقة بمعالجة المُدخل إلى \fBEVP_PKEY_verify()\fP محددة مسبقًا، وفي هذه الحالة، لا يمكن تغيير تلك التفاصيل عادةً. انظر "ملاحظات" أدناه لشرح أعمق. .PP \&\fBEVP_PKEY_verify_message_init()\fP يُهيئ سياق خوارزمية مفتاح عمومي \&\fIctx\fP للتحقق من رسالة غير محدودة الحجم باستخدام الخوارزمية المُعطاة بواسطة \&\fIalgo\fP والمفتاح المُعطى عبر \fBEVP_PKEY_CTX_new\fP\|(3) أو \&\fBEVP_PKEY_CTX_new_from_pkey\fP\|(3). يُدعم تمرير الرسالة بطريقة لمرة واحدة باستخدام \&\fBEVP_PKEY_verify()\fP، وعبر الجمع بين \&\fBEVP_PKEY_verify_message_update()\fP و \fBEVP_PKEY_verify_message_final()\fP. تُتيح هذه الدالة استخدام الخوارزميات التي يمكنها معالجة مُدخل بطول عشوائي، مثل ED25519 و RSA\-SHA256 وما شابه. .PP \&\fBEVP_PKEY_CTX_set_signature()\fP يُحدد التوقيع \&\fIsig\fP بطول \fIsiglen\fP بايت الذي يُتحقق منه بواسطة \fBEVP_PKEY_verify_message_final()\fP. \fIيجب\fP استخدامه مع \fBEVP_PKEY_verify_message_update()\fP و \&\fBEVP_PKEY_verify_message_final()\fP. انظر "ملاحظات" أدناه لشرح أعمق. .PP \&\fBEVP_PKEY_verify_message_update()\fP يُضيف \fIinlen\fP بايت من \fIin\fP إلى البيانات التي تُعالج للتحقق. تُحدد مواصفات وتنفيذ خوارزمية التوقيع كيفية معالجة بايتات المُدخل وما إذا كان هناك حد للحجم الكلي للمُدخل. انظر "ملاحظات" أدناه لشرح أعمق. .PP \&\fBEVP_PKEY_verify_message_final()\fP يتحقق من البيانات المُعالجة، معطى فقط \fIctx\fP. يجب أن يكون التوقيع المُتحقق منه قد أُعطي مع \&\fBEVP_PKEY_CTX_set_signature()\fP. .PP \&\fBEVP_PKEY_verify()\fP هي دالة لمرة واحدة تؤدي نفس الشيء كاستدعاء \&\fBEVP_PKEY_CTX_set_signature()\fP مع \fIsig\fP و \fIsiglen\fP كمُعاملات، يليه استدعاء واحد \fBEVP_PKEY_verify_message_update()\fP مع \fItbs\fP و \&\fItbslen\fP، يليه استدعاء \fBEVP_PKEY_verify_message_final()\fP. .SH ملاحظات .IX Header ملاحظات .SS عام .IX Subsection عام بعض تطبيقات التوقيع تُجمّع بيانات المُدخل فقط ولا تُجري معالجة إضافية قبل التحقق منها (تتوقع أن يكون المُدخل ملخصًا)، بينما تضغط أخرى البيانات، عادةً بإنتاج ملخص داخليًا، وتوقع النتيجة، التي تُتحقق منها بعد ذلك مقابل توقيع معطى. بعضها يدعم كلا وضعي التشغيل في نفس الوقت. يُتوقع من المُستدعي معرفة كيف يجب أن تتصرف الخوارزمية المُختارة وتحت أي ظروف. .PP على سبيل المثال، يمكن توقع أن تطبيق RSA يتوقع فقط ملخصًا كمُدخل، بينما يمكن توقع أن ED25519 يعالج المُدخل بتجزئة، أي إنتاج الملخص داخليًا، وبينما يمكن توقع أن RSA\-SHA256 يتعامل مع أي من وضعي التشغيل، اعتمادًا على ما إذا كانت العملية قد هُيئت باستخدام \fBEVP_PKEY_verify_init_ex2()\fP أو باستخدام \fBEVP_PKEY_verify_message_init()\fP. .PP بالمثل، يتوقع تنفيذ RSA عادةً ضبط تفاصيل إضافية، مثل خوارزمية خلاصة الرسالة التي يُفترض معالجة الإدخال بها، بالإضافة إلى وضع الحشو (padding) (انظر \fBEVP_PKEY_CTX_set_signature_md\fP\|(3) و \&\fBEVP_PKEY_CTX_set_rsa_padding\fP\|(3) وغيرها من الوظائف المماثلة)، بينما يحتوي تنفيذ RSA\-SHA256 عادةً على هذه التفاصيل محددة مسبقاً وغير قابلة للتغيير. .PP لا يمكن استخدام الدوال الموصوفة هنا لدمج خوارزميات منفصلة. على وجه الخصوص، لا يمكن استخدام \fBEVP_PKEY_CTX_set_signature_md\fP\|(3) ولا المُعامل \fBOSSL_PARAM\fP "digest" (\fBOSSL_SIGNATURE_PARAM_DIGEST\fP) لدمج خوارزمية توقيع مع خوارزمية تجزئة لمعالجة المُدخل. بعبارة أخرى، لا يمكن تحديد \fIctx\fP مُحمّل مسبقًا بمفتاح RSA، أو \fIalgo\fP جلب \f(CW\*(C`RSA\*(C'\fP ومحاولة تحديد SHA256 بشكل منفصل للحصول على وظيفة RSA\-SHA256. إذا كان دمج الخوارزميات بهذه الطريقة مرغوبًا، يُرجى استخدام \fBEVP_DigestVerifyInit\fP\|(3) والدوال المرتبطة، أو \&\fBEVP_VerifyInit\fP\|(3) والدوال المرتبطة. .SS "إجراء عمليات تحقق متعددة" .IX Subsection "إجراء عمليات تحقق متعددة" عند التهيئة باستخدام \fBEVP_PKEY_verify_init_ex()\fP أو \fBEVP_PKEY_verify_init_ex2()\fP، يمكن استدعاء \&\fBEVP_PKEY_verify()\fP أكثر من مرة على نفس السياق لإجراء عدة عمليات لمرة واحدة باستخدام نفس المُعاملات. .PP عند التهيئة باستخدام \fBEVP_PKEY_verify_message_init()\fP، لا يمكن استدعاء \fBEVP_PKEY_verify()\fP عدة مرات. .SS "حول EVP_PKEY_CTX_set_signature()" .IX Subsection "حول EVP_PKEY_CTX_set_signature()" بعض خوارزميات التوقيع (مثل LMS) تتطلب تحديد بيانات التحقق من التوقيع قبل التحقق من الرسالة. تسمح خوارزميات أخرى بتحديد التوقيع متأخرًا. للسماح بأي من الطريقتين (والتي قد تعتمد على تدفق المُدخل للتطبيق)، \fIيجب\fP تحديد التوقيع المُتحقق منه باستخدام هذه الدالة عند استخدام \fBEVP_PKEY_verify_message_update()\fP و \fBEVP_PKEY_verify_message_final()\fP لإجراء التحقق. .SH "القيم المُرجعة" .IX Header "القيم المُرجعة" ترجع جميع الدوال 1 عند النجاح و0 أو قيمة سالبة عند الفشل. ومع ذلك، على عكس الدوال الأخرى، تشير القيمة الراجعة 0 من \fBEVP_PKEY_verify()\fP و\&\fBEVP_PKEY_verify_recover()\fP و\fBEVP_PKEY_verify_message_final()\fP فقط إلى أن التوقيع لم يُتحقق بنجاح (أي أن tbs لم يطابق البيانات الأصلية أو أن التوقيع كان بشكل غير صحيح) وليست دلالة على خطأ أكثر خطورة. .PP تشير القيمة السالبة إلى خطأ غير فشل التحقق من التوقيع. على وجه الخصوص، تشير القيمة الراجعة \-2 إلى أن العملية غير مدعومة من خوارزمية المفتاح العام. .SH أمثلة .IX Header أمثلة .SS "RSA مع حشوة PKCS#1 لـ SHA256" .IX Subsection "RSA مع حشوة PKCS#1 لـ SHA256" تحقق من التوقيع باستخدام حشو PKCS#1 ومستخلص SHA256 كمدخل: .PP .Vb 2 \& #include \& #include \& \& EVP_PKEY_CTX *ctx; \& unsigned char *md, *sig; \& size_t mdlen, siglen; \& EVP_PKEY *verify_key; \& \& /* \& * NB: assumes verify_key, sig, siglen md and mdlen are already set up \& * and that verify_key is an RSA public key \& */ \& ctx = EVP_PKEY_CTX_new(verify_key, NULL /* no engine */); \& if (ctx == NULL) \& /* Error occurred */ \& if (EVP_PKEY_verify_init(ctx) <= 0) \& /* Error */ \& if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PADDING) <= 0) \& /* Error */ \& if (EVP_PKEY_CTX_set_signature_md(ctx, EVP_sha256()) <= 0) \& /* Error */ \& \& /* Perform operation */ \& ret = EVP_PKEY_verify(ctx, sig, siglen, md, mdlen); \& \& /* \& * ret == 1 indicates success, 0 verify failure and < 0 for some \& * other error. \& */ .Ve .SS "RSA\-SHA256 مع ملخص محسوب مسبقًا" .IX Subsection "RSA\-SHA256 مع ملخص محسوب مسبقًا" تحقق من مستخلص باستخدام RSA\-SHA256 باستخدام دوال اللقطة الواحدة. يُلاحظ أن RSA\-SHA256 يُفترض أن يكون تنفيذًا لـ \f(CW\*(C`sha256WithRSAEncryption\*(C'\fP، حيث يكون الحشو محددًا مسبقًا كـ \fBRSA_PKCS1_PADDING\fP، ويُفترض أن المستخلص المدخل قد حُسب باستخدام SHA256. .PP .Vb 2 \& #include \& #include \& \& EVP_PKEY_CTX *ctx; \& /* md is a SHA\-256 digest in this example. */ \& unsigned char *md, *sig; \& size_t mdlen = 32, siglen; \& EVP_PKEY *signing_key; \& \& /* \& * NB: assumes verify_key, sig, siglen, md and mdlen are already set up \& * and that verify_key is an RSA public key \& */ \& ctx = EVP_PKEY_CTX_new(signing_key, NULL /* no engine */); \& alg = EVP_SIGNATURE_fetch(NULL, "RSA\-SHA256", NULL); \& \& if (ctx == NULL) \& /* Error occurred */ \& if (EVP_PKEY_verify_init_ex2(ctx, alg, NULL) <= 0) \& /* Error */ \& \& /* Determine buffer length */ \& if (EVP_PKEY_verify(ctx, sig, siglen, md, mdlen) <= 0) \& /* Error or signature doesn\*(Aqt verify */ \& \& /* Perform operation */ \& ret = EVP_PKEY_verify(ctx, sig, siglen, md, mdlen); \& \& /* \& * ret == 1 indicates success, 0 verify failure and < 0 for some \& * other error. \& */ .Ve .SS "RSA\-SHA256، طلقة واحدة" .IX Subsection "RSA\-SHA256، طلقة واحدة" تحقق من مستند باستخدام RSA\-SHA256 باستخدام دوال اللقطة الواحدة. يُلاحظ أن RSA\-SHA256 يُفترض أن يكون تنفيذًا لـ \&\f(CW\*(C`sha256WithRSAEncryption\*(C'\fP، حيث يكون الحشو محددًا مسبقًا كـ \&\fBRSA_PKCS1_PADDING\fP. .PP .Vb 2 \& #include \& #include \& \& EVP_PKEY_CTX *ctx; \& /* in the input in this example. */ \& unsigned char *in, *sig; \& /* inlen is the length of the input in this example. */ \& size_t inlen, siglen; \& EVP_PKEY *signing_key; \& EVP_SIGNATURE *alg; \& \& /* \& * NB: assumes signing_key, in and inlen are set up before \& * the next step. signing_key must be an RSA private key, \& * in must point to data to be digested and signed, and \& * inlen must be the size of the data in bytes. \& */ \& ctx = EVP_PKEY_CTX_new(signing_key, NULL /* no engine */); \& alg = EVP_SIGNATURE_fetch(NULL, "RSA\-SHA256", NULL); \& \& if (ctx == NULL || alg == NULL) \& /* Error occurred */ \& if (EVP_PKEY_verify_message_init(ctx, alg, NULL) <= 0) \& /* Error */ \& \& /* Perform operation */ \& ret = EVP_PKEY_verify(ctx, sig, siglen, in, inlen); \& \& /* \& * ret == 1 indicates success, 0 verify failure and < 0 for some \& * other error. \& */ .Ve .SS "RSA\-SHA256، باستخدام التحديث والنهاية" .IX Subsection "RSA\-SHA256، باستخدام التحديث والنهاية" هذا مماثل للمثال السابق، لكن مع السماح بوظيفية شبيهة بالدفق. .PP .Vb 2 \& #include \& #include \& \& EVP_PKEY_CTX *ctx; \& /* in is the input in this example. */ \& unsigned char *in, *sig; \& /* inlen is the length of the input in this example. */ \& size_t inlen, siglen; \& EVP_PKEY *signing_key; \& EVP_SIGNATURE *alg; \& \& /* \& * NB: assumes signing_key, in and inlen are set up before \& * the next step. signing_key must be an RSA private key, \& * in must point to data to be digested and signed, and \& * inlen must be the size of the data in bytes. \& */ \& ctx = EVP_PKEY_CTX_new(signing_key, NULL /* no engine */); \& alg = EVP_SIGNATURE_fetch(NULL, "RSA\-SHA256", NULL); \& \& if (ctx == NULL || alg == NULL) \& /* Error occurred */ \& if (EVP_PKEY_verify_message_init(ctx, alg, NULL) <= 0) \& /* Error */ \& \& /* We have the signature, specify it early */ \& EVP_PKEY_CTX_set_signature(ctx, sig, siglen); \& \& /* Perform operation */ \& while (inlen > 0) { \& if (EVP_PKEY_verify_message_update(ctx, in, inlen)) <= 0) \& /* Error */ \& if (inlen > 256) { \& inlen \-= 256; \& in += 256; \& } else { \& inlen = 0; \& } \& } \& ret = EVP_PKEY_verify_message_final(ctx); \& \& /* \& * ret == 1 indicates success, 0 verify failure and < 0 for some \& * other error. \& */ .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_recover\fP\|(3), \&\fBEVP_PKEY_derive\fP\|(3) .SH التاريخ .IX Header التاريخ أُضيفت الدالتان \fBEVP_PKEY_verify_init()\fP و \fBEVP_PKEY_verify()\fP في OpenSSL 1.0.0. .PP الدالة \fBEVP_PKEY_verify_init_ex()\fP أُضيفت في OpenSSL 3.0. .PP الدوال \fBEVP_PKEY_verify_init_ex2()\fP و \fBEVP_PKEY_verify_message_init()\fP و \&\fBEVP_PKEY_verify_message_update()\fP و \fBEVP_PKEY_verify_message_final()\fP و \&\fBEVP_PKEY_CTX_set_signature()\fP أُضيفت في OpenSSL 3.4. .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 .