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

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

?? filters.h

?? 加密函數(shù)庫:包括多種加密解密算法,數(shù)字簽名,散列算法
?? H
?? 第 1 頁 / 共 2 頁
字號:

	bool GetLastResult() const {return m_verified;}

protected:
	void InitializeDerivedAndReturnNewSizes(const NameValuePairs &parameters, unsigned int &firstSize, unsigned int &blockSize, unsigned int &lastSize);
	void FirstPut(const byte *inString);
	void NextPutMultiple(const byte *inString, unsigned int length);
	void LastPut(const byte *inString, unsigned int length);

private:
	const PK_Verifier &m_verifier;
	member_ptr<PK_MessageAccumulator> m_messageAccumulator;
	word32 m_flags;
	SecByteBlock m_signature;
	bool m_verified;
};

typedef SignatureVerificationFilter VerifierFilter; // for backwards compatibility

//! Redirect input to another BufferedTransformation without owning it
class Redirector : public CustomSignalPropagation<Sink>
{
public:
	Redirector() : m_target(NULL), m_passSignal(true) {}
	Redirector(BufferedTransformation &target, bool passSignal=true) : m_target(&target), m_passSignal(passSignal) {}

	void Redirect(BufferedTransformation &target) {m_target = &target;}
	void StopRedirection() {m_target = NULL;}
	bool GetPassSignal() const {return m_passSignal;}
	void SetPassSignal(bool passSignal) {m_passSignal = passSignal;}

	unsigned int Put2(const byte *begin, unsigned int length, int messageEnd, bool blocking)
		{return m_target ? m_target->Put2(begin, length, m_passSignal ? messageEnd : 0, blocking) : 0;}
	void Initialize(const NameValuePairs &parameters, int propagation)
		{ChannelInitialize(NULL_CHANNEL, parameters, propagation);}
	bool Flush(bool hardFlush, int propagation=-1, bool blocking=true)
		{return m_target && m_passSignal ? m_target->Flush(hardFlush, propagation, blocking) : false;}
	bool MessageSeriesEnd(int propagation=-1, bool blocking=true)
		{return m_target && m_passSignal ? m_target->MessageSeriesEnd(propagation, blocking) : false;}

	void ChannelInitialize(const std::string &channel, const NameValuePairs &parameters=g_nullNameValuePairs, int propagation=-1);
	unsigned int ChannelPut2(const std::string &channel, const byte *begin, unsigned int length, int messageEnd, bool blocking)
		{return m_target ? m_target->ChannelPut2(channel, begin, length, m_passSignal ? messageEnd : 0, blocking) : 0;}
	unsigned int ChannelPutModifiable2(const std::string &channel, byte *begin, unsigned int length, int messageEnd, bool blocking)
		{return m_target ? m_target->ChannelPutModifiable2(channel, begin, length, m_passSignal ? messageEnd : 0, blocking) : 0;}
	bool ChannelFlush(const std::string &channel, bool completeFlush, int propagation=-1, bool blocking=true)
		{return m_target && m_passSignal ? m_target->ChannelFlush(channel, completeFlush, propagation, blocking) : false;}
	bool ChannelMessageSeriesEnd(const std::string &channel, int propagation=-1, bool blocking=true)
		{return m_target && m_passSignal ? m_target->ChannelMessageSeriesEnd(channel, propagation, blocking) : false;}

private:
	BufferedTransformation *m_target;
	bool m_passSignal;
};

// Used By ProxyFilter
class OutputProxy : public CustomSignalPropagation<Sink>
{
public:
	OutputProxy(BufferedTransformation &owner, bool passSignal) : m_owner(owner), m_passSignal(passSignal) {}

	bool GetPassSignal() const {return m_passSignal;}
	void SetPassSignal(bool passSignal) {m_passSignal = passSignal;}

	unsigned int Put2(const byte *begin, unsigned int length, int messageEnd, bool blocking)
		{return m_owner.AttachedTransformation()->Put2(begin, length, m_passSignal ? messageEnd : 0, blocking);}
	unsigned int PutModifiable2(byte *begin, unsigned int length, int messageEnd, bool blocking)
		{return m_owner.AttachedTransformation()->PutModifiable2(begin, length, m_passSignal ? messageEnd : 0, blocking);}
	void Initialize(const NameValuePairs &parameters=g_nullNameValuePairs, int propagation=-1)
		{if (m_passSignal) m_owner.AttachedTransformation()->Initialize(parameters, propagation);}
	bool Flush(bool hardFlush, int propagation=-1, bool blocking=true)
		{return m_passSignal ? m_owner.AttachedTransformation()->Flush(hardFlush, propagation, blocking) : false;}
	bool MessageSeriesEnd(int propagation=-1, bool blocking=true)
		{return m_passSignal ? m_owner.AttachedTransformation()->MessageSeriesEnd(propagation, blocking) : false;}

