إنتقل إلى المحتوى الرئيسي
ينطبق على:
PKCS#11 (Cryptoki) 2.40مكتبة DuoKey PKCS#11

تنفّذ المكتبة المجموعة الفرعية أحادية الجزء من Cryptoki اللازمة لإدارة المفاتيح واستخدامها عبر DuoKey Cockpit. كل خانة في جدول الوظائف مؤشر صالح: تؤدي الوظائف المُنفَّذة عملها، وتعيد البقية خطأً واضحاً (CKR_FUNCTION_NOT_SUPPORTED أو CKR_FUNCTION_NOT_PARALLEL).

الوظائف المُنفَّذة​

أغراض عامة​

الوظيفةالسلوك
C_GetFunctionListتعيد جدول الوظائف (الرمز المصدَّر الوحيد).
C_Initializeتحمّل التكوين، وتبني عميل الوكيل، وتهيّئ الحالة العامة.
C_Finalizeتفكّك الحالة العامة.
C_GetInfoتُبلِغ عن Cryptoki 2.40، والمكتبة 0.1، والصانع "DuoKey".

إدارة الفتحة والرمز​

الوظيفةالسلوك
C_GetSlotListتعرض فتحة افتراضية واحدة بالضبط (slot_id من التكوين).
C_GetSlotInfo"DKE Cockpit Virtual HSM Slot" ثابتة، بأعلام CKF_TOKEN_PRESENT | CKF_HW_SLOT.
C_GetTokenInfoأعلام الرمز وبياناته الوصفية (أفضل جهد من الوكيل، مع احتياط دون اتصال).
C_GetMechanismListتعيد قائمة الآليات المُعلَنة (انظر أدناه).
C_GetMechanismInfoنطاق حجم المفتاح والأعلام لكل آلية؛ تُضمِّن CKF_HW بعملية OR في الأعلام.

إدارة الجلسة​

الوظيفةالسلوك
C_OpenSessionجلسات تسلسلية فقط؛ تُرفَض المتوازية بـ CKR_SESSION_PARALLEL_NOT_SUPPORTED.
C_CloseSessionتغلق جلسة.
C_CloseAllSessionsتغلق كل جلسات الفتحة.
C_GetSessionInfoتشتق حالة RO/RW × العام/المستخدم.
C_Loginتنقل الجلسة إلى حالة المستخدم. **لا يُرسَل أي PIN**؛ لا يُقبَل إلا CKU_USER / CKU_CONTEXT_SPECIFIC.
C_Logoutتمسح علامة تسجيل الدخول.

إدارة الكائنات​

الوظيفةالسلوك
C_FindObjectsInit / C_FindObjects / C_FindObjectsFinalتستعلم من Cockpit بمرشّح القالب، وتتدخّن النتائج وتُقسِّمها إلى صفحات.
C_GetAttributeValueتجيب عن السمات من الواصف المخزَّن مؤقتاً (بروتوكول طول المخزن المؤقت مدعوم).
C_DestroyObjectتحذف الكائن في Cockpit وتنسى المقبض.

التشفير وفك التشفير (أحادي الجزء)​

الوظيفةالسلوك
C_EncryptInit / C_Encryptتشفير أحادي الجزء؛ بالنسبة لـ AES-GCM تُلحَق العلامة بالنص المشفَّر.
C_DecryptInit / C_Decryptفك تشفير أحادي الجزء.

التوقيع والتحقق والتلخيص (أحادي الجزء)​

الوظيفةالسلوك
C_SignInit / C_Signتوقيع أحادي الجزء.
C_VerifyInit / C_Verifyتحقق أحادي الجزء؛ CKR_SIGNATURE_INVALID عندما تُبلِغ الخلفية عن عدم صلاحية.
C_DigestInit / C_Digestتلخيص أحادي الجزء بلا مفتاح (يُحسَب في Cockpit).

إدارة المفاتيح​

الوظيفةالسلوك
C_GenerateKeyتولّد مفتاحاً متماثلاً (تتطلب تسجيل دخول).
C_GenerateKeyPairتولّد زوج مفاتيح غير متماثل (تتطلب تسجيل دخول).
C_WrapKeyتغلّف مفتاحاً تحت مفتاح تغليف.
C_UnwrapKeyتفك تغليف كتلة إلى كائن مفتاح جديد.

العشوائية​

الوظيفةالسلوك
C_GenerateRandomتطلب N بايت عشوائي من الخلفية.
C_SeedRandomتُقبَل وتُتجاهَل — لا يمكن للعميل بذر مولّد الأرقام العشوائية في الخلفية.

غير مدعوم​

