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

📄 pkcs15-init.h

📁 非常不错的CSP源码学习
💻 H
字号:
/* * Function prototypes for pkcs15-init * * Copyright (C) 2002 Olaf Kirch <okir@lst.de> */#ifndef PKCS15_INIT_H#define PKCS15_INIT_H#ifdef  __cplusplusextern "C" {#endif#include <opensc/pkcs15.h>struct sc_profile; /* opaque type */struct sc_pkcs15init_operations {	/*	 * Erase everything that's on the card	 * So far, only the GPK supports this	 */	int	(*erase_card)(struct sc_profile *, struct sc_card *);	/*	 * Initialize application, and optionally set a SO pin	 */	int	(*init_app)(struct sc_profile *, struct sc_card *,			const unsigned char *pin, size_t pin_len,			const unsigned char *puk, size_t puk_len);	/*	 * Store a new PIN	 * On some cards (such as the CryptoFlex) this will create	 * a new subdirectory of the AppDF.	 * Index is the number of the PIN in the AODF (this should	 * help the card driver to pick the right file ID/directory ID/	 * pin file index.	 */	int	(*new_pin)(struct sc_profile *, struct sc_card *,			struct sc_pkcs15_pin_info *, unsigned int index,			const unsigned char *pin, size_t pin_len,			const unsigned char *puk, size_t puk_len);	/*	 * Store a key on the card	 */	int	(*new_key)(struct sc_profile *, struct sc_card *,			struct sc_pkcs15_prkey *key, unsigned int index,			struct sc_pkcs15_prkey_info *);	/*	 * Create a file based on a PKCS15_TYPE_xxx	 */	int	(*new_file)(struct sc_profile *, struct sc_card *,			unsigned int, unsigned int, struct sc_file **out);	/*	 * Generate a new key pair	 */	int	(*generate_key)(struct sc_profile *, struct sc_card *,			unsigned int index, unsigned int keybits,			sc_pkcs15_pubkey_t *pubkey_res,			struct sc_pkcs15_prkey_info *);};/* Do not change these or reorder these */#define SC_PKCS15INIT_SO_PIN		0#define SC_PKCS15INIT_SO_PUK		1#define SC_PKCS15INIT_USER_PIN		2#define SC_PKCS15INIT_USER_PUK		3#define SC_PKCS15INIT_NPINS		4struct sc_pkcs15init_callbacks {	/* Error and debug output */	void	(*error)(const char *, ...);	void	(*debug)(const char *, ...);	/*	 * Get a PIN from the front-end. The first argument is	 * one of the SC_PKCS15INIT_XXX_PIN/PUK macros.	 */	int	(*get_pin)(struct sc_profile *, int,				const struct sc_pkcs15_pin_info *,				const char *label,				u8 *, size_t *);	/*	 * Get a transport/secure messaging key from the front-end.	 */	int	(*get_key)(struct sc_profile *,				int method, int reference,				const u8 *def_key, size_t def_size,				u8 *key_buf, size_t *key_size);};struct sc_pkcs15init_initargs {	const u8 *		so_pin;	size_t			so_pin_len;	const u8 *		so_puk;	size_t			so_puk_len;	const char *		label;	const char *		serial;};struct sc_pkcs15init_pinargs {	struct sc_pkcs15_id	auth_id;	const char *		label;	const u8 *		pin;	size_t			pin_len;	const u8 *		puk;	size_t			puk_len;};struct sc_pkcs15init_prkeyargs {	struct sc_pkcs15_id	id;	struct sc_pkcs15_id	auth_id;	const char *		label;	unsigned long		usage;	unsigned long		x509_usage;	unsigned int		flags;	sc_pkcs15_prkey_t	key;	/* support for non-native keys */	char *			passphrase;};#define SC_PKCS15INIT_EXTRACTABLE	0x0001#define SC_PKCS15INIT_NO_PASSPHRASE	0x0002#define SC_PKCS15INIT_SPLIT_KEY		0x0004struct sc_pkcs15init_pubkeyargs {	struct sc_pkcs15_id	id;	struct sc_pkcs15_id	auth_id;	const char *		label;	unsigned long		usage;	unsigned long		x509_usage;	sc_pkcs15_pubkey_t	key;};struct sc_pkcs15init_dataargs {	struct sc_pkcs15_id	id;	const char *		label;	struct sc_pkcs15_id	auth_id;	const char *		app_label;	struct sc_object_id	app_oid;	sc_pkcs15_der_t		der_encoded; /* Wrong name: is not DER encoded */};struct sc_pkcs15init_certargs {	struct sc_pkcs15_id	id;	const char *		label;	unsigned long		x509_usage;	unsigned char		authority;	sc_pkcs15_der_t		der_encoded;};#define P15_ATTR_TYPE_LABEL	0#define P15_ATTR_TYPE_ID	1extern void	sc_pkcs15init_set_callbacks(struct sc_pkcs15init_callbacks *);extern int	sc_pkcs15init_bind(struct sc_card *, const char *, const char *,				struct sc_profile **);extern void	sc_pkcs15init_unbind(struct sc_profile *);extern int	sc_pkcs15init_set_lifecycle(sc_card_t *card, int lcycle);extern int	sc_pkcs15init_erase_card(struct sc_card *,				struct sc_profile *);extern int	sc_pkcs15init_add_app(struct sc_card *,				struct sc_profile *,				struct sc_pkcs15init_initargs *);extern int	sc_pkcs15init_store_pin(struct sc_pkcs15_card *,				struct sc_profile *,				struct sc_pkcs15init_pinargs *);extern int	sc_pkcs15init_generate_key(struct sc_pkcs15_card *,				struct sc_profile *,				struct sc_pkcs15init_prkeyargs *,				unsigned int keybits,				struct sc_pkcs15_object **);extern int	sc_pkcs15init_store_private_key(struct sc_pkcs15_card *,				struct sc_profile *,				struct sc_pkcs15init_prkeyargs *,				struct sc_pkcs15_object **);extern int	sc_pkcs15init_store_split_key(struct sc_pkcs15_card *,				struct sc_profile *,				struct sc_pkcs15init_prkeyargs *,				struct sc_pkcs15_object **,				struct sc_pkcs15_object **);extern int	sc_pkcs15init_store_public_key(struct sc_pkcs15_card *,				struct sc_profile *,				struct sc_pkcs15init_pubkeyargs *,				struct sc_pkcs15_object **);extern int	sc_pkcs15init_store_certificate(struct sc_pkcs15_card *,				struct sc_profile *,				struct sc_pkcs15init_certargs *,				struct sc_pkcs15_object **);extern int	sc_pkcs15init_store_data_object(struct sc_pkcs15_card *,				struct sc_profile *,				struct sc_pkcs15init_dataargs *,				struct sc_pkcs15_object **);/* Change the value of a pkcs15 attribute. * new_attrib_type can (currently) be either P15_ATTR_TYPE_LABEL or *   P15_ATTR_TYPE_ID. * If P15_ATTR_TYPE_LABEL, then *new_value is a struct sc_pkcs15_id; * If P15_ATTR_TYPE_ID, then *new_value is a char array. */extern int	sc_pkcs15init_change_attrib(struct sc_pkcs15_card *p15card,				struct sc_profile *profile,				struct sc_pkcs15_object *object,				int new_attrib_type,				void *new_value,				int new_len);extern int	sc_pkcs15init_create_file(struct sc_profile *,				struct sc_card *, struct sc_file *);extern int	sc_pkcs15init_update_file(struct sc_profile *,				struct sc_card *, struct sc_file *, void *, unsigned int);extern int	sc_pkcs15init_authenticate(struct sc_profile *,				struct sc_card *, struct sc_file *, int);extern int	sc_pkcs15init_present_pin(struct sc_profile *,				struct sc_card *, unsigned int);extern int	sc_pkcs15init_fixup_file(struct sc_profile *, struct sc_file *);extern int	sc_pkcs15init_fixup_acls(struct sc_profile *,				struct sc_file *,				struct sc_acl_entry *,				struct sc_acl_entry *);extern int	sc_pkcs15init_get_pin_info(struct sc_profile *, unsigned int,				struct sc_pkcs15_pin_info *);extern int	sc_pkcs15init_get_manufacturer(struct sc_profile *,				const char **);extern int	sc_pkcs15init_get_serial(struct sc_profile *, const char **);extern int	sc_pkcs15init_set_serial(struct sc_profile *, const char *);extern int	sc_pkcs15init_get_label(struct sc_profile *, const char **);extern void	sc_pkcs15init_set_pin_data(struct sc_profile *, int,				const void *, size_t);extern void	sc_pkcs15init_set_secret(struct sc_profile *,				int, int, u8 *, size_t);extern int	sc_pkcs15init_get_secret(struct sc_profile *,				struct sc_card *, int, int, u8 *, size_t *);/* Erasing the card structure via rm -rf */extern int	sc_pkcs15init_erase_card_recursively(struct sc_card *,				struct sc_profile *, int so_ref);extern int	sc_pkcs15init_rmdir(struct sc_card *, struct sc_profile *,				struct sc_file *df);/* Helper function for CardOS */extern int	sc_pkcs15init_requires_restrictive_usage(				struct sc_pkcs15_card *,				struct sc_pkcs15init_prkeyargs *,				unsigned int);#ifdef  __cplusplus}#endif#endif /* PKCS15_INIT_H */

⌨️ 快捷键说明

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