pkcs15: include MD data into sc_pkcs15 data type

New data are used to support the card specific minidriver on-card files.
Beeing included into internal pkcs15 data type,
these new data are accessible at the all frameworks: emulation of pkcs15 and pkcs15init, minidriver.
This commit is contained in:
Viktor Tarasov 2013-04-08 12:39:03 +02:00
parent 411cbfb403
commit 40570143b9
2 changed files with 31 additions and 1 deletions

View File

@ -778,6 +778,11 @@ void sc_pkcs15_card_free(struct sc_pkcs15_card *p15card)
if (p15card->ops.clear)
p15card->ops.clear(p15card);
/* For more complicated MD data a dedicated release procedure
* has to be implemented. */
if (p15card->md_data)
free(p15card->md_data);
sc_pkcs15_remove_objects(p15card);
sc_pkcs15_remove_dfs(p15card);
sc_pkcs15_free_unusedspace(p15card);

View File

@ -412,6 +412,30 @@ struct sc_md_cmap_record {
unsigned keysize_keyexchange;
};
/* From Windows Smart Card Minidriver Specification
* Version 7.06
*
* typedef struct _CARD_CACHE_FILE_FORMAT
* {
* BYTE bVersion; // Cache version
* BYTE bPinsFreshness; // Card PIN
* WORD wContainersFreshness;
* WORD wFilesFreshness;
* } CARD_CACHE_FILE_FORMAT, *PCARD_CACHE_FILE_FORMAT;
*/
struct sc_md_cardcf {
unsigned char version;
unsigned char pin_freshness;
unsigned cont_freshness;
unsigned files_freshness;
};
struct sc_md_data {
struct sc_md_cardcf cardcf;
void *prop_data;
};
struct sc_pkcs15_prkey_info {
struct sc_pkcs15_id id; /* correlates to public certificate id */
unsigned int usage, access_flags;
@ -628,7 +652,8 @@ typedef struct sc_pkcs15_card {
unsigned int magic;
void *dll_handle; /* shared lib for emulated cards */
void *dll_handle; /* shared lib for emulated cards */
struct sc_md_data *md_data; /* minidriver specific data */
struct sc_pkcs15_operations ops;