#ifndef CARD_GIDS_H_
#define CARD_GIDS_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "pkcs15.h"
struct sc_cardctl_gids_genkey {
sc_pkcs15_object_t *object;
struct sc_pkcs15_pubkey* pubkey;
};
struct sc_cardctl_gids_importkey {
sc_pkcs15_object_t *object;
sc_pkcs15_prkey_t *key;
};
struct sc_cardctl_gids_save_cert {
sc_pkcs15_object_t *certobject;
sc_pkcs15_object_t *privkeyobject;
struct sc_path *path;
};
typedef struct sc_cardctl_gids_get_container {
size_t containernum;
int pubusage;
int prvusage;
char label[40];
int module_length;
sc_path_t certificatepath;
} sc_cardctl_gids_get_container_t;
typedef struct sc_cardctl_gids_init_param {
u8 init_code[24];
size_t user_pin_len;
u8* user_pin;
u8 cardid[16];
} sc_cardctl_gids_init_param_t;
#define UserCreateDeleteDirAc_FI 0xA000
#define EveryoneReadUserWriteAc_FI 0xA010
#define EveryoneReadAdminWriteAc_FI 0xA012
#define MF_FI UserCreateDeleteDirAc_FI
#define MF_DO 0xDF1F
#define CERT_FI EveryoneReadUserWriteAc_FI
#define KEYMAP_FI UserCreateDeleteDirAc_FI
#define KEYMAP_DO 0xDF20
#define CARDAPPS_FI EveryoneReadUserWriteAc_FI
#define CARDAPPS_DO 0xDF21
#define CARDCF_FI EveryoneReadUserWriteAc_FI
#define CARDCF_DO 0xDF22
#define CMAP_FI EveryoneReadUserWriteAc_FI
#define CMAP_DO 0xDF23
#define CARDID_FI EveryoneReadAdminWriteAc_FI
#define CARDID_DO 0xDF20
#define GIDS_MAX_DO 0xDFFF
#define MAX_GIDS_FILE_SIZE 65000
typedef struct gids_mf_record {
char directory[9];
char filename[9];
int dataObjectIdentifier;
int fileIdentifier;
} gids_mf_record_t;
struct gids_keymap_record {
int state;
unsigned char algid;
unsigned char keytype;
unsigned short keyref;
unsigned short unknownWithFFFF;
};
#define GIDS_MAX_CONTAINER 126
#define MAX_CONTAINER_NAME_LEN 39
#define CONTAINER_MAP_VALID_CONTAINER 1
#define CONTAINER_MAP_DEFAULT_CONTAINER 2
typedef struct _CONTAINER_MAP_RECORD
{
unsigned short wszGuid [MAX_CONTAINER_NAME_LEN + 1];
unsigned char bFlags;
unsigned char bReserved;
unsigned short wSigKeySizeBits;
unsigned short wKeyExchangeKeySizeBits;
} CONTAINER_MAP_RECORD, *PCONTAINER_MAP_RECORD;
#ifdef __cplusplus
}
#endif
#endif