/[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 8 by vletoux, Thu Mar 11 20:32:26 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 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 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                  dwReturn = CheckContext(pCardData);                  dwReturn = CheckContext(pCardData);
492                  if ( !dwReturn )                  if (dwReturn )
493                  {                  {
494                          Trace(WINEVENT_LEVEL_ERROR, L"GetContext dwReturn == 0x%08X", dwReturn);                          Trace(WINEVENT_LEVEL_ERROR, L"GetContext dwReturn == 0x%08X", dwReturn);
495                          dwReturn  = SCARD_E_INVALID_PARAMETER;                          dwReturn  = SCARD_E_INVALID_PARAMETER;
# Line 488  DWORD WINAPI CardChangeAuthenticator( Line 500  DWORD WINAPI CardChangeAuthenticator(
500                          dwReturn = ChangePIN(pCardData, ROLE_USER,                          dwReturn = ChangePIN(pCardData, ROLE_USER,
501                                                                  pbCurrentAuthenticator, cbCurrentAuthenticator,                                                                  pbCurrentAuthenticator, cbCurrentAuthenticator,
502                                                                  pbNewAuthenticator, cbNewAuthenticator);                                                                  pbNewAuthenticator, cbNewAuthenticator);
503                          if (pcAttemptsRemaining)                          if (dwReturn && pcAttemptsRemaining)
504                          {                          {
505                                  GetRemainingPin(pCardData, ROLE_USER, pcAttemptsRemaining);                                  GetRemainingPin(pCardData, ROLE_USER, pcAttemptsRemaining);
506                          }                          }
# Line 498  DWORD WINAPI CardChangeAuthenticator( Line 510  DWORD WINAPI CardChangeAuthenticator(
510                          dwReturn = ChangePIN(pCardData, ROLE_ADMIN,                          dwReturn = ChangePIN(pCardData, ROLE_ADMIN,
511                                                                  pbCurrentAuthenticator, cbCurrentAuthenticator,                                                                  pbCurrentAuthenticator, cbCurrentAuthenticator,
512                                                                  pbNewAuthenticator, cbNewAuthenticator);                                                                  pbNewAuthenticator, cbNewAuthenticator);
513                          if (pcAttemptsRemaining)                          if (dwReturn && pcAttemptsRemaining)
514                          {                          {
515                                  GetRemainingPin(pCardData,ROLE_ADMIN, pcAttemptsRemaining);                                  GetRemainingPin(pCardData,ROLE_ADMIN, pcAttemptsRemaining);
516                          }                          }
# Line 559  DWORD WINAPI CardChangeAuthenticatorEx( Line 571  DWORD WINAPI CardChangeAuthenticatorEx(
571                          dwReturn  = SCARD_E_INVALID_PARAMETER;                          dwReturn  = SCARD_E_INVALID_PARAMETER;
572                          __leave;                          __leave;
573                  }                  }
574                  if (!(dwFlags & CARD_AUTHENTICATE_PIN_PIN))                  if (dwFlags != PIN_CHANGE_FLAG_UNBLOCK && dwFlags != PIN_CHANGE_FLAG_CHANGEPIN)
575                  {                  {
576                          dwReturn = SCARD_E_UNSUPPORTED_FEATURE;                          dwReturn = SCARD_E_INVALID_PARAMETER;
577                          Trace(WINEVENT_LEVEL_ERROR, L"dwFlags = 0x%08X", dwFlags);                          Trace(WINEVENT_LEVEL_ERROR, L"dwFlags = 0x%08X", dwFlags);
578                          __leave;                          __leave;
579                  }                  }
580                  dwReturn = CheckContext(pCardData);                  dwReturn = CheckContext(pCardData);
581                  if ( !dwReturn )                  if ( dwReturn )
582                  {                  {
583                          Trace(WINEVENT_LEVEL_ERROR, L"GetContext dwReturn == 0x%08X", dwReturn);                          Trace(WINEVENT_LEVEL_ERROR, L"GetContext dwReturn == 0x%08X", dwReturn);
584                          dwReturn  = SCARD_E_INVALID_PARAMETER;                          dwReturn  = SCARD_E_INVALID_PARAMETER;
585                          __leave;                          __leave;
586                  }                  }
587                  if ( dwAuthenticatingPinId == dwTargetPinId)                  if ( dwAuthenticatingPinId == dwTargetPinId && dwFlags == PIN_CHANGE_FLAG_CHANGEPIN)
588                  {                  {
589                          dwReturn = ChangePIN(pCardData, dwAuthenticatingPinId,                          dwReturn = ChangePIN(pCardData, dwAuthenticatingPinId,
590                                                                  pbAuthenticatingPinData, cbAuthenticatingPinData,                                                                  pbAuthenticatingPinData, cbAuthenticatingPinData,
591                                                                  pbTargetData, cbTargetData);                                                                  pbTargetData, cbTargetData);
592                          if (pcAttemptsRemaining)                          if (dwReturn && pcAttemptsRemaining)
593                          {                          {
594                                  GetRemainingPin(pCardData, dwAuthenticatingPinId, pcAttemptsRemaining);                                  GetRemainingPin(pCardData, dwAuthenticatingPinId, pcAttemptsRemaining);
595                          }                          }
596                  }                  }
597                  else if ( dwAuthenticatingPinId == ROLE_ADMIN &&  dwTargetPinId == ROLE_USER)                  else if ( (dwAuthenticatingPinId == ROLE_ADMIN || dwAuthenticatingPinId == ROLE_PUK )
598                                            &&  dwTargetPinId == ROLE_USER  && dwFlags == PIN_CHANGE_FLAG_UNBLOCK)
599                    {
600                            dwReturn = ResetUserPIN(pCardData, dwAuthenticatingPinId,
601                                                                    pbAuthenticatingPinData, cbAuthenticatingPinData,
602                                                                    pbTargetData, cbTargetData);
603                            if (dwReturn && pcAttemptsRemaining)
604                            {
605                                    GetRemainingPin(pCardData,dwAuthenticatingPinId, pcAttemptsRemaining);
606                            }
607                    }
608                    else if ( dwAuthenticatingPinId == ROLE_ADMIN
609                                            &&  dwTargetPinId == ROLE_PUK  && dwFlags == PIN_CHANGE_FLAG_CHANGEPIN)
610                  {                  {
611                          dwReturn = ResetUserPIN(pCardData, ROLE_ADMIN,                          dwReturn = SetPUK(pCardData,
612                                                                  pbAuthenticatingPinData, cbAuthenticatingPinData,                                                                  pbAuthenticatingPinData, cbAuthenticatingPinData,
613                                                                  pbTargetData, cbTargetData);                                                                  pbTargetData, cbTargetData);
614                          if (pcAttemptsRemaining)                          if (dwReturn && pcAttemptsRemaining)
615                          {                          {
616                                  GetRemainingPin(pCardData,dwTargetPinId, pcAttemptsRemaining);                                  GetRemainingPin(pCardData,dwAuthenticatingPinId, pcAttemptsRemaining);
617                          }                          }
618                  }                  }
619                  else                  else

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26