📄 asner.h
字号:
virtual void PrintOn(ostream & strm) const; virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; protected: double value;};/** Class for ASN Object Identifier type.*/class PASN_ObjectId : public PASN_Object{ PCLASSINFO(PASN_ObjectId, PASN_Object); public: PASN_ObjectId(unsigned tag = UniversalObjectId, TagClass tagClass = UniversalTagClass); PASN_ObjectId(const PASN_ObjectId & other); PASN_ObjectId & operator=(const PASN_ObjectId & other); PASN_ObjectId & operator=(const char * dotstr); PASN_ObjectId & operator=(const PString & dotstr); void SetValue(const PString & dotstr); BOOL operator==(const char * dotstr) const; BOOL operator!=(const char * dotstr) const { return !operator==(dotstr); } BOOL operator==(const PASN_ObjectId & id) const { return value == id.value; } PINDEX GetSize() const { return value.GetSize(); } const PUnsignedArray & GetValue() const { return value; } unsigned operator[](PINDEX idx) const { return value[idx]; } 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 Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; BOOL CommonDecode(PASN_Stream & strm, unsigned dataLen); void CommonEncode(PBYTEArray & eObjId) const; protected: PUnsignedArray value;};/** Class for ASN Bit String type.*/class PASN_BitString : public PASN_ConstrainedObject{ PCLASSINFO(PASN_BitString, PASN_ConstrainedObject); public: PASN_BitString(unsigned tag = UniversalBitString, TagClass tagClass = UniversalTagClass, unsigned nBits = 0); PASN_BitString(const PASN_BitString & other); PASN_BitString & operator=(const PASN_BitString & other); void SetData(unsigned nBits, const PBYTEArray & bytes); void SetData(unsigned nBits, const BYTE * buf, PINDEX size); unsigned GetSize() const { return totalBits; } BOOL SetSize(unsigned nBits); BOOL operator[](PINDEX bit) const; void Set(unsigned bit); void Clear(unsigned bit); void Invert(unsigned bit); virtual void SetConstraints(ConstraintType type, int lower = 0, unsigned upper = UINT_MAX); 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 Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; BOOL DecodeBER(PBER_Stream & strm, unsigned len); void EncodeBER(PBER_Stream & strm) const; BOOL DecodePER(PPER_Stream & strm); void EncodePER(PPER_Stream & strm) const; protected: unsigned totalBits; PBYTEArray bitData;};/** Class for ASN Octet String type.*/class PASN_OctetString : public PASN_ConstrainedObject{ PCLASSINFO(PASN_OctetString, PASN_ConstrainedObject); public: PASN_OctetString(unsigned tag = UniversalOctetString, TagClass tagClass = UniversalTagClass); PASN_OctetString(const PASN_OctetString & other); PASN_OctetString & operator=(const PASN_OctetString & other); PASN_OctetString & operator=(const char * str); PASN_OctetString & operator=(const PString & str); PASN_OctetString & operator=(const PBYTEArray & arr); void SetValue(const char * str) { operator=(str); } void SetValue(const PString & str) { operator=(str); } void SetValue(const PBYTEArray & arr) { operator=(arr); } void SetValue(const BYTE * data, PINDEX len); const PBYTEArray & GetValue() const { return value; } operator const PBYTEArray &() const { return value; } operator const BYTE *() const { return value; } PString AsString() const; BYTE operator[](PINDEX i) const { return value[i]; } BYTE & operator[](PINDEX i) { return value[i]; } BYTE * GetPointer(PINDEX sz = 0) { return value.GetPointer(sz); } PINDEX GetSize() const { return value.GetSize(); } BOOL SetSize(PINDEX newSize) { return value.SetSize(newSize); } virtual void SetConstraints(ConstraintType type, int lower = 0, unsigned upper = UINT_MAX); 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 Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; BOOL DecodePER(PPER_Stream & strm); void EncodePER(PPER_Stream & strm) const; protected: PBYTEArray value;};/** Base class for ASN String types.*/class PASN_ConstrainedString : public PASN_ConstrainedObject{ PCLASSINFO(PASN_ConstrainedString, PASN_ConstrainedObject); public: PASN_ConstrainedString & operator=(const char * str); PASN_ConstrainedString & operator=(const PString & str) { return operator=((const char *)str); } operator const PString &() const { return value; } const PString & GetValue() const { return value; } void SetValue(const PString & v) { operator=(v); } char operator[](PINDEX idx) const { return value[idx]; } void SetCharacterSet(ConstraintType ctype, const char * charSet); void SetCharacterSet(ConstraintType ctype, unsigned firstChar = 0, unsigned lastChar = 255); void SetCharacterSet(const char * charSet, PINDEX size, ConstraintType ctype); virtual Comparison Compare(const PObject & obj) const; virtual void PrintOn(ostream & strm) const; virtual PINDEX GetDataLength() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; BOOL DecodeBER(PBER_Stream & strm, unsigned len); void EncodeBER(PBER_Stream & strm) const; BOOL DecodePER(PPER_Stream & strm); void EncodePER(PPER_Stream & strm) const; protected: PASN_ConstrainedString(const char * canonicalSet, PINDEX setSize, unsigned tag, TagClass tagClass); PString value; PCharArray characterSet; const char * canonicalSet; PINDEX canonicalSetSize; unsigned canonicalSetBits; unsigned charSetUnalignedBits; unsigned charSetAlignedBits;};#define DECLARE_STRING_CLASS(name) \ class PASN_##name##String : public PASN_ConstrainedString { \ PCLASSINFO(PASN_##name##String, PASN_ConstrainedString); \ public: \ PASN_##name##String(unsigned tag = UniversalNumericString, \ TagClass tagClass = UniversalTagClass); \ PASN_##name##String & operator=(const char * str); \ PASN_##name##String & operator=(const PString & str); \ virtual PObject * Clone() const; \ virtual PString GetTypeAsString() const; \ }DECLARE_STRING_CLASS(Numeric);DECLARE_STRING_CLASS(Printable);DECLARE_STRING_CLASS(Visible);DECLARE_STRING_CLASS(IA5);DECLARE_STRING_CLASS(General);/** Class for ASN BMP (16 bit) String type.*/class PASN_BMPString : public PASN_ConstrainedObject{ PCLASSINFO(PASN_BMPString, PASN_ConstrainedObject); public: PASN_BMPString(unsigned tag = UniversalBMPString, TagClass tagClass = UniversalTagClass); PASN_BMPString(const PASN_BMPString & other); PASN_BMPString & operator=(const PASN_BMPString & other); PASN_BMPString & operator=(const PString & v); PASN_BMPString & operator=(const PWORDArray & v); operator PString() const { return GetValue(); } operator PWORDArray() const { return value; } PString GetValue() const; void GetValue(PWORDArray & v) const { v = value; } void SetValue(const PString & v) { operator=(v); } void SetValue(const PWORDArray & v) { operator=(v); } void SetCharacterSet(ConstraintType ctype, const char * charSet); void SetCharacterSet(ConstraintType ctype, const PWORDArray & charSet); void SetCharacterSet(ConstraintType ctype, unsigned firstChar, unsigned lastChar); 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 Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; BOOL DecodeBER(PBER_Stream & strm, unsigned len); void EncodeBER(PBER_Stream & strm) const; BOOL DecodePER(PPER_Stream & strm); void EncodePER(PPER_Stream & strm) const; protected: BOOL IsLegalCharacter(WORD ch); PWORDArray value; PWORDArray characterSet; WORD firstChar, lastChar; unsigned charSetUnalignedBits; unsigned charSetAlignedBits;};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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -