2014-09-01 4 views
1

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를 초기화 : 내가 가진 문제는 다음이다.

  • public static bool HasCardReaders 
    { 
        get 
        { 
         if (cryptoki == null) 
          throw new PdfSignException(PdfSignExceptionCode.PDF_EXCEPTION_NOT_INITIALIZED); 
         return cryptoki.Slots.Count != 0; 
        } 
    } 
    
    컴파일러 (2012 VS)에서 디버그 모드에서 응용 프로그램을 실행 오류 : cryptoki가 초기화 된 후 적어도 하나의 카드 판독기는 다음과 같은 코드를 사용하여 존재하는 경우

    , 나는 확인 카드 판독기가 발견되지 않았다는 메시지가 표시됩니다 (응용 프로그램이 중단되지 않음).

  • 컴파일러 (VS 2012) 외부에서 응용 프로그램을 실행할 때 - 디버그 폴더에서 exe를 두 번 클릭하면 응용 프로그램이 충돌합니다. 로그 파일을 보면 cryptoki를 초기화하는 동안 앱이 다운되는 경우가 있으며, 적어도 하나의 카드 리더가 있는지 확인하는 동안 앱이 다운되는 경우가 있습니다.

디버그 모드에서, I은 cryptoki.Slots가 [I] .Token 오류 N을 발생한다는 것을 발견했다. 224 -이 오류는 토큰이 없음을 의미합니다. 이 오류로 인해 내 앱이 중단 될 수 있습니까? 이 문제를 어떻게 극복 할 생각이 있습니까?

이 잘못 보이는 당신에게 Gica G.

답변

0

마지막 NCryptoki.dll로 업그레이드하면 문제가 해결되는 것 같습니다.

그러나 그 오류로 인해 내 앱이 중단되는 이유를 아직 이해하지 못했습니다.

0
if (cryptoki != null) 

를 대단히 감사합니다. 읽어야합니다 :

if (cryptoki == null) 
+0

cryptoki가 전에 사용 된 경우 해당 세션이 완료되었으므로 cryptoki가 null이어야합니다. – GicaGG

+0

* always *'null' 인 경우, 왜 처음에는 그것을 매개 변수로 전달해야합니까? 특히 당신이 그것을 전달하기 때문에. – nvoigt

+0

@noveigt 메소드가 클래스의 객체 참조에서 호출되도록 설계된 것처럼 보입니다. 즉, 클래스의 'cryptoki' 변수는 메소드가 호출 될 때 이미 인스턴스화 될 수 있지만 반드시 있으면 안됩니다. – IllusiveBrian

관련 문제