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

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

?? pubkey.h

?? 研讀AxCrypt對加解密的處理方法
?? H
?? 第 1 頁 / 共 5 頁
字號:
	typedef T Element;

	bool GetVoidValue(const char *name, const std::type_info &valueType, void *pValue) const
	{
		return GetValueHelper(this, name, valueType, pValue, &this->GetAbstractGroupParameters())
				CRYPTOPP_GET_FUNCTION_ENTRY(PublicElement);
	}

	void AssignFrom(const NameValuePairs &source);
	
	// non-inherited
	virtual const Element & GetPublicElement() const {return GetPublicPrecomputation().GetBase(this->GetAbstractGroupParameters().GetGroupPrecomputation());}
	virtual void SetPublicElement(const Element &y) {AccessPublicPrecomputation().SetBase(this->GetAbstractGroupParameters().GetGroupPrecomputation(), y);}
	virtual Element ExponentiatePublicElement(const Integer &exponent) const
	{
		const DL_GroupParameters<T> &params = this->GetAbstractGroupParameters();
		return GetPublicPrecomputation().Exponentiate(params.GetGroupPrecomputation(), exponent);
	}
	virtual Element CascadeExponentiateBaseAndPublicElement(const Integer &baseExp, const Integer &publicExp) const
	{
		const DL_GroupParameters<T> &params = this->GetAbstractGroupParameters();
		return params.GetBasePrecomputation().CascadeExponentiate(params.GetGroupPrecomputation(), baseExp, GetPublicPrecomputation(), publicExp);
	}

	virtual const DL_FixedBasePrecomputation<T> & GetPublicPrecomputation() const =0;
	virtual DL_FixedBasePrecomputation<T> & AccessPublicPrecomputation() =0;
};

//! interface for DL private keys
template <class T>
class CRYPTOPP_NO_VTABLE DL_PrivateKey : public DL_Key<T>
{
	typedef DL_PrivateKey<T> ThisClass;

public:
	typedef T Element;

	void MakePublicKey(DL_PublicKey<T> &pub) const
	{
		pub.AccessAbstractGroupParameters().AssignFrom(this->GetAbstractGroupParameters());
		pub.SetPublicElement(this->GetAbstractGroupParameters().ExponentiateBase(GetPrivateExponent()));
	}

	bool GetVoidValue(const char *name, const std::type_info &valueType, void *pValue) const
	{
		return GetValueHelper(this, name, valueType, pValue, &this->GetAbstractGroupParameters())
				CRYPTOPP_GET_FUNCTION_ENTRY(PrivateExponent);
	}

	void AssignFrom(const NameValuePairs &source)
	{
		this->AccessAbstractGroupParameters().AssignFrom(source);
		AssignFromHelper(this, source)
			CRYPTOPP_SET_FUNCTION_ENTRY(PrivateExponent);
	}

	virtual const Integer & GetPrivateExponent() const =0;
	virtual void SetPrivateExponent(const Integer &x) =0;
};

template <class T>
void DL_PublicKey<T>::AssignFrom(const NameValuePairs &source)
{
	DL_PrivateKey<T> *pPrivateKey = NULL;
	if (source.GetThisPointer(pPrivateKey))
		pPrivateKey->MakePublicKey(*this);
	else
	{
		this->AccessAbstractGroupParameters().AssignFrom(source);
		AssignFromHelper(this, source)
			CRYPTOPP_SET_FUNCTION_ENTRY(PublicElement);
	}
}

class OID;

//! _
template <class PK, class GP, class O = OID>
class DL_KeyImpl : public PK
{
public:
	typedef GP GroupParameters;

	O GetAlgorithmID() const {return GetGroupParameters().GetAlgorithmID();}
//	void BERDecode(BufferedTransformation &bt)
//		{PK::BERDecode(bt);}
//	void DEREncode(BufferedTransformation &bt) const
//		{PK::DEREncode(bt);}
	bool BERDecodeAlgorithmParameters(BufferedTransformation &bt)
		{AccessGroupParameters().BERDecode(bt); return true;}
	bool DEREncodeAlgorithmParameters(BufferedTransformation &bt) const
		{GetGroupParameters().DEREncode(bt); return true;}

	const GP & GetGroupParameters() const {return m_groupParameters;}
	GP & AccessGroupParameters() {return m_groupParameters;}

private:
	GP m_groupParameters;
};

class X509PublicKey;
class PKCS8PrivateKey;

