⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cardctl.h

📁 非常不错的CSP源码学习
💻 H
字号:
/* * card_ctl command numbers * * There is a range of generic card_ctls, and card-specific * ranges. I've used a 3-letter abbreviation of the card in * the prefix, but that's just a fad :) * * For now, I've reserved these: * 	0x0000xxxx	generic * 	0x4C4658xx	Cryptoflex * 	0x47504Bxx	GPK *      0x544353xx      TCOS */#ifndef _OPENSC_CARDCTL_H#define _OPENSC_CARDCTL_H#include <opensc/types.h>#ifdef  __cplusplusextern "C" {#endif#define _CTL_PREFIX(a, b, c) (((a) << 24) | ((b) << 16) | ((c) << 8))enum {	/*	 * Generic card_ctl calls	 */	SC_CARDCTL_GENERIC_BASE = 0x00000000,	SC_CARDCTL_ERASE_CARD,	SC_CARDCTL_GET_DEFAULT_KEY,	SC_CARDCTL_LIFECYCLE_GET,	SC_CARDCTL_LIFECYCLE_SET,	/*	 * GPK specific calls	 */	SC_CARDCTL_GPK_BASE = _CTL_PREFIX('G', 'P', 'K'),	SC_CARDCTL_GPK_VARIANT,	SC_CARDCTL_GPK_LOCK,	SC_CARDCTL_GPK_PKINIT,	SC_CARDCTL_GPK_PKLOAD,	SC_CARDCTL_GPK_IS_LOCKED,	/*	 * Cryptoflex specific calls	 */	SC_CARDCTL_CRYPTOFLEX_BASE = _CTL_PREFIX('C', 'F', 'X'),	SC_CARDCTL_CRYPTOFLEX_GENERATE_KEY,	/*	 * MioCOS specific calls	 */	SC_CARDCTL_MIOCOS_BASE = _CTL_PREFIX('M', 'I', 'O'),	SC_CARDCTL_MIOCOS_CREATE_AC,        /*         * TCOS specific calls         */        SC_CARDCTL_TCOS_BASE = _CTL_PREFIX('T','C','S'),        SC_CARDCTL_TCOS_SETPERM,	/*	 * eToken specific calls	 */	SC_CARDCTL_ETOKEN_BASE = _CTL_PREFIX('E', 'T', 'K'),	SC_CARDCTL_ETOKEN_PUT_DATA_FCI,	SC_CARDCTL_ETOKEN_PUT_DATA_OCI,	SC_CARDCTL_ETOKEN_PUT_DATA_SECI,	SC_CARDCTL_ETOKEN_GENERATE_KEY,	/*	 * Starcos specific calls	 */	SC_CARDCTL_STARCOS_BASE = _CTL_PREFIX('S', 'T', 'A'),	SC_CARDCTL_STARCOS_SET_EX_DATA,	SC_CARDCTL_STARCOS_GET_EX_DATA,	SC_CARDCTL_STARCOS_FREE_EX_DATA,	SC_CARDCTL_STARCOS_FREE_ALL_EX_DATA,};enum {	SC_CARDCTRL_LIFECYCLE_ADMIN,	SC_CARDCTRL_LIFECYCLE_USER,	SC_CARDCTRL_LIFECYCLE_OTHER,};/* * Generic cardctl - check if the required key is a default * key (such as the GPK "TEST KEYTEST KEY" key, or the Cryptoflex AAK) */struct sc_cardctl_default_key {	int		method;		/* SC_AC_XXX */	int		key_ref;	/* key reference */	size_t		len;		/* in: max size, out: actual size */	u8 *		key_data;	/* out: key data */};/* * GPK lock file. * Parent DF of file must be selected. */struct sc_cardctl_gpk_lock {	struct sc_file *	file;	unsigned int		operation;};/* * GPK initialize private key file. * Parent DF must be selected. */struct sc_cardctl_gpk_pkinit {	struct sc_file *	file;	unsigned int		privlen;};/* * GPK load private key portion. */struct sc_cardctl_gpk_pkload {	struct sc_file *	file;	u8 *			data;	unsigned int		len;	unsigned int		datalen;};enum {	SC_CARDCTL_MIOCOS_AC_PIN,	SC_CARDCTL_MIOCOS_AC_CHAL,	SC_CARDCTL_MIOCOS_AC_LOGICAL,	SC_CARDCTL_MIOCOS_AC_SMARTPIN,};/* * MioCOS AC info */struct sc_cardctl_miocos_ac_info {	int type;	int ref;	int max_tries;	int enable_ac;		/* only applicable to PINs */	u8 key_value[8];	int max_unblock_tries;	/* same here */	u8 unblock_value[8];	/* and here */};/* * eToken PIN info */struct sc_cardctl_etoken_obj_info {	u8 *		data;	size_t		len;};struct sc_cardctl_etoken_genkey_info {	u8 *		random_data;	size_t		random_len;	unsigned int	key_id;	unsigned int	key_bits;	unsigned short	fid;};/* * Cryptoflex info */struct sc_cardctl_cryptoflex_genkey_info {	unsigned int	key_bits;	unsigned long	exponent;	unsigned char *	pubkey;	unsigned int	pubkey_len;};/* * Starcos ex_data stuff */typedef struct sc_starcos_ex_data {	struct sc_starcos_ex_data *next;	unsigned long              key;	void                      *data;	void (*free_func)(void *);} sc_starcos_ex_data_t;#define SC_STARCOS_PRV_DATA	0x0001	/* for internal use only  */#define SC_STARCOS_KEY_ATTR	0x0002	/* set the key attributes */#define SC_STARCOS_PIN_ATTR	0x0004	/* set PIN attribute      */#define SC_STARCOS_EX_KEY(c,v) (((v) << 16) | (c))struct sc_cardctl_starcos_key_attr_st {	unsigned long flag;	/* key attributes, e.g. SC_SEC_OPERATION_SIGN				 * or SC_SEC_OPERATION_AUTHENTICATE */};struct sc_cardctl_starcos_pin_attr_st {	int	verify_once;};#ifdef  __cplusplus}#endif#endif /* _OPENSC_CARDCTL_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -