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

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

?? qca-ossl.cpp

?? QCA的OPENSSL模塊
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
		if(ret < 0)			return false;		result.resize(ret);		*out = result;		return true;	}	virtual void startSign(SignatureAlgorithm alg, SignatureFormat)	{		const EVP_MD *md = 0;		if(alg == EMSA3_SHA1)			md = EVP_sha1();		else if(alg == EMSA3_MD5)			md = EVP_md5();		else if(alg == EMSA3_MD2)			md = EVP_md2();		else if(alg == EMSA3_RIPEMD160)			md = EVP_ripemd160();		else if(alg == EMSA3_Raw)		{			// md = 0		}		evp.startSign(md);	}	virtual void startVerify(SignatureAlgorithm alg, SignatureFormat)	{		const EVP_MD *md = 0;		if(alg == EMSA3_SHA1)			md = EVP_sha1();		else if(alg == EMSA3_MD5)			md = EVP_md5();		else if(alg == EMSA3_MD2)			md = EVP_md2();		else if(alg == EMSA3_RIPEMD160)			md = EVP_ripemd160();		else if(alg == EMSA3_Raw)		{			// md = 0		}		evp.startVerify(md);	}	virtual void update(const MemoryRegion &in)	{		evp.update(in);	}	virtual QByteArray endSign()	{		return evp.endSign().toByteArray();	}	virtual bool endVerify(const QByteArray &sig)	{		return evp.endVerify(sig);	}	virtual void createPrivate(int bits, int exp, bool block)	{		evp.reset();		keymaker = new RSAKeyMaker(bits, exp, !block ? this : 0);		wasBlocking = block;		if(block)		{			keymaker->run();			km_finished();		}		else		{			connect(keymaker, SIGNAL(finished()), SLOT(km_finished()));			keymaker->start();		}	}	virtual void createPrivate(const BigInteger &n, const BigInteger &e, const BigInteger &p, const BigInteger &q, const BigInteger &d)	{		evp.reset();		RSA *rsa = RSA_new();		rsa->n = bi2bn(n);		rsa->e = bi2bn(e);		rsa->p = bi2bn(p);		rsa->q = bi2bn(q);		rsa->d = bi2bn(d);		if(!rsa->n || !rsa->e || !rsa->p || !rsa->q || !rsa->d)		{			RSA_free(rsa);			return;		}		evp.pkey = EVP_PKEY_new();		EVP_PKEY_assign_RSA(evp.pkey, rsa);		sec = true;	}	virtual void createPublic(const BigInteger &n, const BigInteger &e)	{		evp.reset();		RSA *rsa = RSA_new();		rsa->n = bi2bn(n);		rsa->e = bi2bn(e);		if(!rsa->n || !rsa->e)		{			RSA_free(rsa);			return;		}		evp.pkey = EVP_PKEY_new();		EVP_PKEY_assign_RSA(evp.pkey, rsa);		sec = false;	}	virtual BigInteger n() const	{		return bn2bi(evp.pkey->pkey.rsa->n);	}	virtual BigInteger e() const	{		return bn2bi(evp.pkey->pkey.rsa->e);	}	virtual BigInteger p() const	{		return bn2bi(evp.pkey->pkey.rsa->p);	}	virtual BigInteger q() const	{		return bn2bi(evp.pkey->pkey.rsa->q);	}	virtual BigInteger d() const	{		return bn2bi(evp.pkey->pkey.rsa->d);	}private slots:	void km_finished()	{		RSA *rsa = keymaker->takeResult();		if(wasBlocking)			delete keymaker;		else			keymaker->deleteLater();		keymaker = 0;		if(rsa)		{			evp.pkey = EVP_PKEY_new();			EVP_PKEY_assign_RSA(evp.pkey, rsa);			sec = true;		}		if(!wasBlocking)			emit finished();	}};//----------------------------------------------------------------------------// DSAKey//----------------------------------------------------------------------------class DSAKeyMaker : public QThread{	Q_OBJECTpublic:	DLGroup domain;	DSA *result;	DSAKeyMaker(const DLGroup &_domain, QObject *parent = 0) : QThread(parent), domain(_domain), result(0)	{	}	~DSAKeyMaker()	{		wait();		if(result)			DSA_free(result);	}	virtual void run()	{		DSA *dsa = DSA_new();		dsa->p = bi2bn(domain.p());		dsa->q = bi2bn(domain.q());		dsa->g = bi2bn(domain.g());		if(!DSA_generate_key(dsa))		{			DSA_free(dsa);			return;		}		result = dsa;	}	DSA *takeResult()	{		DSA *dsa = result;		result = 0;		return dsa;	}};// note: DSA doesn't use SignatureAlgorithm, since EMSA1 is always assumedclass DSAKey : public DSAContext{	Q_OBJECTpublic:	EVPKey evp;	DSAKeyMaker *keymaker;	bool wasBlocking;	bool transformsig;	bool sec;	DSAKey(Provider *p) : DSAContext(p)	{		keymaker = 0;		sec = false;	}	DSAKey(const DSAKey &from) : DSAContext(from.provider()), evp(from.evp)	{		keymaker = 0;		sec = from.sec;	}	~DSAKey()	{		delete keymaker;	}	virtual Provider::Context *clone() const	{		return new DSAKey(*this);	}	virtual bool isNull() const	{		return (evp.pkey ? false: true);	}	virtual PKey::Type type() const	{		return PKey::DSA;	}	virtual bool isPrivate() const	{		return sec;	}	virtual bool canExport() const	{		return true;	}	virtual void convertToPublic()	{		if(!sec)			return;		// extract the public key into DER format		int len = i2d_DSAPublicKey(evp.pkey->pkey.dsa, NULL);		SecureArray result(len);		unsigned char *p = (unsigned char *)result.data();		i2d_DSAPublicKey(evp.pkey->pkey.dsa, &p);		p = (unsigned char *)result.data();		// put the DER public key back into openssl		evp.reset();		DSA *dsa;#ifdef OSSL_097		dsa = d2i_DSAPublicKey(NULL, (const unsigned char **)&p, result.size());#else		dsa = d2i_DSAPublicKey(NULL, (unsigned char **)&p, result.size());#endif		evp.pkey = EVP_PKEY_new();		EVP_PKEY_assign_DSA(evp.pkey, dsa);		sec = false;	}	virtual int bits() const	{		return EVP_PKEY_bits(evp.pkey);	}	virtual void startSign(SignatureAlgorithm, SignatureFormat format)	{		// openssl native format is DER, so transform otherwise		if(format != DERSequence)			transformsig = true;		else			transformsig = false;		evp.startSign(EVP_dss1());	}	virtual void startVerify(SignatureAlgorithm, SignatureFormat format)	{		// openssl native format is DER, so transform otherwise		if(format != DERSequence)			transformsig = true;		else			transformsig = false;		evp.startVerify(EVP_dss1());	}	virtual void update(const MemoryRegion &in)	{		evp.update(in);	}	virtual QByteArray endSign()	{		SecureArray out = evp.endSign();		if(transformsig)			return dsasig_der_to_raw(out).toByteArray();		else			return out.toByteArray();	}	virtual bool endVerify(const QByteArray &sig)	{		SecureArray in;		if(transformsig)			in = dsasig_raw_to_der(sig);		else			in = sig;		return evp.endVerify(in);	}	virtual void createPrivate(const DLGroup &domain, bool block)	{		evp.reset();		keymaker = new DSAKeyMaker(domain, !block ? this : 0);		wasBlocking = block;		if(block)		{			keymaker->run();			km_finished();		}		else		{			connect(keymaker, SIGNAL(finished()), SLOT(km_finished()));			keymaker->start();		}	}	virtual void createPrivate(const DLGroup &domain, const BigInteger &y, const BigInteger &x)	{		evp.reset();		DSA *dsa = DSA_new();		dsa->p = bi2bn(domain.p());		dsa->q = bi2bn(domain.q());		dsa->g = bi2bn(domain.g());		dsa->pub_key = bi2bn(y);		dsa->priv_key = bi2bn(x);		if(!dsa->p || !dsa->q || !dsa->g || !dsa->pub_key || !dsa->priv_key)		{			DSA_free(dsa);			return;		}		evp.pkey = EVP_PKEY_new();		EVP_PKEY_assign_DSA(evp.pkey, dsa);		sec = true;	}	virtual void createPublic(const DLGroup &domain, const BigInteger &y)	{		evp.reset();		DSA *dsa = DSA_new();		dsa->p = bi2bn(domain.p());		dsa->q = bi2bn(domain.q());		dsa->g = bi2bn(domain.g());		dsa->pub_key = bi2bn(y);		if(!dsa->p || !dsa->q || !dsa->g || !dsa->pub_key)		{			DSA_free(dsa);			return;		}		evp.pkey = EVP_PKEY_new();		EVP_PKEY_assign_DSA(evp.pkey, dsa);		sec = false;	}	virtual DLGroup domain() const	{		return DLGroup(bn2bi(evp.pkey->pkey.dsa->p), bn2bi(evp.pkey->pkey.dsa->q), bn2bi(evp.pkey->pkey.dsa->g));	}	virtual BigInteger y() const	{		return bn2bi(evp.pkey->pkey.dsa->pub_key);	}	virtual BigInteger x() const	{		return bn2bi(evp.pkey->pkey.dsa->priv_key);	}private slots:	void km_finished()	{		DSA *dsa = keymaker->takeResult();		if(wasBlocking)			delete keymaker;		else			keymaker->deleteLater();		keymaker = 0;		if(dsa)		{			evp.pkey = EVP_PKEY_new();			EVP_PKEY_assign_DSA(evp.pkey, dsa);			sec = true;		}		if(!wasBlocking)			emit finished();	}};//----------------------------------------------------------------------------// DHKey//----------------------------------------------------------------------------class DHKeyMaker : public QThread{	Q_OBJECTpublic:	DLGroup domain;	DH *result;	DHKeyMaker(const DLGroup &_domain, QObject *parent = 0) : QThread(parent), domain(_domain), result(0)	{	}	~DHKeyMaker()	{		wait();		if(result)			DH_free(result);	}	virtual void run()	{		DH *dh = DH_new();		dh->p = bi2bn(domain.p());		dh->g = bi2bn(domain.g());		if(!DH_generate_key(dh))		{			DH_free(dh);			return;		}		result = dh;	}	DH *takeResult()	{		DH *dh = result;		result = 0;		return dh;	}};class DHKey : public DHContext{	Q_OBJECTpublic:	EVPKey evp;	DHKeyMaker *keymaker;	bool wasBlocking;	bool sec;	DHKey(Provider *p) : DHContext(p)	{		keymaker = 0;		sec = false;	}	DHKey(const DHKey &from) : DHContext(from.provider()), evp(from.evp)	{		keymaker = 0;		sec = from.sec;	}	~DHKey()	{		delete keymaker;	}	virtual Provider::Context *clone() const	{		return new DHKey(*this);	}	virtual bool isNull() const	{		return (evp.pkey ? false: true);	}	virtual PKey::Type type() const	{		return PKey::DH;	}	virtual bool isPrivate() const	{		return sec;	}	virtual bool canExport() const	{		return true;	}	virtual void convertToPublic()	{		if(!sec)			return;		DH *orig = evp.pkey->pkey.dh;		DH *dh = DH_new();		dh->p = BN_dup(orig->p);		dh->g = BN_dup(orig->g);		dh->pub_key = BN_dup(orig->pub_key);		evp.reset();		evp.pkey = EVP_PKEY_new();		EVP_PKEY_assign_DH(evp.pkey, dh);		sec = false;	}	virtual int bits() const	{		return EVP_PKEY_bits(evp.pkey);	}	virtual SymmetricKey deriveKey(const PKeyBase &theirs)	{		DH *dh = evp.pkey->pkey.dh;		DH *them = static_cast<const DHKey *>(&theirs)->evp.pkey->pkey.dh;		SecureArray result(DH_size(dh));		int ret = DH_compute_key((unsigned char *)result.data(), them->pub_key, dh);		if(ret <= 0)			return SymmetricKey();		result.resize(ret);		return SymmetricKey(result);	}	virtual void createPrivate(const DLGroup &domain, bool block)	{		evp.reset();		keymaker = new DHKeyMaker(domain, !block ? this : 0);		wasBlocking = block;		if(block)		{			keymaker->run();			km_finished();		}		else		{			connect(keymaker, SIGNAL(finished()), SLOT(km_finished()));			keymaker->start();		}	}	virtual void createPrivate(const DLGroup &domain, const BigInteger &y, const BigInteger &x)	{		evp.reset();		DH *dh = DH_new();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美亚洲一区二区| 亚洲午夜av在线| 亚洲一级在线观看| 国产精品香蕉一区二区三区| 欧美性生活影院| 国产精品人成在线观看免费| 另类小说综合欧美亚洲| 91极品美女在线| 国产精品成人一区二区三区夜夜夜| 青草av.久久免费一区| 在线视频一区二区三区| 国产精品另类一区| 国产在线观看一区二区| 日韩一区二区三区三四区视频在线观看 | 91香蕉视频黄| 国产亚洲成aⅴ人片在线观看| 日本 国产 欧美色综合| 欧美精品日韩精品| 亚洲v日本v欧美v久久精品| 91在线视频免费观看| 国产精品日韩成人| av亚洲精华国产精华精华| 久久男人中文字幕资源站| 久久se精品一区精品二区| 日韩午夜小视频| 日韩电影在线观看网站| 在线播放国产精品二区一二区四区| 亚洲靠逼com| 欧美中文字幕久久| 亚洲成人在线观看视频| 欧美色视频一区| 午夜激情久久久| 欧美一区二区三区在| 日韩成人午夜精品| 精品动漫一区二区三区在线观看| 久久精品久久综合| 久久久三级国产网站| 丁香另类激情小说| 中文字幕亚洲精品在线观看| 色偷偷成人一区二区三区91 | 久久久精品日韩欧美| 激情成人综合网| 国产日韩欧美电影| 91一区二区三区在线观看| 亚洲自拍偷拍欧美| 欧美美女一区二区在线观看| 日本女人一区二区三区| 欧美成人免费网站| 成人开心网精品视频| 亚洲一区在线观看视频| 6080yy午夜一二三区久久| 国产剧情一区二区| 中文字幕一区二区三区色视频 | 91超碰这里只有精品国产| 毛片av一区二区| 国产人成一区二区三区影院| 91蝌蚪porny| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产日韩视频一区二区三区| 久久伊99综合婷婷久久伊| 国产精品白丝jk白祙喷水网站 | 日本不卡不码高清免费观看| 国产三级三级三级精品8ⅰ区| 99视频精品全部免费在线| 亚洲777理论| 国产午夜亚洲精品羞羞网站| 色欲综合视频天天天| 精品在线免费视频| 一区二区三区在线观看国产| 亚洲精品在线免费播放| 欧美亚洲另类激情小说| 国产精品自在在线| 亚洲成av人片一区二区三区| 日本一区二区三级电影在线观看 | 日韩高清不卡一区二区三区| 欧美激情资源网| 91麻豆精品91久久久久久清纯| 国产不卡在线一区| 日本美女一区二区| 一区二区三区在线播| 欧美激情综合在线| 日韩精品在线看片z| 欧美日韩一区国产| 成+人+亚洲+综合天堂| 久久成人18免费观看| 亚洲精品中文字幕乱码三区 | 高清国产午夜精品久久久久久| 午夜一区二区三区视频| 中文字幕不卡在线观看| 精品日韩一区二区三区 | 日本不卡123| 亚洲成a天堂v人片| 亚洲精品水蜜桃| 亚洲欧洲日本在线| 国产日韩欧美高清| 国产夜色精品一区二区av| 日韩欧美中文字幕精品| 欧美区在线观看| 欧美性色综合网| 色婷婷综合久久久中文字幕| 成人综合在线观看| 国产suv精品一区二区883| 精品一区二区三区在线观看国产 | 亚洲激情第一区| 国产精品久久久久久户外露出| 精品处破学生在线二十三| 日韩欧美电影一区| 日韩一级视频免费观看在线| 欧美一级在线免费| 日韩欧美久久久| 欧美xxxxx牲另类人与| 日韩免费电影一区| 精品福利在线导航| 精品卡一卡二卡三卡四在线| 精品久久免费看| 久久久久99精品国产片| 欧美国产日韩亚洲一区| 中文字幕免费在线观看视频一区| 欧美国产一区视频在线观看| 中文字幕不卡的av| 亚洲欧美一区二区三区国产精品 | 风间由美一区二区三区在线观看| 国产一区福利在线| 懂色av一区二区三区免费观看| 粉嫩aⅴ一区二区三区四区五区| 国产黑丝在线一区二区三区| aa级大片欧美| 欧美挠脚心视频网站| 欧美一区二区三区色| www国产精品av| 中文字幕一区二区三区蜜月| 亚洲一区二区四区蜜桃| 日韩电影在线免费| 国产成人亚洲精品青草天美| 99精品国产视频| 9191久久久久久久久久久| 日韩精品中文字幕一区二区三区 | 丁香婷婷深情五月亚洲| 波多野结衣在线aⅴ中文字幕不卡| 成人aa视频在线观看| 色悠久久久久综合欧美99| 欧美日韩不卡在线| 久久久综合激的五月天| 国产精品久久久久9999吃药| 亚洲一区免费观看| 精品一区二区三区免费毛片爱| 成人h精品动漫一区二区三区| 欧美天堂亚洲电影院在线播放| 精品久久久久久久久久久久包黑料 | caoporn国产精品| 欧美日韩黄色影视| 久久蜜桃一区二区| 一区二区三区在线免费视频| 捆绑调教美女网站视频一区| 91在线观看下载| 日韩午夜激情免费电影| 中文字幕一区二区在线播放| 蜜桃久久久久久| 在线免费观看日韩欧美| 久久久综合九色合综国产精品| 亚洲一区中文日韩| 成人免费黄色在线| 日韩欧美一级在线播放| 亚洲精品国产视频| 风间由美一区二区av101| 91精品国模一区二区三区| 亚洲欧美视频一区| 国产成人午夜精品5599 | 日韩av一区二| 色综合一区二区三区| 久久精品人人做人人综合| 五月天丁香久久| 在线精品视频一区二区三四| 国产清纯白嫩初高生在线观看91| 日本成人中文字幕| 精品视频在线看| 亚洲欧美一区二区三区孕妇| 处破女av一区二区| 欧美一区二区三区播放老司机| 夜夜爽夜夜爽精品视频| 成人av影视在线观看| 久久精品一区二区三区不卡| 老司机午夜精品99久久| 91精品国产全国免费观看| 亚洲影视在线播放| 在线视频一区二区三| 亚洲人妖av一区二区| 成人动漫在线一区| 日本一区二区三区免费乱视频| 国产麻豆视频精品| 精品日产卡一卡二卡麻豆| 毛片av一区二区| 精品国产凹凸成av人网站| 日本中文一区二区三区| 91精品久久久久久久99蜜桃| 天天av天天翘天天综合网色鬼国产| 欧美伊人久久久久久午夜久久久久| 一区二区三区中文字幕精品精品| 91麻豆swag| 亚洲一区二区三区在线播放|