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

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

?? filters.h

?? 研讀AxCrypt對加解密的處理方法
?? H
?? 第 1 頁 / 共 3 頁
字號:

//! simple proxy filter that doesn't modify the underlying filter's input or output
class CRYPTOPP_DLL SimpleProxyFilter : public ProxyFilter
{
public:
	SimpleProxyFilter(BufferedTransformation *filter, BufferedTransformation *attachment)
		: ProxyFilter(filter, 0, 0, attachment) {}

	void FirstPut(const byte *) {}
	void LastPut(const byte *, unsigned int) {m_filter->MessageEnd();}
};

//! proxy for the filter created by PK_Encryptor::CreateEncryptionFilter
/*! This class is here just to provide symmetry with VerifierFilter. */
class CRYPTOPP_DLL PK_EncryptorFilter : public SimpleProxyFilter
{
public:
	PK_EncryptorFilter(RandomNumberGenerator &rng, const PK_Encryptor &encryptor, BufferedTransformation *attachment = NULL)
		: SimpleProxyFilter(encryptor.CreateEncryptionFilter(rng), attachment) {}
};

//! proxy for the filter created by PK_Decryptor::CreateDecryptionFilter
/*! This class is here just to provide symmetry with SignerFilter. */
class CRYPTOPP_DLL PK_DecryptorFilter : public SimpleProxyFilter
{
public:
	PK_DecryptorFilter(RandomNumberGenerator &rng, const PK_Decryptor &decryptor, BufferedTransformation *attachment = NULL)
		: SimpleProxyFilter(decryptor.CreateDecryptionFilter(rng), attachment) {}
};

//! Append input to a string object
template <class T>
class StringSinkTemplate : public Bufferless<Sink>
{
public:
	// VC60 workaround: no T::char_type
	typedef typename T::traits_type::char_type char_type;

	StringSinkTemplate(T &output)
		: m_output(&output) {assert(sizeof(output[0])==1);}

	void IsolatedInitialize(const NameValuePairs &parameters)
		{if (!parameters.GetValue("OutputStringPointer", m_output)) throw InvalidArgument("StringSink: OutputStringPointer not specified");}

	unsigned int Put2(const byte *begin, unsigned int length, int messageEnd, bool blocking)
	{
		if (length > 0)
		{
			typename T::size_type size = m_output->size();
			if (length < size && size + length > m_output->capacity())
				m_output->reserve(2*size);
		m_output->append((const char_type *)begin, (const char_type *)begin+length);
		}
		return 0;
	}

private:	
	T *m_output;
};

//! Append input to an std::string
CRYPTOPP_DLL_TEMPLATE_CLASS StringSinkTemplate<std::string>;
typedef StringSinkTemplate<std::string> StringSink;

//! Copy input to a memory buffer
class CRYPTOPP_DLL ArraySink : public Bufferless<Sink>
{
public:
	ArraySink(const NameValuePairs &parameters = g_nullNameValuePairs) {IsolatedInitialize(parameters);}
	ArraySink(byte *buf, unsigned int size) : m_buf(buf), m_size(size), m_total(0) {}

	unsigned int AvailableSize() {return m_size - STDMIN(m_total, (unsigned long)m_size);}
	unsigned long TotalPutLength() {return m_total;}

	void IsolatedInitialize(const NameValuePairs &parameters);
	byte * CreatePutSpace(unsigned int &size);
	unsigned int Put2(const byte *begin, unsigned int length, int messageEnd, bool blocking);

protected:
	byte *m_buf;
	unsigned int m_size;
	unsigned long m_total;
};

//! Xor input to a memory buffer
class CRYPTOPP_DLL ArrayXorSink : public ArraySink
{
public:
	ArrayXorSink(byte *buf, unsigned int size)
		: ArraySink(buf, size) {}

	unsigned int Put2(const byte *begin, unsigned int length, int messageEnd, bool blocking);
	byte * CreatePutSpace(unsigned int &size) {return BufferedTransformation::CreatePutSpace(size);}
};

//! string-based implementation of Store interface
class StringStore : public Store
{
public:
	StringStore(const char *string = NULL)
		{StoreInitialize(MakeParameters("InputBuffer", ConstByteArrayParameter(string)));}
	StringStore(const byte *string, unsigned int length)
		{StoreInitialize(MakeParameters("InputBuffer", ConstByteArrayParameter(string, length)));}
	template <class T> StringStore(const T &string)
		{StoreInitialize(MakeParameters("InputBuffer", ConstByteArrayParameter(string)));}

	CRYPTOPP_DLL unsigned int TransferTo2(BufferedTransformation &target, unsigned long &transferBytes, const std::string &channel=NULL_CHANNEL, bool blocking=true);
	CRYPTOPP_DLL unsigned int CopyRangeTo2(BufferedTransformation &target, unsigned long &begin, unsigned long end=ULONG_MAX, const std::string &channel=NULL_CHANNEL, bool blocking=true) const;

private:
	CRYPTOPP_DLL void StoreInitialize(const NameValuePairs &parameters);

	const byte *m_store;
	unsigned int m_length, m_count;
};

//! RNG-based implementation of Source interface
class CRYPTOPP_DLL RandomNumberStore : public Store
{
public:
	RandomNumberStore()
		: m_rng(NULL), m_length(0), m_count(0) {}

	RandomNumberStore(RandomNumberGenerator &rng, unsigned long length)
		: m_rng(&rng), m_length(length), m_count(0) {}

	bool AnyRetrievable() const {return MaxRetrievable() != 0;}
	unsigned long MaxRetrievable() const {return m_length-m_count;}

	unsigned int TransferTo2(BufferedTransformation &target, unsigned long &transferBytes, const std::string &channel=NULL_CHANNEL, bool blocking=true);
	unsigned int CopyRangeTo2(BufferedTransformation &target, unsigned long &begin, unsigned long end=ULONG_MAX, const std::string &channel=NULL_CHANNEL, bool blocking=true) const
	{
		throw NotImplemented("RandomNumberStore: CopyRangeTo2() is not supported by this store");
	}

private:
	void StoreInitialize(const NameValuePairs &parameters);

	RandomNumberGenerator *m_rng;
	int m_length;
	unsigned long m_count;
};

//! empty store
class CRYPTOPP_DLL NullStore : public Store
{
public:
	NullStore(unsigned long size = ULONG_MAX) : m_size(size) {}
	void StoreInitialize(const NameValuePairs &parameters) {}
	unsigned long MaxRetrievable() const {return m_size;}
	unsigned int TransferTo2(BufferedTransformation &target, unsigned long &transferBytes, const std::string &channel=NULL_CHANNEL, bool blocking=true);
	unsigned int CopyRangeTo2(BufferedTransformation &target, unsigned long &begin, unsigned long end=ULONG_MAX, const std::string &channel=NULL_CHANNEL, bool blocking=true) const;

private:
	unsigned long m_size;
};

//! A Filter that pumps data into its attachment as input
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE Source : public InputRejecting<Filter>
{
public:
	Source(BufferedTransformation *attachment = NULL)
		{Source::Detach(attachment);}

	unsigned long Pump(unsigned long pumpMax=ULONG_MAX)
		{Pump2(pumpMax); return pumpMax;}
	unsigned int PumpMessages(unsigned int count=UINT_MAX)
		{PumpMessages2(count); return count;}
	void PumpAll()
		{PumpAll2();}
	virtual unsigned int Pump2(unsigned long &byteCount, bool blocking=true) =0;
	virtual unsigned int PumpMessages2(unsigned int &messageCount, bool blocking=true) =0;
	virtual unsigned int PumpAll2(bool blocking=true);
	virtual bool SourceExhausted() const =0;

protected:
	void SourceInitialize(bool pumpAll, const NameValuePairs &parameters)
	{
		IsolatedInitialize(parameters);
		if (pumpAll)
			PumpAll();
	}
};

//! Turn a Store into a Source
template <class T>
class SourceTemplate : public Source
{
public:
	SourceTemplate<T>(BufferedTransformation *attachment)
		: Source(attachment) {}
	void IsolatedInitialize(const NameValuePairs &parameters)
		{m_store.IsolatedInitialize(parameters);}
	unsigned int Pump2(unsigned long &byteCount, bool blocking=true)
		{return m_store.TransferTo2(*AttachedTransformation(), byteCount, NULL_CHANNEL, blocking);}
	unsigned int PumpMessages2(unsigned int &messageCount, bool blocking=true)
		{return m_store.TransferMessagesTo2(*AttachedTransformation(), messageCount, NULL_CHANNEL, blocking);}
	unsigned int PumpAll2(bool blocking=true)
		{return m_store.TransferAllTo2(*AttachedTransformation(), NULL_CHANNEL, blocking);}
	bool SourceExhausted() const
		{return !m_store.AnyRetrievable() && !m_store.AnyMessages();}
	void SetAutoSignalPropagation(int propagation)
		{m_store.SetAutoSignalPropagation(propagation);}
	int GetAutoSignalPropagation() const
		{return m_store.GetAutoSignalPropagation();}

protected:
	T m_store;
};