	unsigned int ChannelPut2(const std::string &channel, const byte *begin, unsigned int length, int messageEnd, bool blocking)
		{return m_owner.AttachedTransformation()->ChannelPut2(channel, begin, length, m_passSignal ? messageEnd : 0, blocking);}
	unsigned int ChannelPutModifiable2(const std::string &channel, byte *begin, unsigned int length, int messageEnd, bool blocking)
		{return m_owner.AttachedTransformation()->ChannelPutModifiable2(channel, begin, length, m_passSignal ? messageEnd : 0, blocking);}
	void ChannelInitialize(const std::string &channel, const NameValuePairs &parameters, int propagation=-1)
		{if (m_passSignal) m_owner.AttachedTransformation()->ChannelInitialize(channel, parameters, propagation);}
	bool ChannelFlush(const std::string &channel, bool completeFlush, int propagation=-1, bool blocking=true)
		{return m_passSignal ? m_owner.AttachedTransformation()->ChannelFlush(channel, completeFlush, propagation, blocking) : false;}
	bool ChannelMessageSeriesEnd(const std::string &channel, int propagation=-1, bool blocking=true)
		{return m_passSignal ? m_owner.AttachedTransformation()->ChannelMessageSeriesEnd(channel, propagation, blocking) : false;}

private:
	BufferedTransformation &m_owner;
	bool m_passSignal;
};

//! Base class for Filter classes that are proxies for a chain of other filters.
class ProxyFilter : public FilterWithBufferedInput
{
public:
	ProxyFilter(BufferedTransformation *filter, unsigned int firstSize, unsigned int lastSize, BufferedTransformation *attachment);

	bool IsolatedFlush(bool hardFlush, bool blocking);

	void SetFilter(Filter *filter);
	void NextPutMultiple(const byte *s, unsigned int len);

protected:
	member_ptr<BufferedTransformation> m_filter;
};

//! simple proxy filter that doesn't modify the underlying filter's input or output
class 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 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 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
typedef StringSinkTemplate<std::string> StringSink;

//! Copy input to a memory buffer
class 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 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);}
};

//! .
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)));}

	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:
	void StoreInitialize(const NameValuePairs &parameters);

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

//! .
class RandomNumberStore : public Store
{
public:
	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) {m_count = 0;}

	RandomNumberGenerator &m_rng;
	const unsigned long m_length;
	unsigned long m_count;
};

//! .
class 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 Source : public InputRejecting<Filter>
{
public:
	Source(BufferedTransformation *attachment)
		: InputRejecting<Filter>(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) {}
	SourceTemplate<T>(BufferedTransformation *attachment, T store)
		: Source(attachment), m_store(store) {}
	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;
};

//! .
class 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)));}

#ifdef __MWERKS__	// CW60 workaround
	StringSource(const std::string &string, bool pumpAll, BufferedTransformation *attachment = NULL)
#else
	template <class T> StringSource(const T &string, bool pumpAll, BufferedTransformation *attachment = NULL)
#endif
		: SourceTemplate<StringStore>(attachment) {SourceInitialize(pumpAll, MakeParameters("InputBuffer", ConstByteArrayParameter(string)));}
};

//! .
class RandomNumberSource : public SourceTemplate<RandomNumberStore>
{
public:
	RandomNumberSource(RandomNumberGenerator &rng, unsigned int length, bool pumpAll, BufferedTransformation *attachment = NULL)
		: SourceTemplate<RandomNumberStore>(attachment, RandomNumberStore(rng, length)) {if (pumpAll) PumpAll();}
};

NAMESPACE_END

