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

Diff of /trunk/OpenPGPminidriver/SmartCard.c

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

revision 8 by vletoux, Thu Mar 11 20:32:26 2010 UTC revision 11 by vletoux, Thu Mar 18 16:03:39 2010 UTC
# Line 89  DWORD OCardSendCommand(__in PCARD_DATA Line 89  DWORD OCardSendCommand(__in PCARD_DATA
89                  }                  }
90                  SW1 = recvbuf[recvlen-2];                  SW1 = recvbuf[recvlen-2];
91                  SW2 = recvbuf[recvlen-1];                  SW2 = recvbuf[recvlen-1];
92                    if ( (SW1 == 0x6A) && (SW2 == 0x88) )
93                    {
94                            Trace(WINEVENT_LEVEL_ERROR, L"card reset");
95                            recvlen = sizeof(recvbuf);
96                            dwReturn = SelectOpenPGPApplication(pCardData);
97                            if (dwReturn)
98                            {
99                                    __leave;
100                            }
101                            dwReturn = SCardTransmit(pCardData->hScard,
102                                                                            SCARD_PCI_T1,
103                                                                            pbCmd,
104                                                                            dwCmdSize,
105                                                                            NULL,
106                                                                            recvbuf,
107                                                                            &recvlen);
108                            SW1 = recvbuf[recvlen-2];
109                            SW2 = recvbuf[recvlen-1];
110                    }
111                  if ( ( SW1 == 0x90 ) && ( SW2 == 0x00 ) )                  if ( ( SW1 == 0x90 ) && ( SW2 == 0x00 ) )
112                  {                  {
113    
# Line 105  DWORD OCardSendCommand(__in PCARD_DATA Line 124  DWORD OCardSendCommand(__in PCARD_DATA
124                          dwReturn = SCARD_W_CHV_BLOCKED;                          dwReturn = SCARD_W_CHV_BLOCKED;
125                          __leave;                          __leave;
126                  }                  }
127                    else if ( (SW1 == 0x69) && (SW2 == 0x85) )
128                    {
129                            Trace(WINEVENT_LEVEL_ERROR, L"SCARD_W_SECURITY_VIOLATION");
130                            dwReturn = SCARD_W_SECURITY_VIOLATION;
131                            __leave;
132                    }
133                  else                  else
134                  {                  {
135                          TraceDump(WINEVENT_LEVEL_ERROR, pbCmd,dwCmdSize);                          TraceDump(WINEVENT_LEVEL_ERROR, pbCmd,dwCmdSize);
# Line 182  DWORD OCardGetData(__in PCARD_DATA  pCar Line 207  DWORD OCardGetData(__in PCARD_DATA  pCar
207                          }                          }
208                          SW1 = recvbuf[recvlen-2];                          SW1 = recvbuf[recvlen-2];
209                          SW2 = recvbuf[recvlen-1];                          SW2 = recvbuf[recvlen-1];
210                            if ( (SW1 == 0x6A) && (SW2 == 0x88) )
211                            {
212                                    Trace(WINEVENT_LEVEL_ERROR, L"card reset");
213                                    recvlen = sizeof(recvbuf);
214                                    dwReturn = SelectOpenPGPApplication(pCardData);
215                                    if (dwReturn)
216                                    {
217                                            __leave;
218                                    }
219                                    dwReturn = SCardTransmit(pCardData->hScard,
220                                                                            SCARD_PCI_T1,
221                                                                            pbCmd,
222                                                                            dwCmdSize,
223                                                                            NULL,
224                                                                            recvbuf,
225                                                                            &recvlen);
226                                    SW1 = recvbuf[recvlen-2];
227                                    SW2 = recvbuf[recvlen-1];
228                            }
229                          if ( ( SW1 == 0x90 ) && ( SW2 == 0x00 ) )                          if ( ( SW1 == 0x90 ) && ( SW2 == 0x00 ) )
230                          {                          {
231                                  dwDataSize = recvlen-2;                                  dwDataSize = recvlen-2;
# Line 226  DWORD OCardGetData(__in PCARD_DATA  pCar Line 270  DWORD OCardGetData(__in PCARD_DATA  pCar
270                                  dwReturn = SCARD_W_CHV_BLOCKED;                                  dwReturn = SCARD_W_CHV_BLOCKED;
271                                  __leave;                                  __leave;
272                          }                          }
273                          else if ( (SW1 == 0x6A) && (SW2 == 0x88) )                          else if ( (SW1 == 0x69) && (SW2 == 0x85) )
274                          {                          {
275                                  Trace(WINEVENT_LEVEL_ERROR, L"SCARD_E_FILE_NOT_FOUND");                                  Trace(WINEVENT_LEVEL_ERROR, L"SCARD_W_SECURITY_VIOLATION");
276                                  dwReturn = SCARD_E_FILE_NOT_FOUND;                                  dwReturn = SCARD_W_SECURITY_VIOLATION;
277                                  __leave;                                  __leave;
278                          }                          }
279                          else                          else

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26