尝试读取或写入受保护的内存。 PKCS11互操作
Attempted to read or write protected memory. PKCS11Interop
我在突出显示的行中收到访问冲突异常。
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
我在 hsm
和 label
上有证书。我正在将我的应用程序构建为 x64
public void getCertificateFromHSM(string certLabel) {
List<ObjectAttribute> objectAttributes = new List<ObjectAttribute>();
objectAttributes.Add(new ObjectAttribute(CKA.CKA_CLASS, CKO.CKO_CERTIFICATE));
objectAttributes.Add(new ObjectAttribute(CKA.CKA_LABEL, certLabel));
**session.FindObjectsInit(objectAttributes);** --Exception from here
// Get search results
List<ObjectHandle> foundObjects = session.FindObjects(2);
// Terminate searching
session.FindObjectsFinal();
// Prepare list of empty attributes we want to read
List<CKA> attributes = new List<CKA>();
attributes.Add(CKA.CKA_LABEL);
attributes.Add(CKA.CKA_VALUE);
}
我从这一行中得到异常 session.FindObjectsInit();
。我是 pkcs11
的新手。
感谢您在这方面的任何帮助。
我还尝试通过传递 32 位 crypto.dll
将应用程序构建为 32 位,但在那种情况下,我从 PKCS11Interop Net.Pkcs11Interop.LowLevelAPI81.Delegates.InitializeWithGetFunctionList(IntPtr libraryHandle)
中的这一行得到异常,异常是
Value was either too large or too small for a UInt32. OverflowExcepiton was unhandled.
您似乎使用了一组错误的 HighLevelAPI。您需要使用 Net.Pkcs11Interop.HighLevelAPI
命名空间中的 类,末尾没有任何数字。
换句话说,您需要使用以下行
using Net.Pkcs11Interop.HighLevelAPI;
在您的代码中而不是
using Net.Pkcs11Interop.HighLevelAPI81;
参见 Pkcs11Interop library architecture for more info and you can also take a look at official code samples,它们也在使用 Net.Pkcs11Interop.HighLevelAPI
。
我在突出显示的行中收到访问冲突异常。
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
我在 hsm
和 label
上有证书。我正在将我的应用程序构建为 x64
public void getCertificateFromHSM(string certLabel) {
List<ObjectAttribute> objectAttributes = new List<ObjectAttribute>();
objectAttributes.Add(new ObjectAttribute(CKA.CKA_CLASS, CKO.CKO_CERTIFICATE));
objectAttributes.Add(new ObjectAttribute(CKA.CKA_LABEL, certLabel));
**session.FindObjectsInit(objectAttributes);** --Exception from here
// Get search results
List<ObjectHandle> foundObjects = session.FindObjects(2);
// Terminate searching
session.FindObjectsFinal();
// Prepare list of empty attributes we want to read
List<CKA> attributes = new List<CKA>();
attributes.Add(CKA.CKA_LABEL);
attributes.Add(CKA.CKA_VALUE);
}
我从这一行中得到异常 session.FindObjectsInit();
。我是 pkcs11
的新手。
感谢您在这方面的任何帮助。
我还尝试通过传递 32 位 crypto.dll
将应用程序构建为 32 位,但在那种情况下,我从 PKCS11Interop Net.Pkcs11Interop.LowLevelAPI81.Delegates.InitializeWithGetFunctionList(IntPtr libraryHandle)
中的这一行得到异常,异常是
Value was either too large or too small for a UInt32. OverflowExcepiton was unhandled.
您似乎使用了一组错误的 HighLevelAPI。您需要使用 Net.Pkcs11Interop.HighLevelAPI
命名空间中的 类,末尾没有任何数字。
换句话说,您需要使用以下行
using Net.Pkcs11Interop.HighLevelAPI;
在您的代码中而不是
using Net.Pkcs11Interop.HighLevelAPI81;
参见 Pkcs11Interop library architecture for more info and you can also take a look at official code samples,它们也在使用 Net.Pkcs11Interop.HighLevelAPI
。