亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? device.h

?? 提供了很多種加密算法和CA認(rèn)證及相關(guān)服務(wù)如CMP、OCSP等的開(kāi)發(fā)
?? H
字號(hào):
/****************************************************************************
*																			*
*					  cryptlib Device Interface Header File 				*
*						Copyright Peter Gutmann 1998-2002					*
*																			*
****************************************************************************/

#ifndef _DEVICE_DEFINED

#define _DEVICE_DEFINED

/* The maximum length of error message we can store */

#define MAX_ERRMSG_SIZE		512

/* Device information flags.  The "needs login" flag is a general device
   flag which indicates that this type of device needs a user login before
   it can be used and is set when the device is first opened, the "logged in"
   flag is an ephemeral flag which indicates whether the user is currently
   logged in.  The "device active" flag indicates that a session with the
   device is currently active and needs to be shut down when the device
   object is destroyed */

#define DEVICE_NEEDSLOGIN	0x0001	/* User must log in to use dev.*/
#define DEVICE_READONLY		0x0002	/* Device can't be written to */
#define DEVICE_ACTIVE		0x0004	/* Device is currently active */
#define DEVICE_LOGGEDIN		0x0008	/* User is logged into device */

/* Devices implement mechanisms in the same way that contexts implement 
   actions.  Since the mechanism space is sparse, dispatching is handled by
   looking up the required mechanism in a table of (action, mechanism, 
   function) triples.  The table is sorted by order of most-frequently-used 
   mechanisms to speed things up, although the overhead is vanishingly small 
   anyway */

typedef int ( *MECHANISM_FUNCTION )( void *deviceInfoPtr,
									 void *mechanismInfo );
typedef struct {
	const RESOURCE_MESSAGE_TYPE action;
	const MECHANISM_TYPE mechanism;
	const MECHANISM_FUNCTION function;
	} MECHANISM_FUNCTION_INFO;

/* Devices can also be used to create further objects.  Most can only create
   contexts, but the system object can create any kind of object */

typedef int ( *CREATEOBJECT_FUNCTION )( MESSAGE_CREATEOBJECT_INFO *objectInfo,
										const void *auxDataPtr,
										const int auxValue );
typedef struct {
	const OBJECT_TYPE type;
	const CREATEOBJECT_FUNCTION function;
	} CREATEOBJECT_FUNCTION_INFO;

/* The structure which stores information on a device */

typedef struct DI {
	/* General device information.  Alongside various handles used to access
	   the device we also record whether the user has authenticated
	   themselves to the device since some devices have multiple user-access
	   states and the user needs to be logged out of one state before they
	   can log in to another state.  In addition we also record the device
	   label which the caller can query for use in prompts displayed to the
	   user */
	CRYPT_DEVICE_TYPE type;			/* Device type */
	long deviceHandle;				/* Handle to the device */
	long slotHandle;				/* Handle to slot for multi-device */
	int flags;						/* Device information flags */
	char label[ CRYPT_MAX_TEXTSIZE + 1 ];	/* Device label */

	/* Each device provides various capabilities which are held in the 
	   following list.  When we need to create an object via the device, we
	   look up the requirements in the capability info and feed it to
	   createObjectFromCapability() */
	const void FAR_BSS *capabilityInfo;

	/* Some devices have minimum and maximum PIN/password lengths, if these
	   are known we record them when the device is initialised */
	int minPinSize, maxPinSize;		/* Minimum, maximum PIN lengths */

	/* Last-error information returned from lower-level code */
	int errorCode;
	char errorMessage[ MAX_ERRMSG_SIZE ];

	/* Pointers to device access methods */
	int ( *initFunction )( struct DI *deviceInfo, const char *name,
						   const int nameLength );
	void ( *shutdownFunction )( struct DI *deviceInfo );
	int ( *controlFunction )( struct DI *deviceInfo,
							  const CRYPT_ATTRIBUTE_TYPE type,
							  const void *data1, const int data1Length,
							  const void *data2, const int data2Length );
	int ( *getItemFunction )( struct DI *deviceInfo,
							  CRYPT_CONTEXT *iCryptContext,
							  const KEYMGMT_ITEM_TYPE itemType,
							  const CRYPT_KEYID_TYPE keyIDtype,
							  const void *keyID, const int keyIDlength,
							  void *auxInfo, int *auxInfoLength, 
							  const int flags );
	int ( *setItemFunction )( struct DI *deviceInfo,
							  const CRYPT_HANDLE iCryptHandle );
	int ( *deleteItemFunction )( struct DI *deviceInfo,
								 const KEYMGMT_ITEM_TYPE itemType,
								 const CRYPT_KEYID_TYPE keyIDtype,
								 const void *keyID, const int keyIDlength );
	int ( *getFirstItemFunction )( struct DI *deviceInfo, 
								   CRYPT_CERTIFICATE *iCertificate,
								   int *stateInfo, 
								   const CRYPT_KEYID_TYPE keyIDtype,
								   const void *keyID, const int keyIDlength,
								   const KEYMGMT_ITEM_TYPE itemType, 
								   const int options );
	int ( *getNextItemFunction )( struct DI *deviceInfo, 
								  CRYPT_CERTIFICATE *iCertificate,
								  int *stateInfo, const int options );
	int ( *getRandomFunction)( struct DI *deviceInfo, void *buffer,
							   const int length );

	/* Information for the system device */
	const MECHANISM_FUNCTION_INFO *mechanismFunctions;
	const CREATEOBJECT_FUNCTION_INFO *createObjectFunctions;
	void *randomInfo;

	/* Information for PKCS #11 devices */
	int deviceNo;					/* Index into PKCS #11 token table */

	/* Information for Fortezza devices */
	long largestBlockSize;			/* Largest single data block size */
	void *personalities;			/* Device personality list */
	int personalityCount;			/* Number of personalities */
	long keyRegisterFlags;			/* Bitfield of key regs.in use */
	int keyRegisterCount;			/* Number of key registers */
	void *certHashes;				/* Hashes of certs in card */
	BOOLEAN certHashesInitialised;	/* Whether hashes are initialised */
	int currentPersonality;			/* Currently selected personality */
	BYTE leafString[ 16 ];			/* LEAF-suppressed string */

	/* Error information */
	CRYPT_ATTRIBUTE_TYPE errorLocus;/* Error locus */
	CRYPT_ERRTYPE_TYPE errorType;	/* Error type */

	/* When we clone an object, there are certain per-instance fields which
	   don't get cloned.  These fields are located after the following
	   member, and must be initialised by the cloning function */
	int _sharedEnd;					/* Dummy used for end of shared fields */

	/* The object's handle and the handle of the user who owns this object.
	   The former is used when sending messages to the object when only the 
	   xxx_INFO is available, the latter is used to avoid having to fetch the
	   same information from the system object table */
	CRYPT_HANDLE objectHandle;
	CRYPT_USER ownerHandle;

	/* In multithreaded environments we need to protect the information from
	   access by other threads while we use it.  The following macro declares
	   the actual variables required to handle the object locking (the
	   actual values are defined in cryptos.h) */
	DECLARE_OBJECT_LOCKING_VARS
	} DEVICE_INFO;

/* Prototypes for the capability info sanity-check function in crypt.c.  This
   function is only called via an assert() and isn't used in non-debug builds.
   The asymmetricOK flag indicates that the capabilities can have asymmetric
   functionality, for example sign is supported but sig.check isn't (this is
   required for some tinkertoy implementations in crypto tokens which support 
   bare-minimum functionality such as RSA private-key ops and nothing else) */

BOOLEAN capabilityInfoOK( const void *capabilityInfoPtr, 
						  const BOOLEAN asymmetricOK );

