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

Diff of /trunk/OpenPGPminidriver/CardKeyContainer.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 39  DWORD WINAPI CardCreateContainer( Line 39  DWORD WINAPI CardCreateContainer(
39  )  )
40  {  {
41          DWORD dwReturn = 0;              DWORD dwReturn = 0;    
42            POPENPGP_CONTEXT pContext = NULL;
43          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter bContainerIndex=%d",bContainerIndex);          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter bContainerIndex=%d",bContainerIndex);
44          __try          __try
45          {          {
# Line 60  DWORD WINAPI CardCreateContainer( Line 61  DWORD WINAPI CardCreateContainer(
61                          dwReturn  = SCARD_E_UNSUPPORTED_FEATURE;                          dwReturn  = SCARD_E_UNSUPPORTED_FEATURE;
62                          __leave;                          __leave;
63                  }                  }
64                    // controls are done in CardCreateContainerEx
65                  dwReturn = CardCreateContainerEx(pCardData,                  dwReturn = CardCreateContainerEx(pCardData,
66                                                                  bContainerIndex,                                                                  bContainerIndex,
67                                                                  dwFlags,                                                                  dwFlags,
# Line 97  DWORD WINAPI CardCreateContainerEx( Line 99  DWORD WINAPI CardCreateContainerEx(
99  )  )
100  {  {
101          DWORD dwReturn = 0;              DWORD dwReturn = 0;    
102            POPENPGP_CONTEXT pContext = NULL;
103          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter bContainerIndex=%d",bContainerIndex);          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter bContainerIndex=%d",bContainerIndex);
104          __try          __try
105          {          {
# Line 129  DWORD WINAPI CardCreateContainerEx( Line 132  DWORD WINAPI CardCreateContainerEx(
132                  {                  {
133                          __leave;                          __leave;
134                  }                  }
135                  if ((dwFlags & CARD_CREATE_CONTAINER_KEY_GEN) == CARD_CREATE_CONTAINER_KEY_GEN )                  pContext = (POPENPGP_CONTEXT) pCardData->pvVendorSpecific;
136                    if (pContext->fIsReadOnly)
137                  {                  {
138                          dwReturn = SCardCreateKey(pCardData, bContainerIndex, dwKeySize);                          dwReturn = SCARD_E_UNSUPPORTED_FEATURE;
139                            Trace(WINEVENT_LEVEL_ERROR, L"Readonly card");
140                            __leave;
141                    }
142                    if (dwFlags == CARD_CREATE_CONTAINER_KEY_GEN)
143                    {
144                            dwReturn = OCardCreateKey(pCardData, bContainerIndex, dwKeySize);
145                  }                  }
146                  else if ((dwFlags & CARD_CREATE_CONTAINER_KEY_IMPORT ) == CARD_CREATE_CONTAINER_KEY_IMPORT  )                  else if (dwFlags == CARD_CREATE_CONTAINER_KEY_IMPORT)
147                  {                  {
148                          if (pbKeyData == NULL)                          if (pbKeyData == NULL)
149                          {                          {
# Line 141  DWORD WINAPI CardCreateContainerEx( Line 151  DWORD WINAPI CardCreateContainerEx(
151                                  dwReturn  = SCARD_E_INVALID_PARAMETER;                                  dwReturn  = SCARD_E_INVALID_PARAMETER;
152                                  __leave;                                  __leave;
153                          }                          }
154                          dwReturn = SCardImportKey(pCardData, bContainerIndex, pbKeyData, dwKeySize);                          dwReturn = OCardImportKey(pCardData, bContainerIndex, pbKeyData, dwKeySize);
155                  }                  }
156                  else                  else
157                  {                  {
# Line 181  DWORD WINAPI CardGetContainerInfo( Line 191  DWORD WINAPI CardGetContainerInfo(
191      __inout PCONTAINER_INFO  pContainerInfo      __inout PCONTAINER_INFO  pContainerInfo
192  )  )
193  {  {
194          DWORD dwReturn = 0;              DWORD dwReturn = 0, dwVersion;  
195          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter bContainerIndex=%d",bContainerIndex);          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter bContainerIndex=%d",bContainerIndex);
196          __try          __try
197          {          {
# Line 197  DWORD WINAPI CardGetContainerInfo( Line 207  DWORD WINAPI CardGetContainerInfo(
207                          dwReturn  = SCARD_E_INVALID_PARAMETER;                          dwReturn  = SCARD_E_INVALID_PARAMETER;
208                          __leave;                          __leave;
209                  }                  }
210                    dwVersion = (pContainerInfo->dwVersion == 0) ? 1 : pContainerInfo->dwVersion;
211                    if ( dwVersion != CONTAINER_INFO_CURRENT_VERSION )
212                    {
213                            Trace(WINEVENT_LEVEL_ERROR, L"dwVersion == %d", pContainerInfo->dwVersion);
214                            dwReturn  = ERROR_REVISION_MISMATCH;
215                            __leave;
216                    }
217                  if ( dwFlags )                  if ( dwFlags )
218                  {                  {
219                          Trace(WINEVENT_LEVEL_ERROR, L"dwFlags == %d", dwFlags);                          Trace(WINEVENT_LEVEL_ERROR, L"dwFlags == %d", dwFlags);
# Line 222  DWORD WINAPI CardGetContainerInfo( Line 239  DWORD WINAPI CardGetContainerInfo(
239                  {                  {
240                          case Signature:                          case Signature:
241                          case Authentication:                          case Authentication:
242                                  dwReturn = SCardReadPublicKey(pCardData, bContainerIndex,                                  dwReturn = OCardReadPublicKey(pCardData, bContainerIndex,
243                                          &(pContainerInfo->pbSigPublicKey),&(pContainerInfo->cbSigPublicKey));                                          &(pContainerInfo->pbSigPublicKey),&(pContainerInfo->cbSigPublicKey));
244                                  break;                                  break;
245                          case Confidentiality:                          case Confidentiality:
246                                  dwReturn = SCardReadPublicKey(pCardData, bContainerIndex,                                  dwReturn = OCardReadPublicKey(pCardData, bContainerIndex,
247                                          &(pContainerInfo->pbKeyExPublicKey),&(pContainerInfo->cbKeyExPublicKey));                                          &(pContainerInfo->pbKeyExPublicKey),&(pContainerInfo->cbKeyExPublicKey));
248                                  break;                                  break;
249                  }                  }

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26