//! string-based implementation of Source interface
class CRYPTOPP_DLL StringSource : public SourceTemplate<StringStore>
{
public:
	StringSource(BufferedTransformation *attachment = NULL)
		: SourceTemplate<StringStore>(attachment) {}
	StringSource(const char *string, bool pumpAll, BufferedTransformation *attachment = NULL)
		: SourceTemplate<StringStore>(attachment) {SourceInitialize(pumpAll, MakeParameters("InputBuffer", ConstByteArrayParameter(string)));}
	StringSource(const byte *string, unsigned int length, bool pumpAll, BufferedTransformation *attachment = NULL)
		: SourceTemplate<StringStore>(attachment) {SourceInitialize(pumpAll, MakeParameters("InputBuffer", ConstByteArrayParameter(string, length)));}
	StringSource(const std::string &string, bool pumpAll, BufferedTransformation *attachment = NULL)
		: SourceTemplate<StringStore>(attachment) {SourceInitialize(pumpAll, MakeParameters("InputBuffer", ConstByteArrayParameter(string)));}
};

//! RNG-based implementation of Source interface
class CRYPTOPP_DLL RandomNumberSource : public SourceTemplate<RandomNumberStore>
{
public:
	RandomNumberSource(RandomNumberGenerator &rng, int length, bool pumpAll, BufferedTransformation *attachment = NULL)
		: SourceTemplate<RandomNumberStore>(attachment) 
		{SourceInitialize(pumpAll, MakeParameters("RandomNumberGeneratorPointer", &rng)("RandomNumberStoreSize", length));}
};

