--- 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 {