src/lib/ASN1ContentHandler.h
branchv_0
changeset 23 8941a679299f
parent 22 9b6f86760384
child 24 114810ee2386
equal deleted inserted replaced
22:9b6f86760384 23:8941a679299f
    35 		Sequence = 16,
    35 		Sequence = 16,
    36 		Set = 17
    36 		Set = 17
    37 	};
    37 	};
    38 
    38 
    39 	enum class StringType : uint64_t {
    39 	enum class StringType : uint64_t {
    40 		OctetString,
    40 		UTF8String = 0xC,
    41 		UTF8String,
    41 		NumericString = 0x12,
    42 		NumericString,
    42 		PrintableString = 0x13,
    43 		PrintableString,
    43 		T61String = 0x14,
    44 		T61String,
    44 		VideotexString = 0x15,
    45 		VideotexString,
    45 		IA5String = 0x16,
    46 		IA5String,
    46 		GraphicString = 0x19,
    47 		GraphicString,
    47 		VisibleString = 0x1A,
    48 		VisibleString,
    48 		GeneralString = 0x1B,
    49 		GeneralString,
    49 		UniversalString = 0x1C,
    50 		UniversalString,
    50 		CharacterString = 0x1D,
    51 		CharacterString,
    51 		BMPString = 0x1E,
    52 		BMPString,
       
    53 	};
    52 	};
    54 
    53 
    55 	enum class DateTimeType : uint64_t {
    54 	enum class DateTimeType : uint64_t {
    56 		UTCTime,
    55 		UTCTime,
    57 		GeneralizedTime,
    56 		GeneralizedTime,
   236 	virtual void writeCollectionStart(CollectionType type) = 0;
   235 	virtual void writeCollectionStart(CollectionType type) = 0;
   237 	virtual void writeCollectionEnd() = 0;
   236 	virtual void writeCollectionEnd() = 0;
   238 	virtual void writeBoolean(bool value) = 0;
   237 	virtual void writeBoolean(bool value) = 0;
   239 	virtual void writeNull() = 0;
   238 	virtual void writeNull() = 0;
   240 	virtual void writeInteger(Integer value) = 0;
   239 	virtual void writeInteger(Integer value) = 0;
   241 	virtual void writeString(StringType type, std::string value) = 0;
   240 	/**
       
   241 	 * @param type original type in ASN.1
       
   242 	 * @param value original text converted to UTF-8
       
   243 	 */
       
   244 	virtual void writeTextString(StringType type, std::string value) = 0;
       
   245 	/**
       
   246 	 * @param value arbitrary sequence of octets (bytes), usually not a human-readable text
       
   247 	 */
       
   248 	virtual void writeOctetString(std::string value) = 0;
       
   249 	/**
       
   250 	 * @param value arbitrary sequence of bits (booleans), usually not a human-readable text
       
   251 	 */
       
   252 	virtual void writeBitString(std::vector<bool> value) = 0;
   242 	virtual void writeOID(ObjectIdentifier value) = 0;
   253 	virtual void writeOID(ObjectIdentifier value) = 0;
   243 	virtual void writeDateTime(DateTimeType type, DateTime value) = 0;
   254 	virtual void writeDateTime(DateTimeType type, DateTime value) = 0;
   244 	// Object descriptor
   255 	// Object descriptor
   245 	// virtual void writeReal(float value) = 0;
   256 	// virtual void writeReal(float value) = 0;
   246 	// Enumerated
   257 	// Enumerated
   288 
   299 
   289 	void writeInteger(Integer value) override {
   300 	void writeInteger(Integer value) override {
   290 		handler->writeInteger(value);
   301 		handler->writeInteger(value);
   291 	}
   302 	}
   292 
   303 
   293 	void writeString(StringType type, std::string value) override {
   304 	void writeTextString(StringType type, std::string value) override {
   294 		handler->writeString(type, value);
   305 		handler->writeTextString(type, value);
       
   306 	}
       
   307 
       
   308 	void writeOctetString(std::string value) override {
       
   309 		handler->writeOctetString(value);
       
   310 	}
       
   311 
       
   312 	void writeBitString(std::vector<bool> value) override {
       
   313 		handler->writeBitString(value);
   295 	}
   314 	}
   296 
   315 
   297 	void writeOID(ObjectIdentifier value) override {
   316 	void writeOID(ObjectIdentifier value) override {
   298 		handler->writeOID(value);
   317 		handler->writeOID(value);
   299 	}
   318 	}