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

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

?? filters.h

?? AlgorithmType: SymmetricCipher Name: AES/ECB Source: NIST Special Publication 800-38A Plaintext:
?? H
?? 第 1 頁 / 共 3 頁
字號:
class CRYPTOPP_DLL StreamTransformationFilter : public FilterWithBufferedInput, private FilterPutSpaceHelper
{
public:
	enum BlockPaddingScheme {NO_PADDING, ZEROS_PADDING, PKCS_PADDING, ONE_AND_ZEROS_PADDING, DEFAULT_PADDING};
	/*! DEFAULT_PADDING means PKCS_PADDING if c.MandatoryBlockSize() > 1 && c.MinLastBlockSize() == 0 (e.g. ECB or CBC mode),
		otherwise NO_PADDING (OFB, CFB, CTR, CBC-CTS modes) */
	StreamTransformationFilter(StreamTransformation &c, BufferedTransformation *attachment = NULL, BlockPaddingScheme padding = DEFAULT_PADDING);

	void FirstPut(const byte *inString);
	void NextPutMultiple(const byte *inString, size_t length);
	void NextPutModifiable(byte *inString, size_t length);
	void LastPut(const byte *inString, size_t length);
//	byte * CreatePutSpace(size_t &size);

protected:
	static size_t LastBlockSize(StreamTransformation &c, BlockPaddingScheme padding);

	StreamTransformation &m_cipher;
	BlockPaddingScheme m_padding;
	unsigned int m_optimalBufferSize;
};

#ifdef CRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY
typedef StreamTransformationFilter StreamCipherFilter;
#endif

//! Filter Wrapper for HashTransformation
class CRYPTOPP_DLL HashFilter : public Bufferless<Filter>, private FilterPutSpaceHelper
{
public:
	HashFilter(HashTransformation &hm, BufferedTransformation *attachment = NULL, bool putMessage=false, int truncatedDigestSize=-1)
		: m_hashModule(hm), m_putMessage(putMessage), m_truncatedDigestSize(truncatedDigestSize) {Detach(attachment);}

	std::string AlgorithmName() const {return m_hashModule.AlgorithmName();}

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

	byte * CreatePutSpace(size_t &size) {return m_hashModule.CreateUpdateSpace(size);}

private:
	HashTransformation &m_hashModule;
	bool m_putMessage;
	int m_truncatedDigestSize;
	byte *m_space;
	unsigned int m_digestSize;
};

//! Filter Wrapper for HashTransformation
class CRYPTOPP_DLL HashVerificationFilter : public FilterWithBufferedInput
{
public:
	class HashVerificationFailed : public Exception
	{
	public:
		HashVerificationFailed()
			: Exception(DATA_INTEGRITY_CHECK_FAILED, "HashVerifier: message hash not valid") {}
	};

	enum Flags {HASH_AT_BEGIN=1, PUT_MESSAGE=2, PUT_HASH=4, PUT_RESULT=8, THROW_EXCEPTION=16, DEFAULT_FLAGS = HASH_AT_BEGIN | PUT_RESULT};
	HashVerificationFilter(HashTransformation &hm, BufferedTransformation *attachment = NULL, word32 flags = DEFAULT_FLAGS);

	std::string AlgorithmName() const {return m_hashModule.AlgorithmName();}

	bool GetLastResult() const {return m_verified;}

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

private:
	static inline unsigned int FirstSize(word32 flags, HashTransformation &hm) {return flags & HASH_AT_BEGIN ? hm.DigestSize() : 0;}
	static inline unsigned int LastSize(word32 flags, HashTransformation &hm) {return flags & HASH_AT_BEGIN ? 0 : hm.DigestSize();}

	HashTransformation &m_hashModule;
	word32 m_flags;
	SecByteBlock m_expectedHash;
	bool m_verified;
};

typedef HashVerificationFilter HashVerifier;	// for backwards compatibility

//! Filter Wrapper for PK_Signer
class CRYPTOPP_DLL SignerFilter : public Unflushable<Filter>
{
public:
	SignerFilter(RandomNumberGenerator &rng, const PK_Signer &signer, BufferedTransformation *attachment = NULL, bool putMessage=false)
		: m_rng(rng), m_signer(signer), m_messageAccumulator(signer.NewSignatureAccumulator(rng)), m_putMessage(putMessage) {Detach(attachment);}

	std::string AlgorithmName() const {return m_signer.AlgorithmName();}

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

private:
	RandomNumberGenerator &m_rng;
	const PK_Signer &m_signer;
	member_ptr<PK_MessageAccumulator> m_messageAccumulator;
	bool m_putMessage;
	SecByteBlock m_buf;
};

//! Filter Wrapper for PK_Verifier
class CRYPTOPP_DLL SignatureVerificationFilter : public FilterWithBufferedInput
{
public:
	class SignatureVerificationFailed : public Exception
	{
	public:
		SignatureVerificationFailed()
			: Exception(DATA_INTEGRITY_CHECK_FAILED, "VerifierFilter: digital signature not valid") {}
	};

	enum Flags {SIGNATURE_AT_BEGIN=1, PUT_MESSAGE=2, PUT_SIGNATURE=4, PUT_RESULT=8, THROW_EXCEPTION=16, DEFAULT_FLAGS = SIGNATURE_AT_BEGIN | PUT_RESULT};
	SignatureVerificationFilter(const PK_Verifier &verifier, BufferedTransformation *attachment = NULL, word32 flags = DEFAULT_FLAGS);

	std::string AlgorithmName() const {return m_verifier.AlgorithmName();}

	bool GetLastResult() const {return m_verified;}

protected:
	void InitializeDerivedAndReturnNewSizes(const NameValuePairs &parameters, size_t &firstSize, size_t &blockSize, size_t &lastSize);
	void FirstPut(const byte *inString);
	void NextPutMultiple(const byte *inString, size_t length);
	void LastPut(const byte *inString, size_t 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 CRYPTOPP_DLL Redirector : public CustomSignalPropagation<Sink>
{
public:
	enum Behavior
	{
		DATA_ONLY = 0x00,
		PASS_SIGNALS = 0x01,
		PASS_WAIT_OBJECTS = 0x02,
		PASS_EVERYTHING = PASS_SIGNALS | PASS_WAIT_OBJECTS
	};

	Redirector() : m_target(NULL), m_behavior(PASS_EVERYTHING) {}
	Redirector(BufferedTransformation &target, Behavior behavior=PASS_EVERYTHING)
		: m_target(&target), m_behavior(behavior) {}

	void Redirect(BufferedTransformation &target) {m_target = &target;}
	void StopRedirection() {m_target = NULL;}

	Behavior GetBehavior() {return (Behavior) m_behavior;}
	void SetBehavior(Behavior behavior) {m_behavior=behavior;}
	bool GetPassSignals() const {return (m_behavior & PASS_SIGNALS) != 0;}
	void SetPassSignals(bool pass) { if (pass) m_behavior |= PASS_SIGNALS; else m_behavior &= ~(word32) PASS_SIGNALS; }
	bool GetPassWaitObjects() const {return (m_behavior & PASS_WAIT_OBJECTS) != 0;}
	void SetPassWaitObjects(bool pass) { if (pass) m_behavior |= PASS_WAIT_OBJECTS; else m_behavior &= ~(word32) PASS_WAIT_OBJECTS; }

	bool CanModifyInput() const
		{return m_target ? m_target->CanModifyInput() : false;}

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

	byte * ChannelCreatePutSpace(const std::string &channel, size_t &size)
		{return m_target ? m_target->ChannelCreatePutSpace(channel, size) : (byte *)(size=0, NULL);}
	size_t ChannelPut2(const std::string &channel, const byte *begin, size_t length, int messageEnd, bool blocking)
		{return m_target ? m_target->ChannelPut2(channel, begin, length, GetPassSignals() ? messageEnd : 0, blocking) : 0;}
	size_t ChannelPutModifiable2(const std::string &channel, byte *begin, size_t length, int messageEnd, bool blocking)
		{return m_target ? m_target->ChannelPutModifiable2(channel, begin, length, GetPassSignals() ? messageEnd : 0, blocking) : 0;}
	bool ChannelFlush(const std::string &channel, bool completeFlush, int propagation=-1, bool blocking=true)
		{return m_target && GetPassSignals() ? m_target->ChannelFlush(channel, completeFlush, propagation, blocking) : false;}
	bool ChannelMessageSeriesEnd(const std::string &channel, int propagation=-1, bool blocking=true)
		{return m_target && GetPassSignals() ? m_target->ChannelMessageSeriesEnd(channel, propagation, blocking) : false;}

	unsigned int GetMaxWaitObjectCount() const
		{ return m_target && GetPassWaitObjects() ? m_target->GetMaxWaitObjectCount() : 0; }
	void GetWaitObjects(WaitObjectContainer &container, CallStack const& callStack)
		{ if (m_target && GetPassWaitObjects()) m_target->GetWaitObjects(container, callStack); }

private:
	BufferedTransformation *m_target;
	word32 m_behavior;
};

// Used By ProxyFilter
class CRYPTOPP_DLL 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;}

	byte * CreatePutSpace(size_t &size)
		{return m_owner.AttachedTransformation()->CreatePutSpace(size);}
	size_t Put2(const byte *begin, size_t length, int messageEnd, bool blocking)
		{return m_owner.AttachedTransformation()->Put2(begin, length, m_passSignal ? messageEnd : 0, blocking);}
	size_t PutModifiable2(byte *begin, size_t 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;}

	size_t ChannelPut2(const std::string &channel, const byte *begin, size_t length, int messageEnd, bool blocking)
		{return m_owner.AttachedTransformation()->ChannelPut2(channel, begin, length, m_passSignal ? messageEnd : 0, blocking);}
	size_t ChannelPutModifiable2(const std::string &channel, byte *begin, size_t length, int messageEnd, bool blocking)
		{return m_owner.AttachedTransformation()->ChannelPutModifiable2(channel, begin, length, m_passSignal ? messageEnd : 0, blocking);}
	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 CRYPTOPP_DLL ProxyFilter : public FilterWithBufferedInput
{
public:
	ProxyFilter(BufferedTransformation *filter, size_t firstSize, size_t lastSize, BufferedTransformation *attachment);

	bool IsolatedFlush(bool hardFlush, bool blocking);

	void SetFilter(Filter *filter);
	void NextPutMultiple(const byte *s, size_t len);
	void NextPutModifiable(byte *inString, size_t length);

protected:
	member_ptr<BufferedTransformation> m_filter;
};

//! simple proxy filter that doesn't modify the underlying filter's input or output
class CRYPTOPP_DLL SimpleProxyFilter : public ProxyFilter
{
public:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产乱| 成人一区在线观看| 日韩一区二区免费在线观看| 成人动漫一区二区在线| 日韩av网站在线观看| 亚洲三级理论片| 国产性色一区二区| 久久一留热品黄| 久久久久国产免费免费| 91精品国产福利在线观看| 欧美日韩国产综合久久| 国产成人在线免费| 成人污污视频在线观看| 欧美一区二区三区免费在线看 | 美女脱光内衣内裤视频久久影院| 亚洲成av人片在线观看无码| 亚洲午夜成aⅴ人片| 婷婷综合另类小说色区| 麻豆一区二区三| 欧洲精品中文字幕| 3d动漫精品啪啪一区二区竹菊| 日韩你懂的电影在线观看| 久久综合色一综合色88| 香蕉乱码成人久久天堂爱免费| 91日韩精品一区| 9191久久久久久久久久久| 亚洲综合激情另类小说区| 久久精品国产99久久6| 国产成人自拍网| 欧美精品一区二区精品网| 欧美极品xxx| 国产精品国产三级国产有无不卡| 亚洲欧美国产三级| 天天综合日日夜夜精品| 欧美日韩免费在线视频| 欧美精品三级日韩久久| 国产清纯白嫩初高生在线观看91| 黄网站免费久久| 成人中文字幕电影| 国产欧美一区二区精品婷婷| 国产a精品视频| 欧美图片一区二区三区| 久久精品一区二区三区不卡 | 国产乱码字幕精品高清av| www.视频一区| 日韩欧美国产1| 久久99国产精品麻豆| 色悠久久久久综合欧美99| 欧美一三区三区四区免费在线看| 婷婷夜色潮精品综合在线| 日韩亚洲欧美中文三级| 久久国产夜色精品鲁鲁99| 国产色产综合色产在线视频| 97精品国产97久久久久久久久久久久| 日韩三级免费观看| 成人午夜在线视频| 一区二区在线电影| 91在线观看成人| 偷拍与自拍一区| 久久久久亚洲综合| 91小视频在线免费看| 午夜精品久久久久久久| xfplay精品久久| 91亚洲国产成人精品一区二区三| 丝袜美腿亚洲一区二区图片| 91麻豆福利精品推荐| 亚洲福利视频三区| 精品国偷自产国产一区| 成人18视频日本| 日韩精品视频网| 国产精品电影一区二区三区| 911精品国产一区二区在线| 国产精品一色哟哟哟| 一区二区三区小说| 在线亚洲一区观看| 亚洲人123区| 日韩欧美一级在线播放| 99精品国产一区二区三区不卡 | 一区二区三区欧美亚洲| 日韩你懂的电影在线观看| 色婷婷亚洲精品| 国产精品一区二区在线观看网站| 一区二区在线看| 欧美国产综合色视频| 欧美一区日本一区韩国一区| 99久久99久久精品免费观看| 久久99精品国产.久久久久久| 亚洲精品大片www| 国产人伦精品一区二区| 日韩欧美视频一区| 欧美午夜精品久久久| 不卡的av在线播放| 国产又粗又猛又爽又黄91精品| www久久久久| 欧美日韩国产a| 91福利小视频| 91在线精品一区二区| 国产精品66部| 国产在线播精品第三| 日韩中文字幕亚洲一区二区va在线| 日韩毛片视频在线看| 国产无一区二区| 亚洲精品一区二区三区影院| 91精品国产综合久久婷婷香蕉| 一本大道综合伊人精品热热| 成人激情黄色小说| 成人免费毛片嘿嘿连载视频| 国产伦精品一区二区三区视频青涩| 美女国产一区二区| 日韩高清不卡一区| 日本大胆欧美人术艺术动态| 污片在线观看一区二区| 偷拍日韩校园综合在线| 午夜天堂影视香蕉久久| 亚洲成人综合网站| 日本亚洲最大的色成网站www| 午夜精品久久久久| 日韩av电影天堂| 美女视频网站久久| 精品一区二区国语对白| 韩国精品主播一区二区在线观看 | 久久―日本道色综合久久| 精品99999| 国产欧美一区视频| 国产精品成人在线观看| 一区二区三区日韩欧美精品| 亚洲成人一二三| 美腿丝袜在线亚洲一区| 国产老肥熟一区二区三区| 成人网页在线观看| 91亚洲国产成人精品一区二三 | 亚洲gay无套男同| 蜜桃一区二区三区在线| 国产美女精品一区二区三区| 国产传媒久久文化传媒| 色老综合老女人久久久| 欧美日韩国产首页在线观看| 日韩欧美色电影| 国产精品久久福利| 亚洲成av人综合在线观看| 久久99国产精品久久99| 成人aaaa免费全部观看| 欧美福利视频导航| 国产婷婷色一区二区三区四区 | 国产一区二区三区免费看| 国产精品1区2区3区在线观看| jlzzjlzz亚洲日本少妇| 欧美日韩中文一区| 久久婷婷国产综合精品青草| 亚洲欧美综合色| 国产日韩欧美精品一区| 一区二区在线观看av| 国产一区二区精品久久| 色综合久久天天综合网| 欧美成人在线直播| 欧美一级日韩不卡播放免费| 国产女主播视频一区二区| 亚洲午夜视频在线观看| 国产成人啪午夜精品网站男同| 91久久精品国产91性色tv| 精品久久一区二区| 亚洲一区二区三区四区在线观看| 韩国成人在线视频| 欧美亚洲日本一区| 国产女人18毛片水真多成人如厕 | 国产精品欧美一级免费| 久久久久亚洲综合| 一区二区三区资源| 国产成人精品免费网站| 欧美一级日韩不卡播放免费| 亚洲黄色小视频| 福利一区二区在线| 欧美白人最猛性xxxxx69交| 亚洲成人资源网| 色婷婷激情久久| 国产女人18毛片水真多成人如厕 | 国产精品网站在线观看| 麻豆国产精品一区二区三区 | 色婷婷狠狠综合| 中文字幕av在线一区二区三区| 蜜桃视频第一区免费观看| 欧美吻胸吃奶大尺度电影| 中文字幕中文字幕一区| 国产精品一区二区在线播放 | 日韩欧美专区在线| 亚洲一区影音先锋| 99国产精品久久久久| 中文字幕精品综合| 国产91在线观看丝袜| 久久久欧美精品sm网站| 国产在线精品一区二区不卡了| 日韩一区二区在线看片| 日韩精品久久理论片| 欧美美女网站色| 亚洲a一区二区| 欧美情侣在线播放| 天使萌一区二区三区免费观看| 欧美亚洲国产一区二区三区| 一区二区三区**美女毛片| 色94色欧美sute亚洲13|