/[openpgpmdrv]/trunk/OpenPGPminidriver/CardPinOperation.c
ViewVC logotype

Diff of /trunk/OpenPGPminidriver/CardPinOperation.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1 by vletoux, Tue Feb 23 19:18:59 2010 UTC revision 11 by vletoux, Thu Mar 18 16:03:39 2010 UTC
# Line 76  DWORD WINAPI CardAuthenticatePin( Line 76  DWORD WINAPI CardAuthenticatePin(
76                                  __leave;                                  __leave;
77                          }                          }
78                          dwReturn = VerifyPIN(pCardData, ROLE_USER, pbPin, cbPin);                          dwReturn = VerifyPIN(pCardData, ROLE_USER, pbPin, cbPin);
79                          if (pcAttemptsRemaining)                          if (dwReturn && pcAttemptsRemaining)
80                          {                          {
81                                  GetRemainingPin(pCardData, ROLE_USER, pcAttemptsRemaining);                                  GetRemainingPin(pCardData, ROLE_USER, pcAttemptsRemaining);
82                          }                          }
# Line 89  DWORD WINAPI CardAuthenticatePin( Line 89  DWORD WINAPI CardAuthenticatePin(
89                                  __leave;                                  __leave;
90                          }                          }
91                          dwReturn = VerifyPIN(pCardData, ROLE_ADMIN, pbPin, cbPin);                          dwReturn = VerifyPIN(pCardData, ROLE_ADMIN, pbPin, cbPin);
92                          if (pcAttemptsRemaining)                          if (dwReturn && pcAttemptsRemaining)
93                          {                          {
94                                  GetRemainingPin(pCardData, ROLE_ADMIN, pcAttemptsRemaining);                                  GetRemainingPin(pCardData, ROLE_ADMIN, pcAttemptsRemaining);
95                          }                          }
# Line 161  DWORD WINAPI CardDeauthenticate( Line 161  DWORD WINAPI CardDeauthenticate(
161  )  )
162  {  {
163          DWORD dwReturn = 0;              DWORD dwReturn = 0;    
164          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter");          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter %s", pwszUserId);
165          __try          __try
166          {          {
167                  if ( pCardData == NULL )                  if ( pCardData == NULL )
# Line 194  DWORD WINAPI CardDeauthenticate( Line 194  DWORD WINAPI CardDeauthenticate(
194          __finally          __finally
195          {          {
196          }          }
197          Trace(WINEVENT_LEVEL_VERBOSE, L"dwReturn = 0x%08X",dwReturn);          Trace(WINEVENT_LEVEL_VERBOSE, L"%s dwReturn = 0x%08X", pwszUserId,dwReturn);
198          return dwReturn;          return dwReturn;
199  }  }
200    
# Line 227  DWORD WINAPI CardAuthenticateEx( Line 227  DWORD WINAPI CardAuthenticateEx(
227                          dwReturn  = SCARD_E_INVALID_PARAMETER;                          dwReturn  = SCARD_E_INVALID_PARAMETER;
228                          __leave;                          __leave;
229                  }                  }
                 if ( pbPinData == NULL )  
                 {  
                         Trace(WINEVENT_LEVEL_ERROR, L"pbPinData == NULL");  
                         dwReturn  = SCARD_E_INVALID_PARAMETER;  
                         __leave;  
                 }  
230                  if ((dwFlags & CARD_AUTHENTICATE_GENERATE_SESSION_PIN)                  if ((dwFlags & CARD_AUTHENTICATE_GENERATE_SESSION_PIN)
231                          || (dwFlags & CARD_AUTHENTICATE_SESSION_PIN))                          || (dwFlags & CARD_AUTHENTICATE_SESSION_PIN))
232                  {                  {
# Line 250  DWORD WINAPI CardAuthenticateEx( Line 244  DWORD WINAPI CardAuthenticateEx(
244                                  __leave;                                  __leave;
245                          }                          }
246                  }                  }
247                    if ( pbPinData == NULL )
248                    {
249                            Trace(WINEVENT_LEVEL_ERROR, L"pbPinData == NULL");
250                            dwReturn  = SCARD_E_INVALID_PARAMETER;
251                            __leave;
252                    }
253                  dwReturn = CheckContext(pCardData);                  dwReturn = CheckContext(pCardData);
254                  if ( dwReturn )                  if ( dwReturn )
255                  {                  {
# Line 263  DWORD WINAPI CardAuthenticateEx( Line 263  DWORD WINAPI CardAuthenticateEx(
263                          __leave;                          __leave;
264                  }                  }
265                  dwReturn = VerifyPIN(pCardData, PinId, pbPinData, cbPinData);                  dwReturn = VerifyPIN(pCardData, PinId, pbPinData, cbPinData);
266                  if (pcAttemptsRemaining)                  if (dwReturn && pcAttemptsRemaining)
267                  {                  {
268                          GetRemainingPin(pCardData, PinId, pcAttemptsRemaining);                          GetRemainingPin(pCardData, PinId, pcAttemptsRemaining);
269                  }                  }
# Line 308  DWORD WINAPI CardDeauthenticateEx( Line 308  DWORD WINAPI CardDeauthenticateEx(
308  )  )
309  {  {
310          DWORD dwReturn = 0;              DWORD dwReturn = 0;    
311          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter");          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter PinId = %d", PinId);
312          __try          __try
313          {          {
314                  if ( pCardData == NULL )                  if ( pCardData == NULL )
# Line 335  DWORD WINAPI CardDeauthenticateEx( Line 335  DWORD WINAPI CardDeauthenticateEx(
335          __finally          __finally
336          {          {
337          }          }
338          Trace(WINEVENT_LEVEL_VERBOSE, L"dwReturn = 0x%08X",dwReturn);          Trace(WINEVENT_LEVEL_VERBOSE, L"PinId = %d dwReturn = 0x%08X",PinId, dwReturn);
339          return dwReturn;          return dwReturn;
340  }  }
341    
# Line 385  DWORD WINAPI CardUnblockPin( Line 385  DWORD WINAPI CardUnblockPin(
385                          dwReturn  = SCARD_E_INVALID_PARAMETER;                          dwReturn  = SCARD_E_INVALID_PARAMETER;
386                          __leave;                          __leave;
387                  }                  }
388                  if (!(dwFlags & CARD_AUTHENTICATE_PIN_PIN))                  if (dwFlags == CARD_AUTHENTICATE_PIN_CHALLENGE_RESPONSE)
389                  {                  {
390                          dwReturn = SCARD_E_UNSUPPORTED_FEATURE;                          dwReturn = SCARD_E_UNSUPPORTED_FEATURE;
391                          Trace(WINEVENT_LEVEL_ERROR, L"dwFlags = 0x%08X", dwFlags);                          Trace(WINEVENT_LEVEL_ERROR, L"CARD_AUTHENTICATE_PIN_CHALLENGE_RESPONSE SCARD_E_UNSUPPORTED_FEATURE");
392                            __leave;
393                    }
394                    if (dwFlags != CARD_AUTHENTICATE_PIN_PIN)
395                    {
396                            dwReturn = SCARD_E_INVALID_PARAMETER;
397                            Trace(WINEVENT_LEVEL_ERROR, L"SCARD_E_INVALID_PARAMETER dwFlags = 0x%08X", dwFlags);
398                          __leave;                          __leave;
399                  }                  }
400                  dwReturn = CheckContext(pCardData);                  dwReturn = CheckContext(pCardData);
# Line 470  DWORD WINAPI CardChangeAuthenticator( Line 476  DWORD WINAPI CardChangeAuthenticator(
476                          dwReturn  = SCARD_E_INVALID_PARAMETER;                          dwReturn  = SCARD_E_INVALID_PARAMETER;
477                          __leave;                          __leave;
478                  }                  }
479                  if (!(dwFlags & CARD_AUTHENTICATE_PIN_PIN))                  if (dwFlags == CARD_AUTHENTICATE_PIN_CHALLENGE_RESPONSE)
480                  {                  {
481                          dwReturn = SCARD_E_UNSUPPORTED_FEATURE;                          dwReturn = SCARD_E_UNSUPPORTED_FEATURE;
482                          Trace(WINEVENT_LEVEL_ERROR, L"dwFlags = 0x%08X", dwFlags);                          Trace(WINEVENT_LEVEL_ERROR, L"dwFlags = 0x%08X", dwFlags);
483                          __leave;                          __leave;
484                  }                  }
485                    if (dwFlags != CARD_AUTHENTICATE_PIN_PIN)
486                    {
487                            dwReturn = SCARD_E_INVALID_PARAMETER;
488                            Trace(WINEVENT_LEVEL_ERROR, L"dwFlags = 0x%08X", dwFlags);
489                            __leave;
490                    }
491                    if (cRetryCount)
492                    {
493                            dwReturn = SCARD_E_INVALID_PARAMETER;
494                            Trace(WINEVENT_LEVEL_ERROR, L"cRetryCount = %d", cRetryCount);
495                            __leave;
496                    }
497                  dwReturn = CheckContext(pCardData);                  dwReturn = CheckContext(pCardData);
498                  if ( !dwReturn )                  if (dwReturn )
499                  {                  {
500                          Trace(WINEVENT_LEVEL_ERROR, L"GetContext dwReturn == 0x%08X", dwReturn);                          Trace(WINEVENT_LEVEL_ERROR, L"GetContext dwReturn == 0x%08X", dwReturn);
501                          dwReturn  = SCARD_E_INVALID_PARAMETER;                          dwReturn  = SCARD_E_INVALID_PARAMETER;
# Line 488  DWORD WINAPI CardChangeAuthenticator( Line 506  DWORD WINAPI CardChangeAuthenticator(
506                          dwReturn = ChangePIN(pCardData, ROLE_USER,                          dwReturn = ChangePIN(pCardData, ROLE_USER,
507                                                                  pbCurrentAuthenticator, cbCurrentAuthenticator,                                                                  pbCurrentAuthenticator, cbCurrentAuthenticator,
508                                                                  pbNewAuthenticator, cbNewAuthenticator);                                                                  pbNewAuthenticator, cbNewAuthenticator);
509                          if (pcAttemptsRemaining)                          if (dwReturn && pcAttemptsRemaining)
510                          {                          {
511                                  GetRemainingPin(pCardData, ROLE_USER, pcAttemptsRemaining);                                  GetRemainingPin(pCardData, ROLE_USER, pcAttemptsRemaining);
512                          }                          }
# Line 498  DWORD WINAPI CardChangeAuthenticator( Line 516  DWORD WINAPI CardChangeAuthenticator(
516                          dwReturn = ChangePIN(pCardData, ROLE_ADMIN,                          dwReturn = ChangePIN(pCardData, ROLE_ADMIN,
517                                                                  pbCurrentAuthenticator, cbCurrentAuthenticator,                                                                  pbCurrentAuthenticator, cbCurrentAuthenticator,
518                                                                  pbNewAuthenticator, cbNewAuthenticator);                                                                  pbNewAuthenticator, cbNewAuthenticator);
519                          if (pcAttemptsRemaining)                          if (dwReturn && pcAttemptsRemaining)
520                          {                          {
521                                  GetRemainingPin(pCardData,ROLE_ADMIN, pcAttemptsRemaining);                                  GetRemainingPin(pCardData,ROLE_ADMIN, pcAttemptsRemaining);
522                          }                          }
# Line 559  DWORD WINAPI CardChangeAuthenticatorEx( Line 577  DWORD WINAPI CardChangeAuthenticatorEx(
577                          dwReturn  = SCARD_E_INVALID_PARAMETER;                          dwReturn  = SCARD_E_INVALID_PARAMETER;
578                          __leave;                          __leave;
579                  }                  }
580                  if (!(dwFlags & CARD_AUTHENTICATE_PIN_PIN))                  if (dwFlags != PIN_CHANGE_FLAG_UNBLOCK && dwFlags != PIN_CHANGE_FLAG_CHANGEPIN)
581                  {                  {
582                          dwReturn = SCARD_E_UNSUPPORTED_FEATURE;                          dwReturn = SCARD_E_INVALID_PARAMETER;
583                          Trace(WINEVENT_LEVEL_ERROR, L"dwFlags = 0x%08X", dwFlags);                          Trace(WINEVENT_LEVEL_ERROR, L"dwFlags = 0x%08X", dwFlags);
584                          __leave;                          __leave;
585                  }                  }
586                    if (cRetryCount)
587                    {
588                            dwReturn = SCARD_E_INVALID_PARAMETER;
589                            Trace(WINEVENT_LEVEL_ERROR, L"cRetryCount = %d", cRetryCount);
590                            __leave;
591                    }
592                  dwReturn = CheckContext(pCardData);                  dwReturn = CheckContext(pCardData);
593                  if ( !dwReturn )                  if ( dwReturn )
594                  {                  {
595                          Trace(WINEVENT_LEVEL_ERROR, L"GetContext dwReturn == 0x%08X", dwReturn);                          Trace(WINEVENT_LEVEL_ERROR, L"GetContext dwReturn == 0x%08X", dwReturn);
596                          dwReturn  = SCARD_E_INVALID_PARAMETER;                          dwReturn  = SCARD_E_INVALID_PARAMETER;
597                          __leave;                          __leave;
598                  }                  }
599                  if ( dwAuthenticatingPinId == dwTargetPinId)                  if ( dwAuthenticatingPinId == dwTargetPinId && dwFlags == PIN_CHANGE_FLAG_CHANGEPIN)
600                  {                  {
601                          dwReturn = ChangePIN(pCardData, dwAuthenticatingPinId,                          dwReturn = ChangePIN(pCardData, dwAuthenticatingPinId,
602                                                                  pbAuthenticatingPinData, cbAuthenticatingPinData,                                                                  pbAuthenticatingPinData, cbAuthenticatingPinData,
603                                                                  pbTargetData, cbTargetData);                                                                  pbTargetData, cbTargetData);
604                          if (pcAttemptsRemaining)                          if (dwReturn && pcAttemptsRemaining)
605                          {                          {
606                                  GetRemainingPin(pCardData, dwAuthenticatingPinId, pcAttemptsRemaining);                                  GetRemainingPin(pCardData, dwAuthenticatingPinId, pcAttemptsRemaining);
607                          }                          }
608                  }                  }
609                  else if ( dwAuthenticatingPinId == ROLE_ADMIN &&  dwTargetPinId == ROLE_USER)                  else if ( (dwAuthenticatingPinId == ROLE_ADMIN || dwAuthenticatingPinId == ROLE_PUK )
610                                            &&  (dwTargetPinId == ROLE_USER || dwTargetPinId == ROLE_AUTHENTICATION)
611                                            && dwFlags == PIN_CHANGE_FLAG_UNBLOCK)
612                    {
613                            dwReturn = ResetUserPIN(pCardData, dwAuthenticatingPinId,
614                                                                    pbAuthenticatingPinData, cbAuthenticatingPinData,
615                                                                    pbTargetData, cbTargetData);
616                            if (dwReturn && pcAttemptsRemaining)
617                            {
618                                    GetRemainingPin(pCardData,dwAuthenticatingPinId, pcAttemptsRemaining);
619                            }
620                    }
621                    else if ( dwAuthenticatingPinId == ROLE_ADMIN
622                                            &&  dwTargetPinId == ROLE_PUK  && dwFlags == PIN_CHANGE_FLAG_CHANGEPIN)
623                  {                  {
624                          dwReturn = ResetUserPIN(pCardData, ROLE_ADMIN,                          dwReturn = SetPUK(pCardData,
625                                                                  pbAuthenticatingPinData, cbAuthenticatingPinData,                                                                  pbAuthenticatingPinData, cbAuthenticatingPinData,
626                                                                  pbTargetData, cbTargetData);                                                                  pbTargetData, cbTargetData);
627                          if (pcAttemptsRemaining)                          if (dwReturn && pcAttemptsRemaining)
628                          {                          {
629                                  GetRemainingPin(pCardData,dwTargetPinId, pcAttemptsRemaining);                                  GetRemainingPin(pCardData,dwAuthenticatingPinId, pcAttemptsRemaining);
630                          }                          }
631                  }                  }
632                  else                  else

Legend:
Removed from v.1  
changed lines
  Added in v.11

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26