0
如何將由C_FindObject返回的ulong Object_Handle轉換爲C#中的X509Certificate對象。這是代碼。將PKCS'11對象句柄轉換爲C#中的X509Certificate對象
ulong[] foundObjectIds = new ulong[10];
foundObjectIds[0] = CK_INVALID_HANDLE;
success = PKCS11CsharpWrapper.C_FindObjects(session, foundObjectIds, Convert.ToUInt64(foundObjectIds.Length), ref foundObjectCount);
現在我必須將foundObjectIds [0]轉換爲X509Certificate對象。
我試過下面的方法,它不適合我。
IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(ulong)));
Marshal.StructureToPtr(foundObjectIds[0], ptr, false);
IntPtr[] arr = new IntPtr[2];
Marshal.Copy(ptr, arr, 0, 1);
X509Certificate2 cert= new X509Certificate2((IntPtr)foundObjectIds[0]);
我最近遇到了這個PKCS11 interop。在那之前我的原型是基於lowlevel api的。我剛開始用highlevel api替換它們,但在兩種情況下它都返回一個IntPtr。我嘗試將內容複製到一個byte []並嘗試使用它來初始化X509Certifcate。但是我得到錯誤。 「字節數組不能轉換爲X509Certificate」 –