src/lib/ASN1ContentHandler.h
branchv_0
changeset 23 8941a679299f
parent 22 9b6f86760384
child 24 114810ee2386
--- a/src/lib/ASN1ContentHandler.h	Wed Jun 30 20:11:39 2021 +0200
+++ b/src/lib/ASN1ContentHandler.h	Fri Jul 02 00:42:01 2021 +0200
@@ -37,19 +37,18 @@
 	};
 
 	enum class StringType : uint64_t {
-		OctetString,
-		UTF8String,
-		NumericString,
-		PrintableString,
-		T61String,
-		VideotexString,
-		IA5String,
-		GraphicString,
-		VisibleString,
-		GeneralString,
-		UniversalString,
-		CharacterString,
-		BMPString,
+		UTF8String = 0xC,
+		NumericString = 0x12,
+		PrintableString = 0x13,
+		T61String = 0x14,
+		VideotexString = 0x15,
+		IA5String = 0x16,
+		GraphicString = 0x19,
+		VisibleString = 0x1A,
+		GeneralString = 0x1B,
+		UniversalString = 0x1C,
+		CharacterString = 0x1D,
+		BMPString = 0x1E,
 	};
 
 	enum class DateTimeType : uint64_t {
@@ -238,7 +237,19 @@
 	virtual void writeBoolean(bool value) = 0;
 	virtual void writeNull() = 0;
 	virtual void writeInteger(Integer value) = 0;
-	virtual void writeString(StringType type, std::string value) = 0;
+	/**
+	 * @param type original type in ASN.1
+	 * @param value original text converted to UTF-8
+	 */
+	virtual void writeTextString(StringType type, std::string value) = 0;
+	/**
+	 * @param value arbitrary sequence of octets (bytes), usually not a human-readable text
+	 */
+	virtual void writeOctetString(std::string value) = 0;
+	/**
+	 * @param value arbitrary sequence of bits (booleans), usually not a human-readable text
+	 */
+	virtual void writeBitString(std::vector<bool> value) = 0;
 	virtual void writeOID(ObjectIdentifier value) = 0;
 	virtual void writeDateTime(DateTimeType type, DateTime value) = 0;
 	// Object descriptor
@@ -290,8 +301,16 @@
 		handler->writeInteger(value);
 	}
 
-	void writeString(StringType type, std::string value) override {
-		handler->writeString(type, value);
+	void writeTextString(StringType type, std::string value) override {
+		handler->writeTextString(type, value);
+	}
+
+	void writeOctetString(std::string value) override {
+		handler->writeOctetString(value);
+	}
+
+	void writeBitString(std::vector<bool> value) override {
+		handler->writeBitString(value);
 	}
 
 	void writeOID(ObjectIdentifier value) override {