تعيد CKR_FUNCTION_NOT_SUPPORTED
  • إدارة الرمز/PIN — C_InitToken، وC_InitPIN، وC_SetPIN
  • حالة العملية — C_GetOperationState، وC_SetOperationState
  • إنشاء/نسخ/حجم/ضبط سمة الكائن — C_CreateObject، وC_CopyObject، وC_GetObjectSize، وC_SetAttributeValue
  • تشفير/فك تشفير متعدد الأجزاء — C_EncryptUpdate، وC_EncryptFinal، وC_DecryptUpdate، وC_DecryptFinal
  • تلخيص متعدد الأجزاء — C_DigestUpdate، وC_DigestKey، وC_DigestFinal
  • توقيع وتحقق متعدد الأجزاء / بالاسترداد — C_SignUpdate، وC_SignFinal، وC_SignRecoverInit، وC_SignRecover، وC_VerifyUpdate، وC_VerifyFinal، وC_VerifyRecoverInit، وC_VerifyRecover
  • ثنائي الوظيفة — C_DigestEncryptUpdate، وC_DecryptDigestUpdate، وC_SignEncryptUpdate، وC_DecryptVerifyUpdate
  • اشتقاق المفاتيح — C_DeriveKey
  • أحداث الفتحة — C_WaitForSlotEvent
تعيد CKR_FUNCTION_NOT_PARALLEL

C_GetFunctionStatus، وC_CancelFunction (إدارة الوظائف المتوازية القديمة).

لا تُستخدَم هذه العمليات في تدفقات عمل المفاتيح المدعومة، والتي هي أحادية الجزء بحكم البناء.

الآليات​

يُعلِن C_GetMechanismList عن الآليات أدناه. تعيد C_GetMechanismInfo نطاق حجم المفتاح والأعلام وتضبط أيضاً CKF_HW. تتبع وحدات حجم المفتاح الآلية: AES بالبايت، وRSA/EC بالبت.

الآليةالحد الأدنىالحد الأقصىالعمليات
CKM_AES_KEY_GEN1632التوليد
CKM_AES_ECB, CKM_AES_CBC, CKM_AES_CBC_PAD1632التشفير، فك التشفير، التغليف، فك التغليف
CKM_AES_GCM1632التشفير، فك التشفير
CKM_AES_KEY_WRAP, CKM_AES_KEY_WRAP_PAD1632التغليف، فك التغليف
CKM_GENERIC_SECRET_KEY_GEN1512التوليد
CKM_RSA_PKCS_KEY_PAIR_GEN20484096توليد زوج مفاتيح
CKM_RSA_PKCS20484096التشفير، فك التشفير، التوقيع، التحقق، التغليف، فك التغليف
CKM_RSA_PKCS_OAEP20484096التشفير، فك التشفير، التغليف، فك التغليف
CKM_RSA_PKCS_PSS, CKM_SHA256_RSA_PKCS, CKM_SHA384_RSA_PKCS, CKM_SHA512_RSA_PKCS20484096التوقيع، التحقق
CKM_EC_KEY_PAIR_GEN256521توليد زوج مفاتيح
CKM_ECDSA, CKM_ECDSA_SHA256, CKM_ECDSA_SHA384256521التوقيع، التحقق
CKM_SHA_1, CKM_SHA256, CKM_SHA384, CKM_SHA512——التلخيص
CKM_SHA256_HMAC, CKM_SHA384_HMAC, CKM_SHA512_HMAC1512التوقيع، التحقق
آليات التلخيص

يُحسَب التلخيص في Cockpit ويدعم حالياً SHA-256 / 384 / 512. تُعلَن CKM_SHA_1 لكن الخلفية ترفض ملخَّص SHA-1 (CKR_MECHANISM_INVALID).

الكائنات والسمات​

فئات الكائنات: CKO_DATA, CKO_CERTIFICATE, CKO_PUBLIC_KEY, CKO_PRIVATE_KEY, CKO_SECRET_KEY, CKO_DOMAIN_PARAMETERS.

أنواع المفاتيح: CKK_AES, CKK_RSA, CKK_EC, CKK_GENERIC_SECRET, CKK_DSA, CKK_DH, CKK_SHA256_HMAC, CKK_SHA384_HMAC, CKK_SHA512_HMAC.

يعيد C_GetAttributeValue، من الواصف المخزَّن مؤقتاً: CKA_CLASS, CKA_KEY_TYPE, CKA_LABEL, CKA_ID, CKA_VALUE_LEN, CKA_MODULUS, CKA_PUBLIC_EXPONENT, CKA_MODULUS_BITS, CKA_EC_PARAMS, CKA_EC_POINT، وأعلام القدرة المنطقية (CKA_TOKEN, CKA_PRIVATE, CKA_SENSITIVE, CKA_EXTRACTABLE, CKA_ENCRYPT, CKA_DECRYPT, CKA_WRAP, CKA_UNWRAP, CKA_SIGN, CKA_VERIFY, CKA_DERIVE, ...).

CKA_VALUE حساسة

تعيد CKA_VALUE دائماً CKR_ATTRIBUTE_SENSITIVE — لا تقيم مادة المفتاح الخام إلا في الخلفية ولا تعبر أبداً حدود PKCS#11. تُبلِغ المفاتيح عن CKA_EXTRACTABLE = false، وCKA_SENSITIVE = true، وCKA_NEVER_EXTRACTABLE = true. يعيد أي نوع سمة غير معروف القيمة CKR_ATTRIBUTE_TYPE_INVALID.