equal
deleted
inserted
replaced
86 read(&tagByte, 1); |
86 read(&tagByte, 1); |
87 |
87 |
88 h.tagClass = (TagClass) (tagByte >> 6); |
88 h.tagClass = (TagClass) (tagByte >> 6); |
89 h.pc = (PC) ((tagByte >> 5) & 1); |
89 h.pc = (PC) ((tagByte >> 5) & 1); |
90 h.tag = tagByte & (0xFF >> 3); |
90 h.tag = tagByte & (0xFF >> 3); |
91 if (h.tag > 30) throw relpipe::writer::RelpipeWriterException(L"not yet implemented, ASN.1 tag > 30"); // FIXME: higher tag values → read more bytes |
91 if (h.tag == 31) { // all five tag bits are set → tag number (greater than 30) is encoded in following octets |
|
92 h.tag = 0; |
|
93 uint8_t moreTag = 0; |
|
94 do { |
|
95 read(&moreTag, 1); |
|
96 h.tag = h.tag << 7 | (moreTag & (0xFF >> 1)); |
|
97 } while (moreTag & (1 << 7)); |
|
98 } |
92 |
99 |
93 uint8_t lengthByte; |
100 uint8_t lengthByte; |
94 read(&lengthByte, 1); |
101 read(&lengthByte, 1); |
95 |
102 |
96 if (lengthByte >> 7 == 0) { |
103 if (lengthByte >> 7 == 0) { |