📄 pasn.h
字号:
PObject * Clone() const; PASNInt GetInteger() const; PString GetString () const; ASNType GetType() const; PString GetTypeAsString() const; private: PASNInt value;};///////////////////////////////////////////////////////////////////////////** A descendant of PASNObject which is a simple ASN OctetStr type */class PASNString : public PASNObject{ PCLASSINFO(PASNString, PASNObject) public: PASNString(const PString & str); PASNString(const BYTE * ptr, int len); PASNString(const PBYTEArray & buffer, PASNObject::ASNType = String); PASNString(const PBYTEArray & buffer, PINDEX & ptr, PASNObject::ASNType = String); void PrintOn(ostream & strm) const; void Encode(PBYTEArray & buffer) { Encode(buffer, String); } WORD GetEncodedLength(); PObject * Clone() const; PString GetString() const; ASNType GetType() const; PString GetTypeAsString() const; protected: BOOL Decode(const PBYTEArray & buffer, PINDEX & i, PASNObject::ASNType type); void Encode(PBYTEArray & buffer, PASNObject::ASNType type); PString value; WORD valueLen;};///////////////////////////////////////////////////////////////////////////** A descendant of PASNObject which is an IP address type */class PASNIPAddress : public PASNString{ PCLASSINFO(PASNIPAddress, PASNString) public: PASNIPAddress(const PIPSocket::Address & addr) : PASNString(PString((const char *)&addr, 4)) { } PASNIPAddress(const PString & str); PASNIPAddress(const PBYTEArray & buffer) : PASNString(buffer, IPAddress) { } PASNIPAddress(const PBYTEArray & buffer, PINDEX & ptr) : PASNString(buffer, ptr, IPAddress) { } PASNObject::ASNType GetType() const { return IPAddress; } void Encode(PBYTEArray & buffer) { PASNString::Encode(buffer, IPAddress); } PString GetString() const; PString GetTypeAsString() const; PObject * Clone() const { return PNEW PASNIPAddress(*this); } PIPSocket::Address GetIPAddress () const;};///////////////////////////////////////////////////////////////////////////** A descendant of PASNObject which is an unsigned ASN integer type. */class PASNUnsignedInteger : public PASNObject{ PCLASSINFO(PASNUnsignedInteger, PASNObject) public: PASNUnsignedInteger(PASNUnsigned val) { value = val; } PASNUnsignedInteger(const PBYTEArray & buffer, PINDEX & ptr); void PrintOn(ostream & strm) const; WORD GetEncodedLength(); PString GetString () const; PASNUnsigned GetUnsigned() const; protected: PASNUnsignedInteger() { value = 0; } BOOL Decode(const PBYTEArray & buffer, PINDEX & i, PASNObject::ASNType theType); void Encode(PBYTEArray & buffer, PASNObject::ASNType theType); private: PASNUnsigned value;};///////////////////////////////////////////////////////////////////////////** A descendant of PASNObject which is an unsigned ASN time tick type. */class PASNTimeTicks : public PASNUnsignedInteger{ PCLASSINFO(PASNTimeTicks, PASNUnsignedInteger) public: PASNTimeTicks(PASNUnsigned val) : PASNUnsignedInteger(val) { } PASNTimeTicks(const PBYTEArray & buffer, PINDEX & ptr) { PASNUnsignedInteger::Decode(buffer, ptr, TimeTicks); } void Encode(PBYTEArray & buffer) { PASNUnsignedInteger::Encode(buffer, TimeTicks); } PObject * Clone() const { return PNEW PASNTimeTicks(*this); } PASNObject::ASNType GetType() const { return TimeTicks; } PString GetTypeAsString() const;};///////////////////////////////////////////////////////////////////////////** A descendant of PASNObject which is an unsigned ASN counter type. */class PASNCounter : public PASNUnsignedInteger{ PCLASSINFO(PASNCounter, PASNUnsignedInteger) public: PASNCounter(PASNUnsigned val) : PASNUnsignedInteger(val) { } PASNCounter(const PBYTEArray & buffer, PINDEX & ptr) { PASNUnsignedInteger::Decode(buffer, ptr, Counter); } void Encode(PBYTEArray & buffer) { PASNUnsignedInteger::Encode(buffer, Counter); } PObject * Clone() const { return PNEW PASNCounter(*this); } PASNObject::ASNType GetType() const { return Counter; } PString GetTypeAsString() const;};///////////////////////////////////////////////////////////////////////////** A descendant of PASNObject which is an unsigned ASN guage type. */class PASNGauge : public PASNUnsignedInteger{ PCLASSINFO(PASNGauge, PASNUnsignedInteger) public: PASNGauge(PASNUnsigned val) : PASNUnsignedInteger(val) { } PASNGauge(const PBYTEArray & buffer, PINDEX & ptr) { Decode(buffer, ptr); } BOOL Decode(const PBYTEArray & buffer, PINDEX & i) { return PASNUnsignedInteger::Decode(buffer, i, Gauge); } void Encode(PBYTEArray & buffer) { PASNUnsignedInteger::Encode(buffer, Gauge); } PObject * Clone() const { return PNEW PASNGauge(*this); } PASNObject::ASNType GetType() const { return Gauge; } PString GetTypeAsString() const;};///////////////////////////////////////////////////////////////////////////** A descendant of PASNObject which is an unsigned ASN ObjID type. */class PASNObjectID : public PASNObject{ PCLASSINFO(PASNObjectID, PASNObject) public: PASNObjectID(const PString & str); PASNObjectID(PASNOid * val, BYTE theLen); PASNObjectID(const PBYTEArray & buffer); PASNObjectID(const PBYTEArray & buffer, PINDEX & ptr); void PrintOn(ostream & strm) const; void Encode(PBYTEArray & buffer); WORD GetEncodedLength(); PObject * Clone() const; ASNType GetType() const; PString GetString () const; PString GetTypeAsString() const; protected: BOOL Decode(const PBYTEArray & buffer, PINDEX & i); private: PDWORDArray value;};///////////////////////////////////////////////////////////////////////////** A descendant of PASNObject which is the NULL type */class PASNNull : public PASNObject{ PCLASSINFO(PASNNull, PASNObject) public: PASNNull(); PASNNull(const PBYTEArray & buffer, PINDEX & ptr); void PrintOn(ostream & strm) const; void Encode(PBYTEArray & buffer); WORD GetEncodedLength(); PObject * Clone() const; ASNType GetType() const; PString GetString () const; PString GetTypeAsString() const;};///////////////////////////////////////////////////////////////////////////** A descendant of PASNObject which is the complex sequence type */class PASNSequence : public PASNObject{ PCLASSINFO(PASNSequence, PASNObject) public: PASNSequence(); PASNSequence(BYTE selector); PASNSequence(const PBYTEArray & buffer); PASNSequence(const PBYTEArray & buffer, PINDEX & i); void Append(PASNObject * obj); PINDEX GetSize() const; PASNObject & operator [] (PINDEX idx) const; const PASNSequence & GetSequence() const; void AppendInteger (PASNInt value); void AppendString (const PString & str); void AppendObjectID(const PString & str); void AppendObjectID(PASNOid * val, BYTE len); int GetChoice() const;// PASNInt GetInteger (PINDEX idx) const;// PString GetString (PINDEX idx) const; void PrintOn(ostream & strm) const; void Encode(PBYTEArray & buffer); BOOL Decode(const PBYTEArray & buffer, PINDEX & i); WORD GetEncodedLength(); ASNType GetType() const; PString GetTypeAsString() const; BOOL Encode(PBYTEArray & buffer, PINDEX maxLen) ; private: PASNObjectList sequence; BYTE type; ASNType asnType; WORD encodedLen; WORD seqLen;};#endif// End of File.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -