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 + -
显示快捷键?