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 |
} |
} |
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 |
} |
} |
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 |
} |
} |
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); |
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; |
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 |
} |
} |
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 |
} |
} |
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 |