/* Prototypes for functions in asn1keys.c */

int sizeofFlatPublicKey( const CRYPT_ALGO cryptAlgo, 
						 const void *component1, const int component1Length,
						 const void *component2, const int component2Length,
						 const void *component3, const int component3Length,
						 const void *component4, const int component4Length );
int writeFlatPublicKey( void *buffer, const CRYPT_ALGO cryptAlgo, 
						const void *component1, const int component1Length,
						const void *component2, const int component2Length,
						const void *component3, const int component3Length,
						const void *component4, const int component4Length );

/* Prototypes for device mapping functions */

int setDeviceCEI( DEVICE_INFO *deviceInfo );
int setDeviceFortezza( DEVICE_INFO *deviceInfo );
int setDevicePKCS11( DEVICE_INFO *deviceInfo, const char *name,
					 const int nameLength );
int setDeviceSystem( DEVICE_INFO *deviceInfo );

#endif /* _DEVICE_DEFINED */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美老肥妇做.爰bbww| 亚洲精品在线免费观看视频| 蜜桃久久久久久| 国产精品国产a| 欧美电影免费观看高清完整版| 91在线精品一区二区| 裸体健美xxxx欧美裸体表演| 亚洲精品视频免费观看| 欧美精品一区二区三区蜜桃视频| 欧美性高清videossexo| 99国内精品久久| 国产一区不卡视频| 免费xxxx性欧美18vr| 亚洲一二三四久久| 亚洲色图清纯唯美| 国产欧美日韩在线观看| 精品动漫一区二区三区在线观看| 欧美日韩精品久久久| 91久久人澡人人添人人爽欧美| 国产精品亚洲第一区在线暖暖韩国 | 国产91精品一区二区| 蜜臀久久99精品久久久久久9| 一区二区欧美视频| 国产精品国产自产拍高清av | 国产91在线观看丝袜| 蜜臀a∨国产成人精品| 亚洲444eee在线观看| 亚洲品质自拍视频| 中文字幕不卡在线播放| 国产日本欧美一区二区| 国产亚洲欧美在线| 欧美v日韩v国产v| 日韩视频一区在线观看| 91精品国产乱| 欧美一区二区三区婷婷月色| 7878成人国产在线观看| 欧美亚洲动漫另类| 欧美色精品天天在线观看视频| 91官网在线观看| 91久久线看在观草草青青| 91亚洲精华国产精华精华液| 色综合久久久久综合体桃花网| 99re视频这里只有精品| 91麻豆福利精品推荐| 91福利视频网站| 欧美日韩极品在线观看一区| 欧美麻豆精品久久久久久| 欧美精品 日韩| 日韩欧美一区二区免费| 久久综合久久鬼色中文字| 精品国产免费人成在线观看| 精品处破学生在线二十三| 久久久高清一区二区三区| 久久免费精品国产久精品久久久久 | 国产精品资源在线观看| 国产91清纯白嫩初高中在线观看 | 午夜精品国产更新| 婷婷亚洲久悠悠色悠在线播放| 日韩1区2区3区| 韩国欧美国产1区| 国产麻豆视频一区二区| 不卡影院免费观看| 欧美日韩一区二区三区在线看| 欧美精品亚洲一区二区在线播放| 日韩精品一区二区三区三区免费| 国产欧美一区二区精品性| 国产精品天美传媒| 亚洲国产成人高清精品| 久久精品国产99国产| 丁香婷婷综合网| 色菇凉天天综合网| 欧美成人一区二区三区片免费| 国产日韩精品一区二区三区| 亚洲综合在线电影| 日韩精品久久理论片| 国产91在线观看| 欧美视频在线一区二区三区| 精品少妇一区二区三区视频免付费| 国产欧美日韩三区| 亚洲电影一区二区三区| 国产成人免费在线观看| 在线观看一区不卡| 欧美精品一区二区久久婷婷| 日韩理论片在线| 久久国产综合精品| 99精品国产视频| 欧美不卡一区二区三区| 亚洲男人的天堂一区二区| 久久99蜜桃精品| 欧美性色综合网| 国产日产欧美精品一区二区三区| 亚洲一区二区成人在线观看| 国产精品亚洲视频| 欧美日韩精品一二三区| 国产精品乱码一区二区三区软件 | 成人白浆超碰人人人人| 欧美日韩激情一区| 国产精品国产三级国产普通话99| 午夜免费欧美电影| 成人aa视频在线观看| 日韩免费高清av| 亚洲色图制服诱惑| 国产麻豆精品一区二区| 欧美区视频在线观看| 亚洲色欲色欲www| 国产福利不卡视频| 欧美成人精品3d动漫h| 舔着乳尖日韩一区| 国产99久久精品| 日韩欧美一二三| 日韩成人一级大片| 色av综合在线| 中文字幕一区二区视频| 精品中文字幕一区二区| 6080yy午夜一二三区久久| 亚洲激情欧美激情| 不卡的av电影| 亚洲国产高清在线观看视频| 精品一区二区免费看| 91精品国产一区二区人妖| 洋洋av久久久久久久一区| 91视频免费观看| 中文字幕日韩av资源站| 国产精品18久久久久久久网站| 日韩一区二区三区在线视频| 午夜精品成人在线| 欧美色图片你懂的| 亚洲一区二区三区四区在线观看| 91在线云播放| 日韩毛片高清在线播放| 成人激情小说乱人伦| 亚洲国产精品t66y| www.综合网.com| 日韩一区在线看| 不卡欧美aaaaa| 亚洲欧美国产毛片在线| 91免费看片在线观看| 中文字幕在线不卡| 91农村精品一区二区在线| 综合亚洲深深色噜噜狠狠网站| 99久久777色| 亚洲女同ⅹxx女同tv| 91激情五月电影| 天堂蜜桃一区二区三区| 3d成人动漫网站| 九九**精品视频免费播放| 久久久亚洲高清| 国产不卡免费视频| 亚洲欧洲日本在线| 91国模大尺度私拍在线视频| 依依成人精品视频| 欧美色男人天堂| 久久不见久久见中文字幕免费| 精品理论电影在线观看| 国产美女视频一区| 中文乱码免费一区二区| 色老汉一区二区三区| 亚洲国产一区二区a毛片| 在线播放欧美女士性生活| 麻豆国产精品视频| 久久精品亚洲精品国产欧美kt∨| 成人美女视频在线看| 亚洲美女淫视频| 欧美理论片在线| 国产精品性做久久久久久| 国产精品久久久久久久裸模| 欧美影院午夜播放| 免费人成精品欧美精品| 久久精品人人做人人爽人人| 91美女片黄在线观看91美女| 日日夜夜一区二区| 国产清纯美女被跳蛋高潮一区二区久久w | 国产成人aaa| 亚洲一区二区三区影院| 欧美mv日韩mv| 91麻豆国产精品久久| 蜜桃一区二区三区在线观看| 日本一区二区综合亚洲| 欧美午夜一区二区三区免费大片| 精品一二线国产| 亚洲人成精品久久久久久| 日韩三级.com| eeuss鲁一区二区三区| 视频一区欧美日韩| 欧美激情一区二区| 在线综合视频播放| 菠萝蜜视频在线观看一区| 全国精品久久少妇| 亚洲日本va午夜在线影院| 精品伦理精品一区| 欧洲亚洲精品在线| 国产精品白丝jk黑袜喷水| 亚洲成av人片在线| 国产精品成人午夜| 欧美va亚洲va国产综合| 欧美午夜一区二区三区| 丁香激情综合国产| 精品在线视频一区| 午夜亚洲国产au精品一区二区| 国产精品乱人伦中文|