//! _
template <class GP>
class DL_PrivateKeyImpl : public DL_PrivateKey<CPP_TYPENAME GP::Element>, public DL_KeyImpl<PKCS8PrivateKey, GP>
{
public:
	typedef typename GP::Element Element;

	// GeneratableCryptoMaterial
	bool Validate(RandomNumberGenerator &rng, unsigned int level) const
	{
		bool pass = GetAbstractGroupParameters().Validate(rng, level);

		const Integer &q = GetAbstractGroupParameters().GetSubgroupOrder();
		const Integer &x = GetPrivateExponent();

		pass = pass && x.IsPositive() && x < q;
		if (level >= 1)
			pass = pass && Integer::Gcd(x, q) == Integer::One();
		return pass;
	}

	bool GetVoidValue(const char *name, const std::type_info &valueType, void *pValue) const
	{
		return GetValueHelper<DL_PrivateKey<Element> >(this, name, valueType, pValue).Assignable();
	}

	void AssignFrom(const NameValuePairs &source)
	{
		AssignFromHelper<DL_PrivateKey<Element> >(this, source);
	}

	void GenerateRandom(RandomNumberGenerator &rng, const NameValuePairs &params)
	{
		if (!params.GetThisObject(this->AccessGroupParameters()))
			this->AccessGroupParameters().GenerateRandom(rng, params);
//		std::pair<const byte *, int> seed;
		Integer x(rng, Integer::One(), GetAbstractGroupParameters().GetMaxExponent());
//			Integer::ANY, Integer::Zero(), Integer::One(),
//			params.GetValue("DeterministicKeyGenerationSeed", seed) ? &seed : NULL);
		SetPrivateExponent(x);
	}

	bool SupportsPrecomputation() const {return true;}

	void Precompute(unsigned int precomputationStorage=16)
		{AccessAbstractGroupParameters().Precompute(precomputationStorage);}

	void LoadPrecomputation(BufferedTransformation &storedPrecomputation)
		{AccessAbstractGroupParameters().LoadPrecomputation(storedPrecomputation);}

	void SavePrecomputation(BufferedTransformation &storedPrecomputation) const
		{GetAbstractGroupParameters().SavePrecomputation(storedPrecomputation);}

	// DL_Key
	const DL_GroupParameters<Element> & GetAbstractGroupParameters() const {return this->GetGroupParameters();}
	DL_GroupParameters<Element> & AccessAbstractGroupParameters() {return this->AccessGroupParameters();}

	// DL_PrivateKey
	const Integer & GetPrivateExponent() const {return m_x;}
	void SetPrivateExponent(const Integer &x) {m_x = x;}

	// PKCS8PrivateKey
	void BERDecodeKey(BufferedTransformation &bt)
		{m_x.BERDecode(bt);}
	void DEREncodeKey(BufferedTransformation &bt) const
		{m_x.DEREncode(bt);}

private:
	Integer m_x;
};

//! _
template <class BASE, class SIGNATURE_SCHEME>
class DL_PrivateKey_WithSignaturePairwiseConsistencyTest : public BASE
{
public:
	void GenerateRandom(RandomNumberGenerator &rng, const NameValuePairs &params)
	{
		BASE::GenerateRandom(rng, params);

		if (FIPS_140_2_ComplianceEnabled())
		{
			typename SIGNATURE_SCHEME::Signer signer(*this);
			typename SIGNATURE_SCHEME::Verifier verifier(signer);
			SignaturePairwiseConsistencyTest_FIPS_140_Only(signer, verifier);
		}
	}
};

//! _
template <class GP>
class DL_PublicKeyImpl : public DL_PublicKey<typename GP::Element>, public DL_KeyImpl<X509PublicKey, GP>
{
public:
	typedef typename GP::Element Element;

	// CryptoMaterial
	bool Validate(RandomNumberGenerator &rng, unsigned int level) const
	{
		bool pass = GetAbstractGroupParameters().Validate(rng, level);
		pass = pass && GetAbstractGroupParameters().ValidateElement(level, this->GetPublicElement(), &GetPublicPrecomputation());
		return pass;
	}

	bool GetVoidValue(const char *name, const std::type_info &valueType, void *pValue) const
	{
		return GetValueHelper<DL_PublicKey<Element> >(this, name, valueType, pValue).Assignable();
	}

	void AssignFrom(const NameValuePairs &source)
	{
		AssignFromHelper<DL_PublicKey<Element> >(this, source);
	}

	bool SupportsPrecomputation() const {return true;}

	void Precompute(unsigned int precomputationStorage=16)
	{
		AccessAbstractGroupParameters().Precompute(precomputationStorage);
		AccessPublicPrecomputation().Precompute(GetAbstractGroupParameters().GetGroupPrecomputation(), GetAbstractGroupParameters().GetSubgroupOrder().BitCount(), precomputationStorage);
	}

	void LoadPrecomputation(BufferedTransformation &storedPrecomputation)
	{
		AccessAbstractGroupParameters().LoadPrecomputation(storedPrecomputation);
		AccessPublicPrecomputation().Load(GetAbstractGroupParameters().GetGroupPrecomputation(), storedPrecomputation);
	}

	void SavePrecomputation(BufferedTransformation &storedPrecomputation) const
	{
		GetAbstractGroupParameters().SavePrecomputation(storedPrecomputation);
		GetPublicPrecomputation().Save(GetAbstractGroupParameters().GetGroupPrecomputation(), storedPrecomputation);
	}

	// DL_Key
	const DL_GroupParameters<Element> & GetAbstractGroupParameters() const {return this->GetGroupParameters();}
	DL_GroupParameters<Element> & AccessAbstractGroupParameters() {return this->AccessGroupParameters();}

	// DL_PublicKey
	const DL_FixedBasePrecomputation<Element> & GetPublicPrecomputation() const {return m_ypc;}
	DL_FixedBasePrecomputation<Element> & AccessPublicPrecomputation() {return m_ypc;}

	// non-inherited
	bool operator==(const DL_PublicKeyImpl<GP> &rhs) const
		{return this->GetGroupParameters() == rhs.GetGroupParameters() && this->GetPublicElement() == rhs.GetPublicElement();}

private:
	typename GP::BasePrecomputation m_ypc;
};

//! interface for Elgamal-like signature algorithms
template <class T>
class CRYPTOPP_NO_VTABLE DL_ElgamalLikeSignatureAlgorithm
{
public:
	virtual void Sign(const DL_GroupParameters<T> &params, const Integer &privateKey, const Integer &k, const Integer &e, Integer &r, Integer &s) const =0;
	virtual bool Verify(const DL_GroupParameters<T> &params, const DL_PublicKey<T> &publicKey, const Integer &e, const Integer &r, const Integer &s) const =0;
	virtual Integer RecoverPresignature(const DL_GroupParameters<T> &params, const DL_PublicKey<T> &publicKey, const Integer &r, const Integer &s) const
		{throw NotImplemented("DL_ElgamalLikeSignatureAlgorithm: this signature scheme does not support message recovery");}
	virtual unsigned int RLen(const DL_GroupParameters<T> &params) const
		{return params.GetSubgroupOrder().ByteCount();}
	virtual unsigned int SLen(const DL_GroupParameters<T> &params) const
		{return params.GetSubgroupOrder().ByteCount();}
};

//! interface for DL key agreement algorithms
template <class T>
class CRYPTOPP_NO_VTABLE DL_KeyAgreementAlgorithm
{
public:
	typedef T Element;

	virtual Element AgreeWithEphemeralPrivateKey(const DL_GroupParameters<Element> &params, const DL_FixedBasePrecomputation<Element> &publicPrecomputation, const Integer &privateExponent) const =0;
	virtual Element AgreeWithStaticPrivateKey(const DL_GroupParameters<Element> &params, const Element &publicElement, bool validateOtherPublicKey, const Integer &privateExponent) const =0;
};

//! interface for key derivation algorithms used in DL cryptosystems
template <class T>
class CRYPTOPP_NO_VTABLE DL_KeyDerivationAlgorithm
{
public:
	virtual bool ParameterSupported(const char *name) const {return false;}
	virtual void Derive(const DL_GroupParameters<T> &groupParams, byte *derivedKey, unsigned int derivedLength, const T &agreedElement, const T &ephemeralPublicKey, const NameValuePairs &derivationParams) const =0;
};

//! interface for symmetric encryption algorithms used in DL cryptosystems
class CRYPTOPP_NO_VTABLE DL_SymmetricEncryptionAlgorithm
{
public:
	virtual bool ParameterSupported(const char *name) const {return false;}
	virtual unsigned int GetSymmetricKeyLength(unsigned int plaintextLength) const =0;
	virtual unsigned int GetSymmetricCiphertextLength(unsigned int plaintextLength) const =0;
	virtual unsigned int GetMaxSymmetricPlaintextLength(unsigned int ciphertextLength) const =0;
	virtual void SymmetricEncrypt(RandomNumberGenerator &rng, const byte *key, const byte *plaintext, unsigned int plaintextLength, byte *ciphertext, const NameValuePairs &parameters) const =0;
	virtual DecodingResult SymmetricDecrypt(const byte *key, const byte *ciphertext, unsigned int ciphertextLength, byte *plaintext, const NameValuePairs &parameters) const =0;
};

//! _
template <class KI>
class CRYPTOPP_NO_VTABLE DL_Base
{
protected:
	typedef KI KeyInterface;
	typedef typename KI::Element Element;

	const DL_GroupParameters<Element> & GetAbstractGroupParameters() const {return GetKeyInterface().GetAbstractGroupParameters();}
	DL_GroupParameters<Element> & AccessAbstractGroupParameters() {return AccessKeyInterface().AccessAbstractGroupParameters();}

	virtual KeyInterface & AccessKeyInterface() =0;
	virtual const KeyInterface & GetKeyInterface() const =0;
};

//! _
template <class INTERFACE, class KEY_INTERFACE>
class CRYPTOPP_NO_VTABLE DL_SignatureSchemeBase : public INTERFACE, public DL_Base<KEY_INTERFACE>
{
public:
	unsigned int SignatureLength() const
	{
		return GetSignatureAlgorithm().RLen(this->GetAbstractGroupParameters())
			+ GetSignatureAlgorithm().SLen(this->GetAbstractGroupParameters());
	}
	unsigned int MaxRecoverableLength() const 
		{return GetMessageEncodingInterface().MaxRecoverableLength(0, GetHashIdentifier().second, GetDigestSize());}
	unsigned int MaxRecoverableLengthFromSignatureLength(unsigned int signatureLength) const
		{assert(false); return 0;}	// TODO

