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