我在C#应用程序中使用cryptoki。我遇到的问题如下: 我使用以下代码初始化cryptoki:
public static bool InitializeCryptoki(string criptokilib)
{
if (cryptoki != null)
throw new PdfSignException(PdfSignExceptionCode.PDF_EXCEPTION_NOT_FINALIZED);
try
{
cryptoki = new Cryptoki(criptokilib);
if (cryptoki.Initialize() == 0)
{
isInitialized = true;
return true;
}
return false;
}
catch (CryptokiException ex)
{
Log.Log(log, LogState.ERROR, UserId, "Initialize", null, ex.Message);
return false;
}
}
criptokilib值等于“eTPKCS11.dll”。
在cryptoki初始化之后,我使用以下代码检查是否存在至少一个读卡器:
public static bool HasCardReaders
{
get
{
if (cryptoki == null)
throw new PdfSignException(PdfSignExceptionCode.PDF_EXCEPTION_NOT_INITIALIZED);
return cryptoki.Slots.Count != 0;
}
}
在调试模式下,我发现 cryptoki.Slots [i] .Token 会抛出错误n。 224 - 此错误表示不存在令牌。这个错误会导致我的应用程序崩溃吗?你知道怎么克服这个问题吗?
非常感谢, Gica G。
答案 0 :(得分:0)
if (cryptoki != null)
这看起来不错。那应该是:
if (cryptoki == null)
答案 1 :(得分:0)
似乎升级到最后一个NCryptoki.dll可以解决问题。
但是我仍然不明白为什么该错误导致我的应用程序崩溃。