asn.h

来自「伯克利做的SFTP安全文件传输协议」· C头文件 代码 · 共 59 行

H
59
字号
#ifndef ASN_H#define ASN_H#include "cryptlib.h"#include "queue.h"// NOTE: these tags and flags are NOT COMPLETE!enum ASNTag {INTEGER=0x02, BIT_STRING=0x03, SEQUENCE=0x10};enum ASNIdFlag {CONSTRUCTED = 0x20};unsigned int DERLengthEncode(unsigned int length, byte *output);unsigned int DERLengthEncode(unsigned int length, BufferedTransformation &);#ifdef THROW_EXCEPTIONS#define BERDecodeError() throw BERDecodeErr()#else#define BERDecodeError() assert (false)#endifclass BERDecodeErr : public CryptlibException {public: BERDecodeErr() : CryptlibException("BER decode error") {}};bool BERLengthDecode(BufferedTransformation &, unsigned int &);class BERSequenceDecoder : public BufferedTransformation{public:	BERSequenceDecoder(BufferedTransformation &inQueue);	~BERSequenceDecoder();	void Put(byte) {}	void Put(const byte *, unsigned int) {}	unsigned long MaxRetrieveable()		{return inQueue.MaxRetrieveable();}	unsigned int Get(byte &outByte)		{return inQueue.Get(outByte);}	unsigned int Get(byte *outString, unsigned int getMax)		{return inQueue.Get(outString, getMax);}	unsigned int Peek(byte &outByte) const		{return inQueue.Peek(outByte);}private:	BufferedTransformation &inQueue;	bool definiteLength;	unsigned int length;};class DERSequenceEncoder : public ByteQueue{public:	DERSequenceEncoder(BufferedTransformation &outQueue);	~DERSequenceEncoder();private:	BufferedTransformation &outQueue;};#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?