.\" -*- 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 "BIO_F_MD 3ssl" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH BIO_F_MD 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 الاسم BIO_f_md, BIO_set_md, BIO_get_md, BIO_get_md_ctx \- مرشح BIO لملخص الرسالة .SH موجز .IX Header موجز .Vb 2 \& #include \& #include \& \& const BIO_METHOD *BIO_f_md(void); \& int BIO_set_md(BIO *b, EVP_MD *md); \& int BIO_get_md(BIO *b, EVP_MD **mdp); \& int BIO_get_md_ctx(BIO *b, EVP_MD_CTX **mdcp); .Ve .SH الوصف .IX Header الوصف \&\fBBIO_f_md()\fP تُرجع طريقة BIO لملخص الرسالة. هذا مرشح BIO يُلخّص أي بيانات تُمرّر عبره. وهو غلاف BIO لروتينات الملخص \fBEVP_DigestInit()\fP و \fBEVP_DigestUpdate()\fP و \fBEVP_DigestFinal()\fP. .PP أي بيانات تُكتب أو تُقرأ عبر BIO ملخص باستخدام \fBBIO_read_ex()\fP و \&\fBBIO_write_ex()\fP تُلخّص. .PP \&\fBBIO_gets()\fP، إذا كانت معاملتها \fBsize\fP كبيرة بما يكفي، تُنهي حساب الملخص وتُرجِع قيمة الملخص. \fBBIO_puts()\fP غير مدعومة. .PP \&\fBBIO_reset()\fP تُعيد تهيئة BIO ملخص. .PP \&\fBBIO_set_md()\fP تضبط ملخص الرسالة لـ BIO \fBb\fP إلى \fBmd\fP: يجب استدعاء هذه الدالة لتهيئة BIO ملخص قبل تمرير أي بيانات عبره. وهي ماكرو \fBBIO_ctrl()\fP. .PP \&\fBBIO_get_md()\fP تضع مؤشرًا إلى طريقة ملخص BIO الملخص في \fBmdp\fP. وهي ماكرو \fBBIO_ctrl()\fP. .PP \&\fBBIO_get_md_ctx()\fP تُرجِع سياق BIO الملخص إلى \fBmdcp\fP. .SH ملاحظات .IX Header ملاحظات السياق المُرجَع بواسطة \fBBIO_get_md_ctx()\fP يمكن استخدامه في استدعاءات \fBEVP_DigestFinal()\fP وكذلك روتينات التوقيع \fBEVP_SignFinal()\fP و \fBEVP_VerifyFinal()\fP. .PP السياق المُرجَع بواسطة \fBBIO_get_md_ctx()\fP هو بنية سياق داخلية. التغييرات التي تُجرى على هذا السياق ستؤثر على BIO الملخص نفسه، وسيصبح مؤشر السياق غير صالح عند تحرير BIO الملخص. .PP بعد استرجاع الملخص من BIO ملخص، يجب إعادة تهيئته باستدعاء \fBBIO_reset()\fP أو \fBBIO_set_md()\fP قبل تمرير أي بيانات إضافية عبره. .PP إذا احتاج تطبيق إلى استدعاء \fBBIO_gets()\fP أو \fBBIO_puts()\fP عبر سلسلة تحتوي على BIOs ملخص، فيمكن فعل ذلك بإضافة BIO تخزين مؤقت في البداية. .PP استدعاء \fBBIO_get_md_ctx()\fP سيُرجِع السياق ويُهيئ حالة BIO. هذا يسمح للتطبيقات بتهيئة السياق خارجيًا إذا كانت الاستدعاءات القياسية مثل \fBBIO_set_md()\fP ليست مرنة بما يكفي. .SH "القيم المُرجعة" .IX Header "القيم المُرجعة" \&\fBBIO_f_md()\fP تُرجع طريقة BIO الملخص. .PP \&\fBBIO_set_md()\fP و \fBBIO_get_md()\fP و \fBBIO_md_ctx()\fP تُرجِع 1 عند النجاح و <=0 عند الفشل. .SH أمثلة .IX Header أمثلة المثال التالي يُنشئ سلسلة BIO تحتوي على BIO تلخيص SHA1 و MD5 ويُمرر السلسلة "Hello World" من خلالها. تم حذف التحقق من الأخطاء للتوضيح. .PP .Vb 2 \& BIO *bio, *mdtmp; \& char message[] = "Hello World"; \& \& bio = BIO_new(BIO_s_null()); \& mdtmp = BIO_new(BIO_f_md()); \& BIO_set_md(mdtmp, EVP_sha1()); \& /* \& * بالنسبة لـ BIO_push() نريد إلحاق BIO المصدر والاحتفاظ بملاحظة \& * عن بداية السلسلة. \& */ \& bio = BIO_push(mdtmp, bio); \& mdtmp = BIO_new(BIO_f_md()); \& BIO_set_md(mdtmp, EVP_md5()); \& bio = BIO_push(mdtmp, bio); \& /* ملاحظة: يمكن الآن التخلص من mdtmp */ \& BIO_write(bio, message, strlen(message)); .Ve .PP المثال التالي يُلخص البيانات بالقراءة عبر سلسلة بدلاً من ذلك: .PP .Vb 3 \& BIO *bio, *mdtmp; \& char buf[1024]; \& int rdlen; \& \& bio = BIO_new_file(file, "rb"); \& mdtmp = BIO_new(BIO_f_md()); \& BIO_set_md(mdtmp, EVP_sha1()); \& bio = BIO_push(mdtmp, bio); \& mdtmp = BIO_new(BIO_f_md()); \& BIO_set_md(mdtmp, EVP_md5()); \& bio = BIO_push(mdtmp, bio); \& do { \& rdlen = BIO_read(bio, buf, sizeof(buf)); \& /* قد يُراد فعل شيء مع البيانات هنا */ \& } while (rdlen > 0); .Ve .PP المثال التالي يسترجع تلاخيص الرسائل من سلسلة BIO ويُخرجها. يمكن استخدام هذا مع الأمثلة أعلاه. .PP .Vb 4 \& BIO *mdtmp; \& unsigned char mdbuf[EVP_MAX_MD_SIZE]; \& int mdlen; \& int i; \& \& mdtmp = bio; /* افترض أن bio قد وُضعت مسبقًا */ \& do { \& EVP_MD *md; \& \& mdtmp = BIO_find_type(mdtmp, BIO_TYPE_MD); \& if (!mdtmp) \& break; \& BIO_get_md(mdtmp, &md); \& printf("%s digest", OBJ_nid2sn(EVP_MD_get_type(md))); \& mdlen = BIO_gets(mdtmp, mdbuf, EVP_MAX_MD_SIZE); \& for (i = 0; i < mdlen; i++) printf(":%02X", mdbuf[i]); \& printf("\en"); \& mdtmp = BIO_next(mdtmp); \& } while (mdtmp); \& \& BIO_free_all(bio); .Ve .SH العلل .IX Header العلل نقص الدعم لـ \fBBIO_puts()\fP والسلوك غير القياسي لـ \&\fBBIO_gets()\fP قد يُعتبر شاذًا. يمكن القول إن \fBBIO_gets()\fP و \fBBIO_puts()\fP يجب أن يُمررا إلى BIO التالي في السلسلة ويُلخصا البيانات المارة، وأن التلاخيص يجب أن تُسترجع باستخدام استدعاء منفصل لـ \fBBIO_ctrl()\fP. .SH التاريخ .IX Header التاريخ قبل OpenSSL 1.0.0، كان استدعاء \fBBIO_get_md_ctx()\fP يعمل فقط إذا وُهيئ BIO أولاً. .SH "حقوق النسخ" .IX Header "حقوق النسخ" حقوق النشر 2000\-2021 لمؤلفي مشروع 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 .