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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? certmng.h

?? 實現證書的生成和驗證
?? H
字號:
#ifndef __CERT_MANAGER_H
#define __CERT_MANAGER_H

#define apps_startup() \
	do { CRYPTO_malloc_init(); \
	ERR_load_crypto_strings(); \
	OpenSSL_add_all_algorithms(); } while(0)
#define apps_shutdown() \
	do { CONF_modules_unload(1); \
	EVP_cleanup(); \
	CRYPTO_cleanup_all_ex_data(); \
	ERR_remove_state(0); \
	ERR_free_strings(); } while(0)

class CCertMng
{
public:
	typedef struct pw_cb_data
	{
		const char *password;
		const char *prompt_info;
	} PW_CB_DATA;
	typedef void (CALLBACK * LPGENERATEKEY) ( int p, int n, void * lpVoid );
	typedef int (CALLBACK * LPPASSWORD_CALLBACK) ( char * buf, int bufsiz, int verify, void * lpVoid );
	typedef int (CALLBACK * LPGET_DN_VALUE) ( const char * prompt, const char * def, char * val, int min, int max, void * lpvoid );
	typedef int (CALLBACK * LPVERIFY_CALLBACK ) ( xmlChar * pszXML, int nLen );
public:
	CCertMng ();
	
public:
	static CCertMng * Interface ()
	{
		if ( ! m_bCert_Locked )
		{
			CWLockGuard guard ( & m_Cert_Lock );
			if ( ! m_bCert_Locked )
			{
				m_pMng = new CCertMng ( );
				m_bCert_Locked = true;
			}
		}
		return m_pMng;
	}
	static void Free_Interface ()
	{
		if ( m_bCert_Locked )
		{
			CWLockGuard guard ( & m_Cert_Lock );
			if ( m_bCert_Locked )
			{
				delete m_pMng;
				m_pMng = 0;
				m_bCert_Locked = false;
			}
		}
	}
public:
	int        Initialize ( conv_tool::OPERATORS_MAP mapOpr, LPGENERATEKEY, LPPASSWORD_CALLBACK, LPGET_DN_VALUE, LPVERIFY_CALLBACK, void * );
	void       Uninitialize ();
	EVP_PKEY * Load_Key ( char * pBuf, int nLen, int fmt, int nType = FILE_TYPE );
	int        Generate_Key ( conv_tool::OPERATORS_MAP mapOpt, xmlChar ** ppszXML, int *pnLen );
	int        Generate_Req ( conv_tool::OPERATORS_MAP mapOpt, xmlChar ** ppszXML, int * pnLen );
	int        Sign_Cert ( conv_tool::OPERATORS_MAP mapOpt,  xmlChar ** ppszXML, int *pnLen );
	int        Verify_Cert ( conv_tool::OPERATORS_MAP mapOpt );
	int        IsMatch(conv_tool::OPERATORS_MAP mapOpt);
	BIO *      Bio_Read ( int in_type, const char * in, int len );
	BIO *      Bio_Write ( int out_type, const char * out );
private:
	int    Load_Config ( CONF * cnf );
	int    Add_Oid_Section ( CONF * cnf );
	int    Make_Request ( CONF * req_cnf, X509_REQ * req, EVP_PKEY *pKey, int nAttribs, unsigned long nCharset );
	int    Prompt_Info ( CONF * req_cnf, X509_REQ * req, STACK_OF(CONF_VALUE) * dn_sk, char * dn_sect, STACK_OF(CONF_VALUE) * attr_sk, char * attr_sect, int nAttribs, unsigned long nCharset );
	int    Check_End ( char * src, char * end );
	int    Add_DN_Object ( X509_NAME * x509_name, char * text, const char * def, const char * value, int nid, long n_min, long n_max, unsigned long char_set );
	int    Add_DN_Attribute ( X509_REQ * req, char * text, const char * def, const char * value, int nid, long n_min, long n_max, unsigned long char_set );
	int    Get_Section ( CONF * req_cnf, CONF_VALUE * cnf_val, const char * section, std::string & def, std::string & val, long * min, long * max );
	int    Sign_Request ( CONF * req_cnf, X509 * x509, X509_REQ * req, EVP_PKEY *pKey, const char * ext, ASN1_INTEGER * serial, int days, const EVP_MD * digest);
	int    Verify_Request ( X509_REQ * req, EVP_PKEY * pKey );
	int    Out_Request ( X509 * x509, X509_REQ * req, int out_type, const char *out, bool is_x509, bool is_pub_key, int out_fmt, xmlChar ** ppszXML, int * pnLen );
	X509 * Load_Cert ( int in_type, const char *in, int format );
	X509_REQ * Load_Request ( int in_type, const char * in );
	ASN1_INTEGER * X509_Load_Serial ( const char * cafile, const char * snfile, bool create = true);
	int    Out_Pubkey ( X509_REQ * req, BIO * out );
	int    Out_X509 ( X509 * x, int out_type, const char * outfile, int outfmt, xmlChar ** ppszXML, int * pnLen );
	X509 * Request2X509 ( X509_REQ * req, ASN1_INTEGER * sn, long days );
	int    x509_Sign ( X509_STORE * ctx, const char * cafile, const EVP_MD * digest,
		X509 * x, X509 * xca, EVP_PKEY * pKey, const char * serial, bool create_sn, long days,
		CONF * conf, const char * ext_section, ASN1_INTEGER * sn );
	int   CA_Sign ( X509 * x, X509 * xca, EVP_PKEY * pKey, ASN1_INTEGER * ai, long days, const EVP_MD * digest, CONF * conf, const char * extsection );
	STACK_OF ( X509 ) * Load_UnTrusted ( const char * certfile );
	int Check_Cert ( X509_STORE * ctx, const char * certfile, int type, STACK_OF(X509) *uchain, STACK_OF(X509) *tchain, int vFlag = X509_V_FLAG_IGNORE_CRITICAL );
	int Get_BioStr ( BIO * bio_out, std::string & sout, int * pnLen );
private:
	static void MS_CALLBACK Process_Key ( int p, int n, void * lpVoid );
	static int  password_callback ( char * buf, int bufsiz, int verify, void *);
	static int  verify_callback ( int ok, X509_STORE_CTX * ctx );
private:
	std::string            m_szRandFile, m_szConfFile;
	void  *                m_pVoid;
	LPGENERATEKEY          m_lpfnGenKey;
	LPPASSWORD_CALLBACK    m_lpfnPass_Callback;
	LPGET_DN_VALUE         m_lpfnGet_Dn_Value;
	LPVERIFY_CALLBACK      m_lpfnVerify_Callback;
private:
	static CCertMng * m_pMng;
	static CRWLock m_Cert_Lock;
	static volatile bool m_bCert_Locked;
};

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产日韩综合久久精品| 亚洲精品少妇30p| 欧美日本乱大交xxxxx| 91免费视频网址| 99久久精品99国产精品| 国产一区二区精品在线观看| 国产伦精品一区二区三区视频青涩 | 97久久人人超碰| 成人动漫视频在线| 色8久久精品久久久久久蜜| 在线视频你懂得一区| 欧美日韩高清一区二区三区| 日韩午夜激情av| 精品成人免费观看| 久久久久88色偷偷免费| 国产精品嫩草99a| 亚洲人成网站在线| 午夜精品一区二区三区电影天堂| 三级欧美在线一区| 韩国精品主播一区二区在线观看| 国产一区二区在线看| fc2成人免费人成在线观看播放| 99麻豆久久久国产精品免费优播| 色婷婷久久99综合精品jk白丝| 欧美日韩国产综合一区二区三区| 日韩亚洲欧美在线| 国产午夜精品久久久久久久| 亚洲天堂免费在线观看视频| 日韩电影在线免费观看| 国产成人精品三级麻豆| 99在线精品视频| 日韩无一区二区| 亚洲人妖av一区二区| 免费在线看成人av| 成人h动漫精品一区二区| 欧美日本不卡视频| 国产精品污污网站在线观看| 午夜精品福利久久久| 成人性生交大片免费看中文| 欧美日韩在线一区二区| 国产欧美日韩精品在线| 美女视频第一区二区三区免费观看网站| 国产裸体歌舞团一区二区| 欧美亚洲丝袜传媒另类| 国产日韩欧美高清在线| 日本视频免费一区| 91网页版在线| 国产人成一区二区三区影院| 首页亚洲欧美制服丝腿| 91在线视频18| 国产三级一区二区三区| 奇米综合一区二区三区精品视频 | 一区二区高清免费观看影视大全| 免费三级欧美电影| 色悠久久久久综合欧美99| 久久久久久久久久久久久女国产乱 | 欧美视频在线一区二区三区 | 久久aⅴ国产欧美74aaa| 欧美性猛交xxxx乱大交退制版| 亚洲欧美区自拍先锋| 国产精品资源网站| 日韩女优毛片在线| 丝袜国产日韩另类美女| 欧美日韩另类一区| 一区二区三区国产精品| 91免费看片在线观看| 国产精品国产三级国产| 国产精品 欧美精品| www国产成人免费观看视频 深夜成人网 | 国产尤物一区二区在线 | 国产精品2024| 精品国产一区久久| 久久精品72免费观看| 欧美一区二区三区精品| 日韩成人免费电影| 日本乱码高清不卡字幕| 一区二区三区蜜桃网| 91福利精品视频| 亚洲一区视频在线| 欧美日韩免费一区二区三区视频| 一区二区免费看| 欧美日韩性生活| 捆绑紧缚一区二区三区视频| 欧美一区二区在线看| 老色鬼精品视频在线观看播放| 精品国产一区a| 国产精品亚洲第一| 国产精品丝袜黑色高跟| 91在线观看高清| 亚洲精品大片www| 91精品国产综合久久精品性色| 日韩精品一级中文字幕精品视频免费观看| 欧美精品v日韩精品v韩国精品v| 午夜婷婷国产麻豆精品| 精品国产不卡一区二区三区| 国产精品影视天天线| 国产精品护士白丝一区av| 欧洲一区二区三区免费视频| 青青草国产精品亚洲专区无| 国产日韩欧美高清在线| 在线视频综合导航| 免费看欧美美女黄的网站| 国产午夜亚洲精品午夜鲁丝片| 99国产欧美另类久久久精品| 香蕉成人啪国产精品视频综合网| 精品国产91乱码一区二区三区| bt欧美亚洲午夜电影天堂| 日韩精品一卡二卡三卡四卡无卡| 国产欧美日韩不卡| 欧美视频在线观看一区二区| 国产高清亚洲一区| 午夜欧美视频在线观看| 中文无字幕一区二区三区 | 日韩av在线播放中文字幕| 久久久国际精品| 欧美日韩一区三区四区| 国产一区二区按摩在线观看| 一区二区欧美国产| 国产视频不卡一区| 51午夜精品国产| 91色视频在线| 国产精品一二二区| 美女视频免费一区| 亚洲精品中文在线观看| 国产日韩欧美亚洲| 日韩欧美综合在线| 欧美三片在线视频观看| 成人97人人超碰人人99| 另类小说视频一区二区| 香蕉影视欧美成人| 一区二区三区国产精华| 国产精品网站在线| 精品av综合导航| 欧美人伦禁忌dvd放荡欲情| 99精品1区2区| 成人黄色电影在线| 国产宾馆实践打屁股91| 精品亚洲成a人在线观看| 天天综合色天天综合色h| 亚洲人亚洲人成电影网站色| 欧美极品xxx| 久久久久国产精品厨房| 欧美成人官网二区| 日韩片之四级片| 日韩精品一区二| 精品女同一区二区| 欧美tickling挠脚心丨vk| 91.xcao| 欧美日韩电影一区| 欧美精品色综合| 欧美日韩精品二区第二页| 欧美日本不卡视频| 欧美在线免费观看亚洲| 欧美日韩综合在线| 在线91免费看| 日韩一区二区精品| 久久中文字幕电影| 日韩欧美一区在线观看| 精品日韩欧美一区二区| 久久青草欧美一区二区三区| 久久久一区二区三区捆绑**| 国产亚洲成aⅴ人片在线观看| 国产欧美日韩综合| 国产精品国产自产拍高清av王其| 亚洲丝袜制服诱惑| 亚洲国产一区在线观看| 奇米影视在线99精品| 国产一区二区网址| aa级大片欧美| 欧美精品 国产精品| 日韩一卡二卡三卡四卡| 国产欧美日韩综合精品一区二区| 国产精品福利一区| 亚洲福利视频一区二区| 精品系列免费在线观看| 国产电影精品久久禁18| 色综合视频一区二区三区高清| 色域天天综合网| 欧美哺乳videos| 综合色中文字幕| 免费人成网站在线观看欧美高清| 国产在线国偷精品免费看| 91片黄在线观看| 日韩欧美中文字幕公布| 国产情人综合久久777777| 亚洲国产一二三| 盗摄精品av一区二区三区| 欧美日韩一区不卡| 国产嫩草影院久久久久| 亚洲无线码一区二区三区| 韩国女主播一区| 欧美亚洲图片小说| 久久精品夜色噜噜亚洲aⅴ| 亚洲欧美日韩国产成人精品影院| 日韩不卡一区二区| 91免费视频观看| 国产亚洲精品福利| 日本成人在线一区| 一本色道久久综合精品竹菊| 久久久久久亚洲综合|