#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美电影免费观看高清完整版 | 26uuuu精品一区二区| 亚洲国产裸拍裸体视频在线观看乱了| 成人av电影在线网| 日本一区二区三区久久久久久久久不 | 欧美三级三级三级| 日韩电影免费在线观看网站| 日韩一级欧美一级| 国产一区二区三区免费看| 欧美国产日韩亚洲一区| 色综合久久中文综合久久97| 亚洲国产cao| 日韩免费观看2025年上映的电影| 国内国产精品久久| ㊣最新国产の精品bt伙计久久| 色综合天天在线| 日韩影院精彩在线| 亚洲精品在线网站| 色综合欧美在线视频区| 免费观看日韩电影| 国产精品白丝在线| 69堂成人精品免费视频| 国产精品一区二区在线观看网站| 国产精品国产三级国产普通话蜜臀 | 一区二区三区精密机械公司| 欧美天堂亚洲电影院在线播放| 日本在线观看不卡视频| 日本一区二区三区国色天香| 欧美视频在线观看一区| 国产综合色在线| 亚洲女同ⅹxx女同tv| 欧美videos中文字幕| 99久久国产综合精品女不卡| 婷婷久久综合九色国产成人| 国产亚洲自拍一区| 欧美群妇大交群中文字幕| 国产精品一区二区在线观看不卡| 亚洲高清免费观看高清完整版在线观看| 欧美一级一级性生活免费录像| 国产91清纯白嫩初高中在线观看| 偷偷要91色婷婷| 国产精品伦理在线| 欧美mv日韩mv国产网站app| 色哟哟欧美精品| 高清日韩电视剧大全免费| 午夜视频久久久久久| 亚洲色欲色欲www| 精品国产乱子伦一区| 欧美三级在线播放| 97超碰欧美中文字幕| 久久99国产精品免费| 亚洲一二三区在线观看| 国产精品国产三级国产普通话99| 欧美一区二区在线免费播放| 色偷偷88欧美精品久久久| 国产乱子轮精品视频| 日韩av高清在线观看| 亚洲一级电影视频| 亚洲免费在线观看视频| 国产欧美精品一区二区色综合 | 久久久91精品国产一区二区三区| 91麻豆精品国产91久久久久| 一本久久精品一区二区| 成人sese在线| 国产成人精品一区二区三区四区 | 精品国产一区二区三区四区四| 欧美吞精做爰啪啪高潮| 在线免费精品视频| 91网站在线播放| 91麻豆国产福利在线观看| 丁香婷婷综合网| 国v精品久久久网| 懂色av一区二区在线播放| 国产69精品久久777的优势| 国产成人精品免费网站| 精品一区二区三区不卡 | 国产精品性做久久久久久| 久久99国产精品尤物| 激情久久久久久久久久久久久久久久| 午夜精品一区在线观看| 亚洲电影视频在线| 日韩专区在线视频| 五月天婷婷综合| 奇米综合一区二区三区精品视频 | 亚洲激情综合网| 亚洲一区二区三区中文字幕在线| 一区二区三区产品免费精品久久75| 最新日韩在线视频| 亚洲丶国产丶欧美一区二区三区| 夜夜操天天操亚洲| 午夜电影网亚洲视频| 亚洲第一主播视频| 精品影视av免费| 国产99久久久精品| 色哟哟一区二区三区| 欧美日本在线看| 精品嫩草影院久久| 中文字幕高清一区| 一区二区三区色| 日本欧美在线观看| 国产99久久久国产精品潘金 | 欧美性xxxxxxxx| 91精品国产欧美一区二区成人| 精品蜜桃在线看| 国产偷国产偷亚洲高清人白洁| 国产精品福利在线播放| 亚洲国产精品久久久久秋霞影院| 日日摸夜夜添夜夜添国产精品| 国产在线视频一区二区| 99vv1com这只有精品| 欧美日本视频在线| 精品少妇一区二区三区视频免付费| 国产午夜亚洲精品不卡| 亚洲精品欧美二区三区中文字幕| 天堂一区二区在线免费观看| 国产风韵犹存在线视精品| 色综合色综合色综合| 精品三级在线观看| 亚洲线精品一区二区三区 | 国产盗摄女厕一区二区三区| av一二三不卡影片| 欧美一区二区三区视频| 中文字幕乱码一区二区免费| 性做久久久久久| 高清久久久久久| 日韩午夜激情视频| 樱桃国产成人精品视频| 久久成人免费网站| 欧美三区免费完整视频在线观看| 久久综合丝袜日本网| 亚洲国产成人av好男人在线观看| 国产高清精品在线| 日韩欧美美女一区二区三区| 亚洲欧美日韩小说| 粉嫩av亚洲一区二区图片| 666欧美在线视频| 亚洲男人的天堂av| 国产aⅴ综合色| 精品国产123| 日本不卡中文字幕| 欧美午夜精品理论片a级按摩| 国产精品污网站| 国产精品一区二区三区网站| 91精品国产综合久久久蜜臀图片| 亚洲欧美在线高清| 粉嫩av一区二区三区| 精品对白一区国产伦| 首页国产丝袜综合| 欧美综合一区二区| 亚洲靠逼com| 99视频有精品| 国产精品久久精品日日| 国产精品系列在线播放| 精品国产青草久久久久福利| 日本视频一区二区| 欧美一区二区三区白人| 午夜激情综合网| 欧美三级日韩三级| 亚洲福利视频一区| 欧美午夜一区二区三区| 亚洲一区二区高清| 欧美午夜影院一区| 亚洲一二三四在线观看| 91久久精品国产91性色tv| 亚洲少妇最新在线视频| 一本色道久久综合精品竹菊| 国产高清精品在线| 国产情人综合久久777777| 免费观看在线综合色| 波多野洁衣一区| 国产精品18久久久久| 久久超碰97人人做人人爱| 亚洲精品日韩综合观看成人91| 亚洲国产裸拍裸体视频在线观看乱了 | www欧美成人18+| 蜜桃视频一区二区三区| 日韩三区在线观看| 国内精品免费在线观看| 国产亚洲精品精华液| 国产激情偷乱视频一区二区三区| 五月天激情综合网| 久久精品国内一区二区三区| 成人h动漫精品| 椎名由奈av一区二区三区| 91免费视频观看| 亚洲午夜在线电影| 日韩欧美国产高清| 国产不卡高清在线观看视频| 国产喷白浆一区二区三区| 成人动漫一区二区在线| 亚洲精品亚洲人成人网在线播放| 欧美日韩国产另类一区| 另类调教123区| 国产精品丝袜一区| 欧美日韩一区二区在线观看视频 | 久久99久久精品| 中文字幕高清不卡| 欧日韩精品视频| 国产米奇在线777精品观看| 国产精品无遮挡|