34 |
#define OPENPGP_FILE_OPTIONAL 1 |
#define OPENPGP_FILE_OPTIONAL 1 |
35 |
#define OPENPGP_FILE_WRITE_ONLY 2 |
#define OPENPGP_FILE_WRITE_ONLY 2 |
36 |
#define OPENPGP_FILE_NULL_LENGHT_EQUALS_MISSING 4 |
#define OPENPGP_FILE_NULL_LENGHT_EQUALS_MISSING 4 |
37 |
|
#define OPENPGP_FILE_CONF_IS_AUTH 8 |
38 |
|
|
39 |
typedef struct _OPENPGP_FILE |
typedef struct _OPENPGP_FILE |
40 |
{ |
{ |
71 |
{NULL, szCARD_APPLICATION_FILE, Virtual, 0, 0, EveryoneReadAdminWriteAc}, |
{NULL, szCARD_APPLICATION_FILE, Virtual, 0, 0, EveryoneReadAdminWriteAc}, |
72 |
{NULL, szCACHE_FILE, Virtual, 0, 0, EveryoneReadUserWriteAc}, |
{NULL, szCACHE_FILE, Virtual, 0, 0, EveryoneReadUserWriteAc}, |
73 |
{szBASE_CSP_DIR, szCONTAINER_MAP_FILE, Virtual, 0, 0, EveryoneReadUserWriteAc}, |
{szBASE_CSP_DIR, szCONTAINER_MAP_FILE, Virtual, 0, 0, EveryoneReadUserWriteAc}, |
74 |
{szBASE_CSP_DIR, "ksc1", StoredOnSmartCard, 0x7F21, 0, EveryoneReadAdminWriteAc, OPENPGP_FILE_NULL_LENGHT_EQUALS_MISSING}, |
{szBASE_CSP_DIR, "ksc1", StoredOnSmartCard, 0x7F21, 0, EveryoneReadAdminWriteAc, OPENPGP_FILE_NULL_LENGHT_EQUALS_MISSING | OPENPGP_FILE_CONF_IS_AUTH}, |
75 |
|
{szBASE_CSP_DIR, "ksc2", StoredOnSmartCard, 0x7F21, 0, EveryoneReadAdminWriteAc, OPENPGP_FILE_NULL_LENGHT_EQUALS_MISSING}, |
76 |
|
|
77 |
}; |
}; |
78 |
|
|
239 |
__in_opt PSTR szDirectory, |
__in_opt PSTR szDirectory, |
240 |
__in PBYTE* pbResponse, __in PDWORD pdwResponseSize) |
__in PBYTE* pbResponse, __in PDWORD pdwResponseSize) |
241 |
{ |
{ |
242 |
DWORD dwReturn = 0, dwReadFileReturn; |
DWORD dwReturn = 0, dwTempReturn; |
243 |
DWORD dwI, dwSize; |
DWORD dwI, dwSize; |
244 |
BOOL fDirectoryFound = FALSE; |
BOOL fDirectoryFound = FALSE; |
245 |
BOOL fAddToOuput; |
BOOL fAddToOuput; |
298 |
DWORD dwSize; |
DWORD dwSize; |
299 |
fAddToOuput = FALSE; |
fAddToOuput = FALSE; |
300 |
// check if the file exists and be read |
// check if the file exists and be read |
301 |
dwReadFileReturn = OCardReadFile(pCardData, szDirectory, Files[dwI].szFile, &pbData, &dwSize); |
dwTempReturn = OCardReadFile(pCardData, szDirectory, Files[dwI].szFile, &pbData, &dwSize); |
302 |
if (!dwReadFileReturn) |
if (!dwTempReturn) |
303 |
{ |
{ |
304 |
pCardData->pfnCspFree(pbData); |
pCardData->pfnCspFree(pbData); |
305 |
if (dwSize > 0) |
if (dwSize > 0) |
308 |
} |
} |
309 |
} |
} |
310 |
} |
} |
311 |
|
if (fAddToOuput && (Files[dwI].dwFlag & OPENPGP_FILE_CONF_IS_AUTH)) |
312 |
|
{ |
313 |
|
dwTempReturn = OCardIsConfidentialityKeyTheSameThanAuthentication(pCardData); |
314 |
|
if (dwReturn) |
315 |
|
{ |
316 |
|
fAddToOuput = FALSE; |
317 |
|
} |
318 |
|
} |
319 |
if (fAddToOuput) |
if (fAddToOuput) |
320 |
{ |
{ |
321 |
dwSize = (DWORD) strlen( Files[dwI].szFile) + 1; |
dwSize = (DWORD) strlen( Files[dwI].szFile) + 1; |