خطأ bad_uid أثناء تصدير المفتاح في cryptoapi
سؤال
أنا أكتب تطبيق اختبار لـ Microsoft Cryptoapi. أرغب في تصدير المفتاح السري لطرف واحد باستخدام المفتاح العام للطرف الثاني ، ثم استيراد هذا المفتاح السري كمفتاح سري للطرف الثاني (هذا يضع مفتاحًا سريًا مشتركًا للاتصال). ها هو رمزتي:
if(!CryptExportKey(encryptT->hSymKey, decryptT->hPubKey, SIMPLEBLOB, 0, keyExBuf, &bufLen)) {
FormattedDebugPrint(NULL, GetLastError(), "could not export secret key", TRUE);
return -1;
}
if(!CryptImportKey(decryptT->hCryptProv, keyExBuf, bufLen, decryptT->hPubKey, 0, &(decryptT->hSymKey))) {
FormattedDebugPrint(NULL, GetLastError(), "could not import secret key", TRUE);
return -1;
}
وهذا يعطي الخطأ:
80090001: Bad UID.
يتم إنشاء keypair العام لكل من incryptt و decryptt (المرسل ، المتلقي) عن طريق الاتصال:
CryptGenKey(encryptT->hCryptProv, CALG_RSA_KEYX, CRYPT_EXPORTABLE, &(encryptT->hPubKey))
أي فكرة عما يمكن أن يسبب الخطأ؟
شكرًا،
المحلول
لا يهم ، لقد اكتشفت ذلك. في الأساس ، لا يمكنك فقط استخدام مفتاح عام آخر مباشرة حتى لو تم تهيئته بنفس الطريقة - كنت بحاجة إلى تصدير هذا المفتاح العام أولاً ، ثم استيراده باستخدام مقبض مزود التشفير للطرف الآخر.
لا تنتمي إلى StackOverflow