.\" -*- coding: UTF-8 -*- .\" Copyright 2006, Red Hat, Inc. .\" Copyright 2016, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH add_key 2 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم add_key \- إضافة مفتاح إلى مرفق إدارة المفاتيح في النواة .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBkey_serial_t add_key(\fPsize_t size; \fB const char *\fP\fItype\fP\fB, const char *\fP\fIdescription\fP\fB,\fP \fB const void \fP\fIpayload\fP\fB[\fP\fIsize\fP\fB], size_t \fP\fIsize\fP\fB,\fP \fB key_serial_t \fP\fIkeyring\fP\fB);\fP .fi .P \fIملاحظة\fP: لا يوجد مغلف glibc لنداء النظام هذا؛ انظر NOTES. .SH الوصف تنشئ \fBadd_key\fP() أو تحدث مفتاحًا من \fItype\fP و \fIdescription\fP المعطيين، وتنشئه باستخدام \fIpayload\fP بحجم \fIsize\fP، وتعلقه بـ \fIkeyring\fP المعين، وتعيد الرقم التسلسلي للمفتاح. .P قد يُرفض المفتاح إذا كانت البيانات المقدمة بتنسيق خاطئ أو غير صالحة بطريقة أخرى. .P .\" FIXME The aforementioned phrases begs the question: .\" which key types support this? .\" FIXME Perhaps elaborate the implications here? Namely, the new .\" key will have a new ID, and if the old key was a keyring that .\" is consequently unlinked, then keys that it was anchoring .\" will have their reference count decreased by one (and may .\" consequently be garbage collected). Is this all correct? إذا كان \fIkeyring\fP الوجهة يحتوي بالفعل على مفتاح يطابق \fItype\fP و \fIdescription\fP المحددين، فعندئذ، إذا كان نوع المفتاح يدعم ذلك، يُحدث ذلك المفتاح بدلاً من إنشاء مفتاح جديد؛ وإلا، يُنشأ مفتاح جديد (بمعرف مختلف) ويحل محل الرابط للمفتاح الموجود من keyring. .P .\" FIXME . Perhaps have a separate page describing special keyring IDs? قد يكون الرقم التسلسلي لـ \fIkeyring\fP الوجهة هو رقم keyring صالح يملك المتصل إذن \fIwrite\fP له. بدلاً من ذلك، قد يكون أحد معرفات keyring الخاصة التالية: .TP \fBKEY_SPEC_THREAD_KEYRING\fP يحدد هذا keyring الخاص بالخيط للمتصل (\fBthread\-keyring\fP(7)). .TP \fBKEY_SPEC_PROCESS_KEYRING\fP يحدد هذا keyring الخاص بالعملية للمتصل (\fBprocess\-keyring\fP(7)). .TP \fBKEY_SPEC_SESSION_KEYRING\fP يحدد هذا keyring الخاص بالجلسة للمتصل (\fBsession\-keyring\fP(7)). .TP \fBKEY_SPEC_USER_KEYRING\fP يحدد هذا keyring الخاص بمعرف المستخدم للمتصل (\fBuser\-keyring\fP(7)). .TP \fBKEY_SPEC_USER_SESSION_KEYRING\fP يحدد هذا keyring جلسة معرف المستخدم للمتصل (\fBuser\-session\-keyring\fP(7)). .SS "أنواع المفاتيح" \fItype\fP المفتاح هو سلسلة تحدد نوع المفتاح. داخليًا، تعرف النواة عددًا من أنواع المفاتيح المتاحة في كود إدارة المفاتيح الأساسي. من بين الأنواع المتاحة لاستخدام مساحة المستخدم والتي يمكن تحديدها كوسيطة \fItype\fP لـ \fBadd_key\fP() ما يلي: .TP \fI\[dq]keyring\[dq]\fP Keyrings هي أنواع مفاتيح خاصة قد تحتوي على روابط لتسلسلات مفاتيح أخرى من أي نوع. إذا استُخدمت هذه الواجهة لإنشاء keyring، فيجب أن يكون \fIpayload\fP NULL و \fIsize\fP صفرًا. .TP \fI\[dq]user\[dq]\fP هذا نوع مفتاح للأغراض العامة يمكن لتطبيقات مساحة المستخدم قراءة حمولته وتحديثها. يُحتفظ بالمفتاح بالكامل داخل ذاكرة النواة. حمولة مفاتيح هذا النوع هي كتلة من بيانات عشوائية يصل حجمها إلى 32,767 بايت. .TP \fI\[dq]logon\[dq]\fP (منذ لينكس 3.3) .\" commit 9f6ed2ca257fa8650b876377833e6f14e272848b نوع المفتاح هذا هو نفسه بشكل أساسي \fI\[dq]user\[dq]\fP، لكنه لا يسمح بقراءة المفتاح. هذا مناسب لتخزين حمولات لا تريد أن تكون قابلة للقراءة من مساحة المستخدم. .P يفحص نوع المفتاح هذا \fIdescription\fP لضمان تأهيله ببادئة "service"، عن طريق التحقق من أن \fIdescription\fP يحتوي على ':' يسبقه أحرف أخرى. .TP \fI\[dq]big_key\[dq]\fP (منذ لينكس 3.13) .\" commit ab3c3587f8cda9083209a61dbe3a4407d3cada10 نوع المفتاح هذا مشابه لـ \fI\[dq]user\[dq]\fP، لكنه قد يحمل حمولة تصل إلى 1\ MiB. إذا كانت حمولة المفتاح كبيرة بما يكفي، فقد تُخزن مشفرة في tmpfs (التي يمكن استبدالها) بدلاً من ذاكرة النواة. .P لمزيد من التفاصيل حول أنواع المفاتيح هذه، انظر \fBkeyrings\fP(7). .SH "قيمة الإرجاع" عند النجاح، تعيد \fBadd_key\fP() الرقم التسلسلي للمفتاح الذي أنشأته أو حدثته. عند الخطأ، تُعاد \-1 ويُضبط \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء .TP \fBEACCES\fP لم تكن حلقة المفاتيح متاحة للتعديل من قبل المستخدم. .TP \fBEDQUOT\fP سَيُتَجَاوَزُ حصة المفاتيح لهذا المستخدم بإنشاء هذا المفتاح أو ربطه بحلقة المفاتيح. .TP \fBEFAULT\fP واحد أو أكثر من \fItype\fP و \fIdescription\fP و \fIpayload\fP يشير إلى خارج مساحة العنوان القابلة للوصول للعملية. .TP \fBEINVAL\fP حجم السلسلة (بما في ذلك بايت null النهائي) المحدد في \fItype\fP أو \fIdescription\fP تجاوز الحد (32 بايت و 4096 بايت على التوالي). .TP \fBEINVAL\fP بيانات الحمولة كانت غير صالحة. .TP \fBEINVAL\fP كان \fItype\fP هو \fI\[dq]logon\[dq]\fP ولم يكن \fIdescription\fP مؤهلاً بسلسلة بادئة من الشكل \fI\[dq]service:\[dq]\fP. .TP \fBEKEYEXPIRED\fP انتهت صلاحية keyring. .TP \fBEKEYREVOKED\fP أُلغي keyring. .TP \fBENOKEY\fP keyring غير موجود. .TP \fBENOMEM\fP الذاكرة غير كافية لإنشاء مفتاح. .TP \fBEPERM\fP بدأ \fItype\fP بنقطة (\[aq].\[aq]). أنواع المفاتيح التي تبدأ بنقطة محجوزة للتنفيذ. .TP \fBEPERM\fP كان \fItype\fP هو \fI\[dq]keyring\[dq]\fP وبدأ \fIdescription\fP بنقطة (\[aq].\[aq]). Keyrings ذات الأوصاف (الأسماء) التي تبدأ بنقطة محجوزة للتنفيذ. .SH المعايير لينكس. .SH التاريخ لينكس 2.6.10. .SH ملاحظات لا توفر glibc غلافًا لاستدعاء النظام هذا. يُوفر غلاف في مكتبة \fIlibkeyutils\fP. (توفر الحزمة المصاحبة ملف الرأس \fI\fP.) عند استخدام الغلاف في تلك المكتبة، اربط مع \fI\-lkeyutils\fP. .SH أمثلة ينشئ البرنامج أدناه مفتاحًا بالنوع والوصف والحمولة المحددة في وسائط سطر الأوامر، ويربط ذلك المفتاح في keyring الجلسة. توضح جلسة الصدفة التالية استخدام البرنامج: .P .in +4n .EX $\fB ./a.out user mykey \[dq]Some payload\[dq]\fP; Key ID is 64a4dca $\fB grep \[aq]64a4dca\[aq] /proc/keys\fP; 064a4dca I\-\-Q\-\-\- 1 perm 3f010000 1000 1000 user mykey: 12 .EE .in .SS "مصدر البرنامج" .\" SRC BEGIN (add_key.c) \& .EX #include #include #include #include #include \& int main(int argc, char *argv[]) { key_serial_t key; \& if (argc != 4) { fprintf(stderr, "Usage: %s type description payload\[rs]n", argv[0]); exit(EXIT_FAILURE); } \& key = add_key(argv[1], argv[2], argv[3], strlen(argv[3]), KEY_SPEC_SESSION_KEYRING); if (key == \-1) { perror("add_key"); exit(EXIT_FAILURE); } \& printf("Key ID is %jx\[rs]n", (uintmax_t) key); \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "انظر أيضًا" .ad l .nh \fBkeyctl\fP(1), \fBkeyctl\fP(2), \fBrequest_key\fP(2), \fBkeyctl\fP(3), \fBkeyrings\fP(7), \fBkeyutils\fP(7), \fBpersistent\-keyring\fP(7), \fBprocess\-keyring\fP(7), \fBsession\-keyring\fP(7), \fBthread\-keyring\fP(7), \fBuser\-keyring\fP(7), \fBuser\-session\-keyring\fP(7) .P ملفات مصدر النواة \fIDocumentation/security/keys/core.rst\fP و \fIDocumentation/keys/request\-key.rst\fP. .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .