Cryptoki를 C# 응용 프로그램에서 사용하고 있습니다.크립토 키 DLL로 인해 응용 프로그램이 손상 될 수 있음
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를 초기화 : 내가 가진 문제는 다음이다.
-
컴파일러 (2012 VS)에서 디버그 모드에서 응용 프로그램을 실행 오류 : cryptoki가 초기화 된 후 적어도 하나의 카드 판독기는 다음과 같은 코드를 사용하여 존재하는 경우public static bool HasCardReaders { get { if (cryptoki == null) throw new PdfSignException(PdfSignExceptionCode.PDF_EXCEPTION_NOT_INITIALIZED); return cryptoki.Slots.Count != 0; } }
, 나는 확인 카드 판독기가 발견되지 않았다는 메시지가 표시됩니다 (응용 프로그램이 중단되지 않음).
- 컴파일러 (VS 2012) 외부에서 응용 프로그램을 실행할 때 - 디버그 폴더에서 exe를 두 번 클릭하면 응용 프로그램이 충돌합니다. 로그 파일을 보면 cryptoki를 초기화하는 동안 앱이 다운되는 경우가 있으며, 적어도 하나의 카드 리더가 있는지 확인하는 동안 앱이 다운되는 경우가 있습니다.
디버그 모드에서, I은 cryptoki.Slots가 [I] .Token 오류 N을 발생한다는 것을 발견했다. 224 -이 오류는 토큰이 없음을 의미합니다. 이 오류로 인해 내 앱이 중단 될 수 있습니까? 이 문제를 어떻게 극복 할 생각이 있습니까?
이 잘못 보이는 당신에게 Gica G.
cryptoki가 전에 사용 된 경우 해당 세션이 완료되었으므로 cryptoki가 null이어야합니다. – GicaGG
* always *'null' 인 경우, 왜 처음에는 그것을 매개 변수로 전달해야합니까? 특히 당신이 그것을 전달하기 때문에. – nvoigt
@noveigt 메소드가 클래스의 객체 참조에서 호출되도록 설계된 것처럼 보입니다. 즉, 클래스의 'cryptoki' 변수는 메소드가 호출 될 때 이미 인스턴스화 될 수 있지만 반드시 있으면 안됩니다. – IllusiveBrian