	bool IsProbabilistic() const 
		{return true;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产经典视频| 亚洲自拍都市欧美小说| 亚洲色欲色欲www| 亚洲日本欧美天堂| 国产精品视频在线看| 亚洲欧美激情在线| 日本aⅴ亚洲精品中文乱码| 国产麻豆视频一区| 欧美性大战久久久久久久蜜臀| 欧美一区二区三区免费在线看| 国产嫩草影院久久久久| 性欧美大战久久久久久久久| 久久精品国产免费| 成人黄色在线视频| 91精品国产乱| 亚洲日本在线天堂| 亚洲小说欧美激情另类| 美国毛片一区二区三区| jlzzjlzz国产精品久久| 欧美一级免费大片| 亚洲美女视频在线观看| 国产高清在线精品| 91麻豆精品国产综合久久久久久| 欧美激情综合五月色丁香小说| 日韩电影在线观看电影| 国产福利一区二区三区视频| 99精品视频在线播放观看| 精品三级在线观看| 亚洲第一主播视频| 91亚洲国产成人精品一区二三| 日韩精品一区二区三区老鸭窝 | 欧美一级欧美三级| 一区二区三区欧美在线观看| 国产成人自拍高清视频在线免费播放| 欧美中文字幕不卡| 综合电影一区二区三区| 国产成人欧美日韩在线电影| 欧美唯美清纯偷拍| 久久综合色8888| 日本一道高清亚洲日美韩| 欧美性xxxxx极品少妇| 亚洲图片激情小说| 成人福利在线看| 国产亚洲一区二区三区| 久久99日本精品| 日韩丝袜情趣美女图片| 亚洲成人激情av| 欧美亚洲动漫另类| 亚洲一区视频在线观看视频| 久久久夜色精品亚洲| 精品一区二区三区在线观看| 欧美精品在线一区二区三区| 亚洲国产精品视频| 欧美这里有精品| 亚洲一区二区四区蜜桃| 欧美性受xxxx| 日韩精品亚洲一区| 91精品久久久久久久99蜜桃| 日产国产欧美视频一区精品| 91麻豆精品国产91久久久久久久久 | 奇米888四色在线精品| 欧美三级在线视频| 日本最新不卡在线| 久久一区二区三区四区| 国产99久久久久| 国产精品国产三级国产| 色婷婷av久久久久久久| 日韩制服丝袜先锋影音| 日韩精品在线一区二区| 韩国v欧美v亚洲v日本v| 7777精品伊人久久久大香线蕉的| 亚洲三级电影全部在线观看高清| 欧美亚洲动漫制服丝袜| 蜜桃av一区二区| 久久免费电影网| 不卡电影免费在线播放一区| 一区二区视频在线| 91麻豆精品国产无毒不卡在线观看| 麻豆免费看一区二区三区| 国产日韩一级二级三级| 91视频com| 偷拍亚洲欧洲综合| 欧美一区二区福利视频| 福利一区福利二区| 亚洲sss视频在线视频| 日韩三级在线观看| 99久精品国产| 蜜桃精品视频在线| 亚洲色图一区二区| 欧美va亚洲va| 色综合天天在线| 免费成人美女在线观看| 国产精品色一区二区三区| 91在线观看免费视频| 国产精品久久久久影院| 欧美精品九九99久久| 国产91富婆露脸刺激对白| 午夜a成v人精品| 中文字幕永久在线不卡| 日韩欧美国产不卡| 色综合久久天天| 国产一区二区不卡在线| 亚洲高清免费观看| 国产精品高潮久久久久无| 91精品国产麻豆| 91黄色激情网站| 成人一区二区三区视频在线观看| 日韩在线一区二区| 亚洲欧美偷拍卡通变态| 久久精品一区二区三区不卡牛牛| 欧美日韩精品一区二区| 国产老妇另类xxxxx| 丝袜诱惑亚洲看片| 依依成人综合视频| 国产精品卡一卡二| 欧美精品一区二区三区在线| 欧美日韩大陆一区二区| 成人综合激情网| 激情五月播播久久久精品| 亚洲摸摸操操av| 欧美激情自拍偷拍| 精品av综合导航| 日韩三级视频中文字幕| 91精品国产综合久久香蕉的特点| 在线观看中文字幕不卡| 99视频热这里只有精品免费| 粉嫩13p一区二区三区| 国产一区二区视频在线播放| 日本伊人色综合网| 日韩精品欧美成人高清一区二区| 亚洲人成电影网站色mp4| 日韩国产一二三区| 奇米综合一区二区三区精品视频| 亚洲成人黄色小说| 日韩精品一二三区| 日本伊人精品一区二区三区观看方式| 性做久久久久久久久| 亚洲成人动漫在线免费观看| 亚洲一区二区三区四区五区中文| 亚洲精品视频自拍| 亚洲一区二区三区在线| 亚洲一区二区三区中文字幕| 一区二区成人在线观看| 亚洲高清久久久| 一区二区三区在线免费视频| 久久久久久久久久美女| 日韩精品一区二区三区四区| 精品福利二区三区| 欧美高清在线一区| ●精品国产综合乱码久久久久| 亚洲女爱视频在线| 亚洲国产精品久久人人爱蜜臀 | 欧美精品一区二区在线播放| 国产日本欧洲亚洲| 欧美国产精品中文字幕| 亚洲日本va午夜在线电影| 亚洲资源在线观看| 日韩激情中文字幕| 国产一区视频导航| 欧美日韩中文精品| 国产欧美一区二区精品忘忧草 | 一区二区三区av电影| 麻豆精品国产传媒mv男同| www.亚洲精品| 日韩视频免费直播| 一区二区三区资源| 国产高清精品在线| 欧美一级在线免费| 亚洲综合成人在线| 处破女av一区二区| 欧美精品一区二区三区四区| 亚洲va欧美va国产va天堂影院| 成人国产精品免费| 精品三级av在线| 午夜精品久久久久久久| 99精品桃花视频在线观看| 久久免费看少妇高潮| 免费看黄色91| 欧美日韩高清一区二区| 一区二区三区欧美激情| 成人高清视频在线| 国产欧美日韩麻豆91| 韩日欧美一区二区三区| 91精品婷婷国产综合久久性色| 尤物av一区二区| 97精品视频在线观看自产线路二| 国产日韩欧美精品电影三级在线| 狠狠色丁香婷婷综合| 欧美一级日韩不卡播放免费| 偷拍日韩校园综合在线| 欧美日韩高清一区| 亚洲va国产天堂va久久en| 欧美图区在线视频| 亚洲国产精品久久不卡毛片| 日本高清无吗v一区| 一区二区三区在线视频播放| 在线观看视频欧美| 亚洲一区二区三区在线看| 欧美三级日韩在线| 日韩精品五月天|