NAMESPACE_END

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产精品第一页| 亚洲永久精品国产| 狠狠色丁香久久婷婷综合丁香| 欧美日韩精品系列| 日韩综合一区二区| 26uuu精品一区二区三区四区在线| 九九在线精品视频| 日本一区二区高清| 捆绑紧缚一区二区三区视频| 2022国产精品视频| 91丨porny丨户外露出| 亚洲风情在线资源站| 欧美一区二区观看视频| 国产一区二区三区久久久| 国产精品无圣光一区二区| 91黄视频在线观看| 麻豆专区一区二区三区四区五区| 欧美精品一区二区三区视频| 本田岬高潮一区二区三区| 一区二区三区欧美日| 欧美女孩性生活视频| 国产乱码精品一区二区三区忘忧草 | 一区二区视频免费在线观看| 91精品国产综合久久蜜臀| 国产精品一区二区三区网站| 亚洲制服丝袜在线| 亚洲精品一区二区三区影院| 91麻豆免费看片| 久久国产三级精品| 亚洲一区二区三区在线| 精品成人免费观看| 欧美在线视频全部完| 欧美综合一区二区| 国产精品99久久久久久久vr| 亚洲成人福利片| 中文av一区特黄| 欧美久久一区二区| 99视频在线精品| 另类欧美日韩国产在线| 亚洲综合视频在线观看| 日本一区二区综合亚洲| 717成人午夜免费福利电影| 成人一区二区视频| 精品在线你懂的| 亚洲已满18点击进入久久| 欧美国产综合色视频| 日韩久久久久久| 欧美日韩一级二级三级| 99国产精品视频免费观看| 国产一区不卡视频| 偷拍一区二区三区四区| 一个色在线综合| 国产精品国产三级国产有无不卡 | 欧美va亚洲va香蕉在线| 91福利精品第一导航| 国产99精品视频| 精品中文av资源站在线观看| 偷偷要91色婷婷| 亚洲国产视频一区| 亚洲激情欧美激情| 亚洲品质自拍视频网站| 国产精品的网站| 国产欧美日本一区视频| 久久嫩草精品久久久精品| 欧美电影免费观看完整版| 亚洲精选一二三| 国产精品理论片| 国产日产精品1区| 久久精品一区二区三区四区| 精品电影一区二区| 久久久.com| 久久久综合视频| 国产女人水真多18毛片18精品视频| 日韩免费福利电影在线观看| 91麻豆精品久久久久蜜臀| 制服丝袜在线91| 日韩精品在线一区| 精品久久久久久最新网址| 日韩精品专区在线影院重磅| 欧美一区二区在线视频| 精品裸体舞一区二区三区| 久久久美女艺术照精彩视频福利播放| 久久久亚洲精品石原莉奈| 国产欧美日韩不卡| 亚洲人被黑人高潮完整版| 亚洲一区二区高清| 免费观看久久久4p| 国产麻豆精品在线| 成人app软件下载大全免费| www.性欧美| 欧美在线观看你懂的| 欧美日韩在线综合| 欧美va亚洲va国产综合| 国产农村妇女精品| 亚洲视频电影在线| 91麻豆自制传媒国产之光| 日本精品免费观看高清观看| 欧美色视频一区| 欧美一区二区在线视频| 久久久九九九九| 亚洲精品中文字幕乱码三区| 日一区二区三区| 国产专区欧美精品| 91在线观看美女| 欧美精品乱码久久久久久按摩| 日韩视频在线观看一区二区| 欧美国产精品中文字幕| 亚洲精品伦理在线| 蜜桃视频一区二区三区在线观看 | 成人国产精品免费观看| 欧美视频在线一区| 久久品道一品道久久精品| 樱花影视一区二区| 美腿丝袜亚洲综合| av不卡免费在线观看| 欧美疯狂做受xxxx富婆| 国产精品无码永久免费888| 亚洲成人动漫在线免费观看| 国产九色sp调教91| 欧美特级限制片免费在线观看| 久久久久久夜精品精品免费| 亚洲精品欧美激情| 国产在线不卡一区| 欧美日韩在线综合| 中文字幕亚洲一区二区va在线| 石原莉奈在线亚洲三区| av电影天堂一区二区在线观看| 91精品国产综合久久久久| 国产精品对白交换视频| 免费成人在线网站| 欧美在线不卡一区| 国产亚洲女人久久久久毛片| 欧美日韩视频在线第一区| 日本一区二区综合亚洲| 美女视频黄 久久| 在线视频欧美精品| 国产日韩欧美麻豆| 免费成人在线播放| 欧美三级韩国三级日本三斤| 国产精品欧美久久久久无广告| 蜜臀av一区二区三区| 欧美美女一区二区在线观看| 中文字幕一区二区三区av| 国产精品影视在线观看| 日韩欧美国产三级电影视频| 亚洲成人中文在线| 色噜噜夜夜夜综合网| 亚洲三级免费电影| 成人精品视频网站| 国产亚洲精品7777| 精品一区二区免费视频| 91精品国产一区二区三区| 亚洲午夜电影在线| 色婷婷综合五月| 中文字幕亚洲电影| 福利一区在线观看| 欧美韩国日本综合| 成人看片黄a免费看在线| 久久久久久久久伊人| 精久久久久久久久久久| 日韩丝袜情趣美女图片| 美女一区二区视频| 日韩一级免费一区| 捆绑调教美女网站视频一区| 日韩欧美不卡一区| 日韩精品影音先锋| 免播放器亚洲一区| 欧美大度的电影原声| 麻豆91在线播放免费| 欧美一区二区三区播放老司机| 日韩中文欧美在线| 日韩美一区二区三区| 久久成人18免费观看| 久久综合一区二区| 成人小视频免费在线观看| 国产精品污www在线观看| 波多野结衣精品在线| 亚洲精品视频观看| 欧美日韩专区在线| 蓝色福利精品导航| 中文字幕久久午夜不卡| 91网页版在线| 天使萌一区二区三区免费观看| 日韩视频免费直播| 国产成+人+日韩+欧美+亚洲| 国产精品久久久久久户外露出 | 国产精品国产三级国产a| 91亚洲精品一区二区乱码| 亚洲国产日韩精品| 日韩欧美一级二级三级| 成人一级黄色片| 亚洲高清免费观看高清完整版在线观看 | 国产欧美一区视频| 99在线精品视频| 亚洲国产精品一区二区久久| 337p日本欧洲亚洲大胆精品| 成人精品视频一区二区三区尤物| 亚洲综合久久久| 久久综合久久久久88| 99精品视频在线免费观看|