EVP_VERIFYINIT(3SSL)

الاسم
EVP_VerifyInit_ex, EVP_VerifyInit, EVP_VerifyUpdate, EVP_VerifyFinal_ex, EVP_VerifyFinal - دوال التحقق من التوقيع EVP

موجز
 #include <openssl/evp.h>

 int EVP_VerifyInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl);
 int EVP_VerifyUpdate(EVP_MD_CTX *ctx, const void *d, unsigned int cnt);
 int EVP_VerifyFinal_ex(EVP_MD_CTX *ctx, const unsigned char *sigbuf,
                        unsigned int siglen, EVP_PKEY *pkey,
                        OSSL_LIB_CTX *libctx, const char *propq);
 int EVP_VerifyFinal(EVP_MD_CTX *ctx, unsigned char *sigbuf, unsigned int siglen,
                     EVP_PKEY *pkey);

 int EVP_VerifyInit(EVP_MD_CTX *ctx, const EVP_MD *type);

الوصف
إجراءات التحقق من التوقيع EVP هي واجهة عالية المستوى للتوقيعات الرقمية.

EVP_VerifyInit_ex() تُعدّ سياق التحقق ctx لاستخدام الملخص type من ENGINE impl. يجب إنشاء ctx باستدعاء EVP_MD_CTX_new() قبل استدعاء هذه الدالة.

EVP_VerifyUpdate() تُجزئ cnt بايت من البيانات عند d في سياق التحقق ctx. يمكن استدعاء هذه الدالة عدة مرات على نفس ctx لتضمين بيانات إضافية.

EVP_VerifyFinal_ex() تتحقق من البيانات في ctx باستخدام المفتاح العام pkey و siglen بايت في sigbuf. يُستخدم سياق المكتبة libctx واستعلام الخاصية propq عند إنشاء سياق لاستخدامه مع المفتاح pkey.

EVP_VerifyFinal() مشابهة لـ EVP_VerifyFinal_ex() لكنها تستخدم قيماً مبدئية NULL لسياق المكتبة libctx واستعلام الخاصية propq.

EVP_VerifyInit() تُهيئ سياق التحقق ctx لاستخدام التطبيق المبدئي للملخص type.

القيم المُرجعة
EVP_VerifyInit_ex() و EVP_VerifyUpdate() تُرجعان 1 للنجاح و 0 للفشل.

EVP_VerifyFinal_ex() و EVP_VerifyFinal() تُرجعان 1 لتوقيع صحيح، 0 للفشل وقيمة سالبة إذا حدث خطأ آخر.

يمكن الحصول على رموز الخطأ بواسطة ERR_get_error(3).

ملاحظات
ينبغي دائمًا استخدام واجهة EVP للتواقيع الرقمية بدلاً من الواجهات منخفضة المستوى. هذا لأن الكود يصبح حينها شفافًا للخوارزمية المستخدمة وأكثر مرونة بكثير.

استدعاء EVP_VerifyFinal() يُنهي داخلياً نسخة من سياق الملخص. هذا يعني أن استدعاءات EVP_VerifyUpdate() و EVP_VerifyFinal() يمكن استدعاؤها لاحقاً لتجزئة والتحقق من بيانات إضافية. يمكن للتطبيقات تعطيل هذا السلوك بتعيين علم السياق EVP_MD_CTX_FLAG_FINALISE عبر EVP_MD_CTX_set_flags(3).

بما أن نسخة فقط من سياق الملخص (digest context) هي التي تُنهى (finalized)، فيجب تنظيف السياق بعد الاستخدام عبر استدعاء EVP_MD_CTX_free()، وإلا سيحدث تسريب في الذاكرة.

لاحظ أنه لا تدعم جميع المزوّدين الاستمرارية، في حال لم يسمح المزوّد المختار بتكرار السياقات، ستُنهي EVP_VerifyFinal() سياق الملخص وستؤدي محاولة معالجة بيانات إضافية عبر EVP_VerifyUpdate() إلى خطأ.

العلل
ذكرت الإصدارات الأقدم من هذه الوثائق خطأً أن استدعاءات EVP_VerifyUpdate() لا يمكن إجراؤها بعد استدعاء EVP_VerifyFinal().

بما أن المفتاح العام يُمرّر في استدعاء EVP_SignFinal()، لن يُشار إلى أي خطأ يتعلق بالمفتاح الخاص (مثل توليفة غير مناسبة من المفتاح والملخص) إلا بعد تمرير كميات كبيرة محتملة من البيانات عبر EVP_SignUpdate().

لا يمكن تغيير معطيات التوقيع باستخدام هذه الدوال.

تم إصلاح الخللين السابقين في الدالة الأحدث EVP_DigestVerify*().

انظر أيضًا
evp(7), EVP_SignInit(3), EVP_DigestInit(3), evp(7), HMAC(3), MD2(3), MD5(3), MDC2(3), RIPEMD160(3), SHA1(3), openssl-dgst(1)

التاريخ
أُضيفت الدالة EVP_VerifyFinal_ex() في OpenSSL 3.0.

حقوق النسخ
حقوق النشر 2000-2023 لمؤلفي مشروع OpenSSL. جميع الحقوق محفوظة.

مرخص بموجب رخصة Apache 2.0 (المشار إليها فيما يلي بـ ”الرخصة“). لا يجوز لك استخدام هذا الملف إلا وفقًا لشروط الرخصة. يمكنك الحصول على نسخة منها في الملف LICENSE الموجود في حزمة التوزيع المصدرية أو على الرابط <https://www.openssl.org/source/license.html>.

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.