.\" -*- 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 "D2I_RSAPRIVATEKEY 3ssl" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH D2I_RSAPRIVATEKEY 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 الاسم d2i_DSAPrivateKey, d2i_DSAPrivateKey_bio, d2i_DSAPrivateKey_fp, d2i_DSAPublicKey, d2i_DSA_PUBKEY, d2i_DSA_PUBKEY_bio, d2i_DSA_PUBKEY_fp, d2i_DSAparams, d2i_RSAPrivateKey, d2i_RSAPrivateKey_bio, d2i_RSAPrivateKey_fp, d2i_RSAPublicKey, d2i_RSAPublicKey_bio, d2i_RSAPublicKey_fp, d2i_RSA_PUBKEY, d2i_RSA_PUBKEY_bio, d2i_RSA_PUBKEY_fp, d2i_DHparams, d2i_DHparams_bio, d2i_DHparams_fp, d2i_ECParameters, d2i_ECPrivateKey, d2i_ECPrivateKey_bio, d2i_ECPrivateKey_fp, d2i_EC_PUBKEY, d2i_EC_PUBKEY_bio, d2i_EC_PUBKEY_fp, i2d_RSAPrivateKey, i2d_RSAPrivateKey_bio, i2d_RSAPrivateKey_fp, i2d_RSAPublicKey, i2d_RSAPublicKey_bio, i2d_RSAPublicKey_fp, i2d_RSA_PUBKEY, i2d_RSA_PUBKEY_bio, i2d_RSA_PUBKEY_fp, i2d_DHparams, i2d_DHparams_bio, i2d_DHparams_fp, i2d_DSAPrivateKey, i2d_DSAPrivateKey_bio, i2d_DSAPrivateKey_fp, i2d_DSAPublicKey, i2d_DSA_PUBKEY, i2d_DSA_PUBKEY_bio, i2d_DSA_PUBKEY_fp, i2d_DSAparams, i2d_ECParameters, i2d_ECPrivateKey, i2d_ECPrivateKey_bio, i2d_ECPrivateKey_fp, i2d_EC_PUBKEY, i2d_EC_PUBKEY_bio, i2d_EC_PUBKEY_fp \&\- مُهجورة .SH موجز .IX Header موجز الدوال التالية أصبحت مهجورة منذ OpenSSL 3.0، ويمكن إخفاؤها تماماً عن طريق تعريف \fBOPENSSL_API_COMPAT\fP بقيمة إصدار مناسبة، انظر \fBopenssl_user_macros\fP\|(7): .PP .Vb 12 \& TYPE *d2i_TYPEPrivateKey(TYPE **a, const unsigned char **ppin, long length); \& TYPE *d2i_TYPEPrivateKey_bio(BIO *bp, TYPE **a); \& TYPE *d2i_TYPEPrivateKey_fp(FILE *fp, TYPE **a); \& TYPE *d2i_TYPEPublicKey(TYPE **a, const unsigned char **ppin, long length); \& TYPE *d2i_TYPEPublicKey_bio(BIO *bp, TYPE **a); \& TYPE *d2i_TYPEPublicKey_fp(FILE *fp, TYPE **a); \& TYPE *d2i_TYPEparams(TYPE **a, const unsigned char **ppin, long length); \& TYPE *d2i_TYPEparams_bio(BIO *bp, TYPE **a); \& TYPE *d2i_TYPEparams_fp(FILE *fp, TYPE **a); \& TYPE *d2i_TYPE_PUBKEY(TYPE **a, const unsigned char **ppin, long length); \& TYPE *d2i_TYPE_PUBKEY_bio(BIO *bp, TYPE **a); \& TYPE *d2i_TYPE_PUBKEY_fp(FILE *fp, TYPE **a); \& \& int i2d_TYPEPrivateKey(const TYPE *a, unsigned char **ppout); \& int i2d_TYPEPrivateKey(TYPE *a, unsigned char **ppout); \& int i2d_TYPEPrivateKey_fp(FILE *fp, const TYPE *a); \& int i2d_TYPEPrivateKey_fp(FILE *fp, TYPE *a); \& int i2d_TYPEPrivateKey_bio(BIO *bp, const TYPE *a); \& int i2d_TYPEPrivateKey_bio(BIO *bp, TYPE *a); \& int i2d_TYPEPublicKey(const TYPE *a, unsigned char **ppout); \& int i2d_TYPEPublicKey(TYPE *a, unsigned char **ppout); \& int i2d_TYPEPublicKey_fp(FILE *fp, const TYPE *a); \& int i2d_TYPEPublicKey_fp(FILE *fp, TYPE *a); \& int i2d_TYPEPublicKey_bio(BIO *bp, const TYPE *a); \& int i2d_TYPEPublicKey_bio(BIO *bp, TYPE *a); \& int i2d_TYPEparams(const TYPE *a, unsigned char **ppout); \& int i2d_TYPEparams(TYPE *a, unsigned char **ppout); \& int i2d_TYPEparams_fp(FILE *fp, const TYPE *a); \& int i2d_TYPEparams_fp(FILE *fp, TYPE *a); \& int i2d_TYPEparams_bio(BIO *bp, const TYPE *a); \& int i2d_TYPEparams_bio(BIO *bp, TYPE *a); \& int i2d_TYPE_PUBKEY(const TYPE *a, unsigned char **ppout); \& int i2d_TYPE_PUBKEY(TYPE *a, unsigned char **ppout); \& int i2d_TYPE_PUBKEY_fp(FILE *fp, const TYPE *a); \& int i2d_TYPE_PUBKEY_fp(FILE *fp, TYPE *a); \& int i2d_TYPE_PUBKEY_bio(BIO *bp, const TYPE *a); \& int i2d_TYPE_PUBKEY_bio(BIO *bp, TYPE *a); .Ve .SH الوصف .IX Header الوصف جميع الدوال الموصوفة هنا مُهجورة. يُرجى استخدام \fBOSSL_DECODER\fP\|(3) بدلاً من دوال \fBd2i\fP و \fBOSSL_ENCODER\fP\|(3) بدلاً من دوال \fBi2d\fP. انظر "الترحيل" أدناه. .PP في الوصف هنا، يُستخدم \f(BITYPE\fR كعنصر نائب لأي من أنواع بيانات OpenSSL، مثل \fBRSA\fP. معامِلا الدالة \fIppin\fP و \fIppout\fP يُسميان عمومًا إما كلاهما \&\fIpp\fP في الرؤوس، أو \fIin\fP و \fIout\fP. .PP جميع الدوال هنا تتصرف بالطريقة الموصوفة في \fBd2i_X509\fP\|(3). .PP يُرجى ملاحظة أن ليس كل الدوال في الملخص متاحة لجميع أنواع المفاتيح. على سبيل المثال، لا توجد \fBd2i_RSAparams()\fP أو \fBi2d_RSAparams()\fP، لأن بنية \fBRSA\fP في PKCS#1 لا تتضمن أي معاملات مفتاح. .PP \&\fBd2i_\fP\f(BITYPE\fBPrivateKey\fP() ومشتقاتها تفك ترميز DER لبيانات المفتاح الخاص \&\f(BITYPE\fR المنظمة في بنية خاصة بالنوع. .PP \&\fBd2i_\fP\f(BITYPE\fBPublicKey\fP() ومشتقاتها تفك ترميز DER لبيانات المفتاح العام \&\f(BITYPE\fR المنظمة في بنية خاصة بالنوع. .PP \&\fBd2i_\fP\f(BITYPE\fBparams\fP() ومشتقاتها تفك ترميز DER لمعاملات مفتاح \f(BITYPE\fR المنظمة في بنية خاصة بالنوع. .PP \&\fBd2i_\fP\f(BITYPE\fB_PUBKEY\fP() ومشتقاتها تفك ترميز DER لبيانات المفتاح العام \f(BITYPE\fR المنظمة في بنية \fBSubjectPublicKeyInfo\fP. .PP \&\fBi2d_\fP\f(BITYPE\fBPrivateKey\fP() ومشتقاتها ترمّز بيانات المفتاح الخاص \&\f(BITYPE\fR إلى بنية مشفرة بـ DER خاصة بالنوع. .PP \&\fBi2d_\fP\f(BITYPE\fBPublicKey\fP() ومشتقاتها ترمّز بيانات المفتاح العام \&\f(BITYPE\fR إلى بنية مشفرة بـ DER خاصة بالنوع. .PP \&\fBi2d_\fP\f(BITYPE\fBparams\fP() ومشتقاتها ترمّز بيانات معاملات مفتاح \f(BITYPE\fR إلى بنية مشفرة بـ DER خاصة بالنوع. .PP \&\fBi2d_\fP\f(BITYPE\fB_PUBKEY\fP() ومشتقاتها ترمّز بيانات المفتاح العام \&\f(BITYPE\fR إلى بنية \fBSubjectPublicKeyInfo\fP مشفرة بـ DER. .PP على سبيل المثال، تتوقع الدالتان \fBd2i_RSAPrivateKey()\fP و \fBd2i_RSAPublicKey()\fP البنية المُعرَّفة بواسطة PKCS#1. وبالمثل، تُنتج الدالتان \fBi2d_RSAPrivateKey()\fP و \fBi2d_RSAPublicKey()\fP سلسلة محارف مُرمَّزة بصيغة DER مُرتَّبة وفقًا لـ PKCS#1. .SS الترحيل .IX Subsection الترحيل يتطلب الانتقال من \f(BITYPE\fRs المُتنوعة استخدام أنواع OpenSSL الجديدة المُقابلة. بالنسبة لجميع \f(BITYPE\fRs الموصوفة هنا، النوع الجديد المُقابل هو \fBEVP_PKEY\fP. يفترض باقي هذا القسم أن هذا قد أُنجز، وكيفية القيام بذلك بالضبط موصوفة في مكان آخر. .PP يوجد مساران للانتقال: .IP \(bu 4 استبدل \&\fBd2i_\fP\f(BITYPE\fBPrivateKey()\fP بـ \fBd2i_PrivateKey\fP\|(3)، \&\fBd2i_\fP\f(BITYPE\fBPublicKey()\fP بـ \fBd2i_PublicKey\fP\|(3)، \&\fBd2i_\fP\f(BITYPE\fBparams()\fP بـ \fBd2i_KeyParams\fP\|(3)، \&\fBd2i_\fP\f(BITYPE\fB_PUBKEY()\fP بـ \fBd2i_PUBKEY\fP\|(3)، \&\fBi2d_\fP\f(BITYPE\fBPrivateKey()\fP بـ \fBi2d_PrivateKey\fP\|(3)، \&\fBi2d_\fP\f(BITYPE\fBPublicKey()\fP بـ \fBi2d_PublicKey\fP\|(3)، \&\fBi2d_\fP\f(BITYPE\fBparams()\fP بـ \fBi2d_KeyParams\fP\|(3)، \&\fBi2d_\fP\f(BITYPE\fB_PUBKEY()\fP بـ \fBi2d_PUBKEY\fP\|(3). تحذير هو أن \fBi2d_PrivateKey\fP\|(3) قد يُخرج بنية PKCS#8 مُعمّاة بـ DER كأبعد بنية بدلاً من البنية الخاصة بالنوع، وأن \&\fBd2i_PrivateKey\fP\|(3) يتعرف على بنى PKCS#8 ويفكّها. .IP \(bu 4 استخدم \fBOSSL_DECODER\fP\|(3) و \fBOSSL_ENCODER\fP\|(3). كيفية الترحيل موصوفة أدناه. تفترض كل تلك الأوصاف أن المفتاح المراد تعميته موجود في المتغير \fIpkey\fP. .PP \fIترحيل دوال \fP\f(BIi2d\fI إلى \fP\f(BIOSSL_ENCODER\fR .IX Subsection "ترحيل دوال i2d إلى OSSL_ENCODER" .PP المخرج الدقيق لـ \fBOSSL_ENCODER\fP\|(3) يُحدد بالوسائط بدلاً من أسماء الدوال. الكود النموذجي للحصول على مخرج مُعمّى بـ DER في بنية خاصة بالنوع موحد، والأشياء الوحيدة التي تختلف هي اختيار أي جزء من \fBEVP_PKEY\fP يجب إخراجه، والبنية. لذلك يمكن ترجمة أسماء دوال \&\fBi2d\fP إلى متغيرين، \&\fIselection\fP و \fIstructure\fP كالتالي: .IP "\fBi2d_\fP\f(BITYPE\fBPrivateKey\fP() يُترجم إلى:" 4 .IX Item "i2d_TYPEPrivateKey() يُترجم إلى:" .Vb 2 \& int selection = EVP_PKEY_KEYPAIR; \& const char *structure = "type\-specific"; .Ve .IP "\fBi2d_\fP\f(BITYPE\fBPublicKey\fP() يُترجم إلى:" 4 .IX Item "i2d_TYPEPublicKey() يُترجم إلى:" .Vb 2 \& int selection = EVP_PKEY_PUBLIC_KEY; \& const char *structure = "type\-specific"; .Ve .IP "\fBi2d_\fP\f(BITYPE\fBparams\fP() يُترجم إلى:" 4 .IX Item "i2d_TYPEparams() يُترجم إلى:" .Vb 2 \& int selection = EVP_PKEY_PARAMETERS; \& const char *structure = "type\-specific"; .Ve .IP "\fBi2d_\fP\f(BITYPE\fB_PUBKEY\fP() يُترجم إلى:" 4 .IX Item "i2d_TYPE_PUBKEY() يُترجم إلى:" .Vb 2 \& int selection = EVP_PKEY_PUBLIC_KEY; \& const char *structure = "SubjectPublicKeyInfo"; .Ve .PP الكود النموذجي التالي يقوم ببقية العمل: .PP .Vb 10 \& unsigned char *p = buffer; /* |buffer| is supplied by the caller */ \& size_t len = buffer_size; /* assumed be the size of |buffer| */ \& OSSL_ENCODER_CTX *ctx = \& OSSL_ENCODER_CTX_new_for_pkey(pkey, selection, "DER", structure, \& NULL, NULL); \& if (ctx == NULL) { \& /* fatal error handling */ \& } \& if (OSSL_ENCODER_CTX_get_num_encoders(ctx) == 0) { \& OSSL_ENCODER_CTX_free(ctx); \& /* non\-fatal error handling */ \& } \& if (!OSSL_ENCODER_to_data(ctx, &p, &len)) { \& OSSL_ENCODER_CTX_free(ctx); \& /* error handling */ \& } \& OSSL_ENCODER_CTX_free(ctx); .Ve .SH ملاحظات .IX Header ملاحظات الحرفان \fBi\fP و \fBd\fP في \fBi2d_\fP\f(BITYPE\fR() يرمزان إلى "internal" (أي هيكل C داخلي) و "DER" على التوالي. لذا تقوم \fBi2d_\fP\f(BITYPE\fR() بالتحويل من الداخلي إلى DER. .PP يمكن للدوال أيضًا فهم صيغ \fBBER\fP. .PP يجب أن يكون هيكل TYPE الفعلي الممرر إلى \fBi2d_\fP\f(BITYPE\fR() هيكل \f(BITYPE\fR صالحًا ومملوءًا \-\- \fBلا يمكن\fP ببساطة تزويده بهيكل فارغ مثل الذي يعيده \fBTYPE_new()\fP. .PP البيانات المشفرة بصيغة ثنائية وقد تحتوي على أصفار مدمجة. لذلك، يجب فتح أي مؤشرات ملفات (FILE pointers) أو BIOs في الوضع الثنائي. لن تعيد الدوال مثل \fBstrlen()\fP الطول الصحيح للهيكل المشفر. .PP طرق زيادة \fI*ppin\fP و \fI*ppout\fP بعد العملية يمكن أن تصطاد غير الحذر. انظر قسم \fBWARNINGS\fP في \fBd2i_X509\fP\|(3) لبعض الأخطاء الشائعة. سبب سلوك الزيادة الآلية هذا هو عكس استخدام نموذجي لدوال ASN1: بعد تعمية أو فك بنية واحدة، ستُعالج أخرى بعدها. .PP قد تكون النقاط التالية حول أنواع البيانات مفيدة: .IP \fBDSA_PUBKEY\fP 4 .IX Item DSA_PUBKEY تمثل مفتاح DSA عام باستخدام هيكل \fBSubjectPublicKeyInfo\fP. .IP "\fBDSAPublicKey\fP، \fBDSAPrivateKey\fP" 4 .IX Item "DSAPublicKey، DSAPrivateKey" استخدم تنسيق OpenSSL غير قياسي ويجب تجنبه؛ استخدم \fBDSA_PUBKEY\fP، \&\fBPEM_write_PrivateKey\fP\|(3)، أو ما شابه بدلاً من ذلك. .SH "القيم المُرجعة" .IX Header "القيم المُرجعة" \&\fBd2i_\fP\f(BITYPE\fR()، و \fBd2i_\fP\f(BITYPE\fB_bio\fP()، و \fBd2i_\fP\f(BITYPE\fB_fp\fP() تعيد بنية \&\f(BITYPE\fR صالحة أو NULL في حال حدوث خطأ. إذا استُخدمت قدرة "إعادة الاستخدام" مع تمرير بنية صالحة عبر \fIa\fP، فسيُحرر الكائن في حال حدوث خطأ ويُضبط \fI*a\fP إلى NULL. .PP \&\fBi2d_\fP\f(BITYPE\fR() تعيد عدد البايتات التي رُمزت بنجاح أو قيمة سالبة في حال حدوث خطأ. .PP \&\fBi2d_\fP\f(BITYPE\fB_bio\fP() و \fBi2d_\fP\f(BITYPE\fB_fp\fP() يُرجعان 1 للنجاح و0 إذا حدث خطأ. .SH "انظر أيضًا" .IX Header "انظر أيضًا" \&\fBOSSL_ENCODER\fP\|(3)، \fBOSSL_DECODER\fP\|(3)، \&\fBd2i_PrivateKey\fP\|(3)، \fBd2i_PublicKey\fP\|(3)، \fBd2i_KeyParams\fP\|(3)، \&\fBd2i_PUBKEY\fP\|(3)، \&\fBi2d_PrivateKey\fP\|(3)، \fBi2d_PublicKey\fP\|(3)، \fBi2d_KeyParams\fP\|(3)، \&\fBi2d_PUBKEY\fP\|(3) .SH "حقوق النسخ" .IX Header "حقوق النسخ" حقوق النشر 2020\-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 .