143 handlers.writeNull(); |
143 handlers.writeNull(); |
144 } else if (typeHeader.tag == 1) { |
144 } else if (typeHeader.tag == 1) { |
145 bool value; |
145 bool value; |
146 read((uint8_t*) & value, 1); |
146 read((uint8_t*) & value, 1); |
147 handlers.writeBoolean(value); |
147 handlers.writeBoolean(value); |
|
148 } else if (typeHeader.tag == 12 && typeHeader.tagClass == TagClass::Universal) { |
|
149 std::string s; |
|
150 s.resize(typeHeader.length); |
|
151 read((uint8_t*) s.data(), typeHeader.length); |
|
152 handlers.writeString(ASN1ContentHandler::StringType::UTF8String, s); |
|
153 } else if (typeHeader.tag == 19 && typeHeader.tagClass == TagClass::Universal) { |
|
154 // TODO: check encoding |
|
155 std::string s; |
|
156 s.resize(typeHeader.length); |
|
157 read((uint8_t*) s.data(), typeHeader.length); |
|
158 handlers.writeString(ASN1ContentHandler::StringType::PrintableString, s); |
148 } else { |
159 } else { |
149 // TODO: do not skip, parse |
160 // TODO: do not skip, parse |
150 std::vector<uint8_t> temp(typeHeader.length, 0); |
161 std::vector<uint8_t> temp(typeHeader.length, 0); |
151 read(temp.data(), typeHeader.length); |
162 read(temp.data(), typeHeader.length); |
152 // TODO: recover transaction? |
163 // TODO: recover transaction? |