📄 asner.h
字号:
void EncodeBER(PBER_Stream & strm) const;#endif#ifdef P_INCLUDE_PER BOOL DecodePER(PPER_Stream & strm); void EncodePER(PPER_Stream & strm) const;#endif protected: void Construct(); BOOL IsLegalCharacter(WORD ch); PWORDArray value; PWORDArray characterSet; WORD firstChar, lastChar; unsigned charSetUnalignedBits; unsigned charSetAlignedBits;};class PASN_GeneralisedTime : public PASN_VisibleString{ PCLASSINFO(PASN_GeneralisedTime, PASN_VisibleString); public: PASN_GeneralisedTime() : PASN_VisibleString(UniversalGeneralisedTime, UniversalTagClass) { } PASN_GeneralisedTime(const PTime & time) : PASN_VisibleString(UniversalGeneralisedTime, UniversalTagClass) { SetValue(time); } PASN_GeneralisedTime(unsigned tag, TagClass tagClass) : PASN_VisibleString(tag, tagClass) { } PASN_GeneralisedTime & operator=(const PTime & time); void SetValue(const PTime & time) { operator=(time); } PTime GetValue() const;};class PASN_UniversalTime : public PASN_VisibleString{ PCLASSINFO(PASN_UniversalTime, PASN_VisibleString); public: PASN_UniversalTime() : PASN_VisibleString(UniversalUTCTime, UniversalTagClass) { } PASN_UniversalTime(const PTime & time) : PASN_VisibleString(UniversalUTCTime, UniversalTagClass) { SetValue(time); } PASN_UniversalTime(unsigned tag, TagClass tagClass) : PASN_VisibleString(tag, tagClass) { } PASN_UniversalTime & operator=(const PTime & time); void SetValue(const PTime & time) { operator=(time); } PTime GetValue() const;};class PASN_Sequence;/** Class for ASN Choice type.*/class PASN_Choice : public PASN_Object{ PCLASSINFO(PASN_Choice, PASN_Object); public: ~PASN_Choice(); virtual void SetTag(unsigned newTag, TagClass tagClass = DefaultTagClass); PString GetTagName() const; PASN_Object & GetObject() const; BOOL IsValid() const { return choice != NULL; }#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9 operator PASN_Null &() const; operator PASN_Boolean &() const; operator PASN_Integer &() const; operator PASN_Enumeration &() const; operator PASN_Real &() const; operator PASN_ObjectId &() const; operator PASN_BitString &() const; operator PASN_OctetString &() const; operator PASN_NumericString &() const; operator PASN_PrintableString &() const; operator PASN_VisibleString &() const; operator PASN_IA5String &() const; operator PASN_GeneralString &() const; operator PASN_BMPString &() const; operator PASN_Sequence &() const;#else operator PASN_Null &(); operator PASN_Boolean &(); operator PASN_Integer &(); operator PASN_Enumeration &(); operator PASN_Real &(); operator PASN_ObjectId &(); operator PASN_BitString &(); operator PASN_OctetString &(); operator PASN_NumericString &(); operator PASN_PrintableString &(); operator PASN_VisibleString &(); operator PASN_IA5String &(); operator PASN_GeneralString &(); operator PASN_BMPString &(); operator PASN_Sequence &(); operator const PASN_Null &() const; operator const PASN_Boolean &() const; operator const PASN_Integer &() const; operator const PASN_Enumeration &() const; operator const PASN_Real &() const; operator const PASN_ObjectId &() const; operator const PASN_BitString &() const; operator const PASN_OctetString &() const; operator const PASN_NumericString &() const; operator const PASN_PrintableString &() const; operator const PASN_VisibleString &() const; operator const PASN_IA5String &() const; operator const PASN_GeneralString &() const; operator const PASN_BMPString &() const; operator const PASN_Sequence &() const;#endif virtual BOOL CreateObject() = 0; virtual Comparison Compare(const PObject & obj) const; virtual void PrintOn(ostream & strm) const; virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL IsPrimitive() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const;#ifdef P_INCLUDE_PER virtual BOOL DecodePER(PPER_Stream &); virtual void EncodePER(PPER_Stream &) const;#endif#ifdef P_INCLUDE_XER BOOL DecodeXER(PXER_Stream &); void EncodeXER(PXER_Stream &) const;#endif PASN_Choice & operator=(const PASN_Choice & other); protected: PASN_Choice(unsigned nChoices = 0, BOOL extend = FALSE); PASN_Choice(unsigned tag, TagClass tagClass, unsigned nChoices, BOOL extend); PASN_Choice(unsigned tag, TagClass tagClass, unsigned nChoices, BOOL extend, const PASN_Names * nameSpec,unsigned namesCnt); PASN_Choice(const PASN_Choice & other); BOOL CheckCreate() const; unsigned numChoices; PASN_Object * choice; const PASN_Names *names; unsigned namesCount;};PARRAY(PASN_ObjectArray, PASN_Object);/** Class for ASN Sequence type.*/class PASN_Sequence : public PASN_Object{ PCLASSINFO(PASN_Sequence, PASN_Object); public: PASN_Sequence(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass, unsigned nOpts = 0, BOOL extend = FALSE, unsigned nExtend = 0); PASN_Sequence(const PASN_Sequence & other); PASN_Sequence & operator=(const PASN_Sequence & other); PINDEX GetSize() const { return fields.GetSize(); } BOOL SetSize(PINDEX newSize); PASN_Object & operator[](PINDEX i) const { return fields[i]; } BOOL HasOptionalField(PINDEX opt) const; void IncludeOptionalField(PINDEX opt); void RemoveOptionalField(PINDEX opt); virtual Comparison Compare(const PObject & obj) const; virtual PObject * Clone() const; virtual void PrintOn(ostream & strm) const; virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL IsPrimitive() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; BOOL PreambleDecode(PASN_Stream & strm); void PreambleEncode(PASN_Stream & strm) const; BOOL KnownExtensionDecode(PASN_Stream & strm, PINDEX fld, PASN_Object & field); void KnownExtensionEncode(PASN_Stream & strm, PINDEX fld, const PASN_Object & field) const; BOOL UnknownExtensionsDecode(PASN_Stream & strm); void UnknownExtensionsEncode(PASN_Stream & strm) const;#ifdef P_INCLUDE_BER BOOL PreambleDecodeBER(PBER_Stream & strm); void PreambleEncodeBER(PBER_Stream & strm) const; BOOL KnownExtensionDecodeBER(PBER_Stream & strm, PINDEX fld, PASN_Object & field); void KnownExtensionEncodeBER(PBER_Stream & strm, PINDEX fld, const PASN_Object & field) const; BOOL UnknownExtensionsDecodeBER(PBER_Stream & strm); void UnknownExtensionsEncodeBER(PBER_Stream & strm) const;#endif#ifdef P_INCLUDE_PER BOOL PreambleDecodePER(PPER_Stream & strm); void PreambleEncodePER(PPER_Stream & strm) const; BOOL KnownExtensionDecodePER(PPER_Stream & strm, PINDEX fld, PASN_Object & field); void KnownExtensionEncodePER(PPER_Stream & strm, PINDEX fld, const PASN_Object & field) const; BOOL UnknownExtensionsDecodePER(PPER_Stream & strm); void UnknownExtensionsEncodePER(PPER_Stream & strm) const;#endif#ifdef P_INCLUDE_XER virtual BOOL PreambleDecodeXER(PXER_Stream & strm); virtual void PreambleEncodeXER(PXER_Stream & strm) const; virtual BOOL KnownExtensionDecodeXER(PXER_Stream & strm, PINDEX fld, PASN_Object & field); virtual void KnownExtensionEncodeXER(PXER_Stream & strm, PINDEX fld, const PASN_Object & field) const; virtual BOOL UnknownExtensionsDecodeXER(PXER_Stream & strm); virtual void UnknownExtensionsEncodeXER(PXER_Stream & strm) const;#endif protected: BOOL NoExtensionsToDecode(PPER_Stream & strm); BOOL NoExtensionsToEncode(PPER_Stream & strm); PASN_ObjectArray fields; PASN_BitString optionMap; int knownExtensions; int totalExtensions; PASN_BitString extensionMap; PINDEX endBasicEncoding;};/** Class for ASN Set type.*/class PASN_Set : public PASN_Sequence{ PCLASSINFO(PASN_Set, PASN_Sequence); public: PASN_Set(unsigned tag = UniversalSet, TagClass tagClass = UniversalTagClass, unsigned nOpts = 0, BOOL extend = FALSE, unsigned nExtend = 0); virtual PObject * Clone() const; virtual PString GetTypeAsString() const;};/** Class for ASN Array type.*/class PASN_Array : public PASN_ConstrainedObject{ PCLASSINFO(PASN_Array, PASN_ConstrainedObject); public: PINDEX GetSize() const { return array.GetSize(); } BOOL SetSize(PINDEX newSize); PASN_Object & operator[](PINDEX i) const { return array[i]; } void Append(PASN_Object * obj) { array.SetAt(array.GetSize(), obj); } void RemoveAt(PINDEX i) { array.RemoveAt(i); } void RemoveAll() { array.RemoveAll(); } virtual Comparison Compare(const PObject & obj) const; virtual void PrintOn(ostream & strm) const; virtual void SetConstraintBounds(ConstraintType type, int lower, unsigned upper); virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL IsPrimitive() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; virtual PASN_Object * CreateObject() const = 0; PASN_Array & operator=(const PASN_Array & other); protected: PASN_Array(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); PASN_Array(const PASN_Array & other); PASN_ObjectArray array;};//////////////////////////////////////////////////////////////////////////////** Base class for ASN decoder/encoder stream.*/class PASN_Stream : public PBYTEArray{ PCLASSINFO(PASN_Stream, PBYTEArray); public: PASN_Stream(); PASN_Stream(const PBYTEArray & bytes); PASN_Stream(const BYTE * buf, PINDEX size); void PrintOn(ostream & strm) const; PINDEX GetPosition() const { return byteOffset; } void SetPosition(PINDEX newPos); BOOL IsAtEnd() { return byteOffset >= GetSize(); } void ResetDecoder(); void BeginEncoding(); void CompleteEncoding(); virtual BOOL Read(PChannel & chan) = 0; virtual BOOL Write(PChannel & chan) = 0; virtual BOOL NullDecode(PASN_Null &) = 0; virtual void NullEncode(const PASN_Null &) = 0; virtual BOOL BooleanDecode(PASN_Boolean &) = 0; virtual void BooleanEncode(const PASN_Boolean &) = 0; virtual BOOL IntegerDecode(PASN_Integer &) = 0; virtual void IntegerEncode(const PASN_Integer &) = 0; virtual BOOL EnumerationDecode(PASN_Enumeration &) = 0; virtual void EnumerationEncode(const PASN_Enumeration &) = 0; virtual BOOL RealDecode(PASN_Real &) = 0; virtual void RealEncode(const PASN_Real &) = 0; virtual BOOL ObjectIdDecode(PASN_ObjectId &) = 0; virtual void ObjectIdEncode(const PASN_ObjectId &) = 0; virtual BOOL BitStringDecode(PASN_BitString &) = 0; virtual void BitStringEncode(const PASN_BitString &) = 0; virtual BOOL OctetStringDecode(PASN_OctetString &) = 0; virtual void OctetStringEncode(const PASN_OctetString &) = 0; virtual BOOL ConstrainedStringDecode(PASN_ConstrainedString &) = 0; virtual void ConstrainedStringEncode(const PASN_ConstrainedString &) = 0; virtual BOOL BMPStringDecode(PASN_BMPString &) = 0; virtual void BMPStringEncode(const PASN_BMPString &) = 0; virtual BOOL ChoiceDecode(PASN_Choice &) = 0; virtual void ChoiceEncode(const PASN_Choice &) = 0; virtual BOOL ArrayDecode(PASN_Array &) = 0; virtual void ArrayEncode(const PASN_Array &) = 0; virtual BOOL SequencePreambleDecode(PASN_Sequence &) = 0; virtual void SequencePreambleEncode(const PASN_Sequence &) = 0; virtual BOOL SequenceKnownDecode(PASN_Sequence &, PINDEX, PASN_Object &) = 0; virtual void SequenceKnownEncode(const PASN_Sequence &, PINDEX, const PASN_Object &) = 0; virtual BOOL SequenceUnknownDecode(PASN_Sequence &) = 0; virtual void SequenceUnknownEncode(const PASN_Sequence &) = 0; BYTE ByteDecode(); void ByteEncode(unsigned value); unsigned BlockDecode(BYTE * bufptr, unsigned nBytes); void BlockEncode(const BYTE * bufptr, PINDEX nBytes); void ByteAlign(); protected: PINDEX byteOffset; unsigned bitOffset; private: void Construct();};#ifdef P_INCLUDE_PER#include "asnper.h"#endif#ifdef P_INCLUDE_BER#include "asnber.h"#endif#ifdef P_INCLUDE_XER#include "asnxer.h"#endif#endif // _ASNER_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -