JavaScript generic ASN.1 parser (mirror)
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Decode short BIT STRINGs.

+17 -1
+17 -1
asn1.js
··· 106 106 n = (n << 8) | this.get(i); 107 107 return n; 108 108 } 109 + Stream.prototype.parseBitString = function(start, end) { 110 + var unusedBit = this.get(start); 111 + var lenBit = ((end - start - 1) << 3) - unusedBit; 112 + var s = "(" + lenBit + " bit)"; 113 + if (lenBit <= 32) { 114 + var skip = unusedBit; 115 + s += " "; 116 + for (var i = end - 1; i > start; --i) { 117 + var h = this.get(i); 118 + for (var j = skip; j < 8; ++j) 119 + s += (h >> j) & 1 ? "1" : "0"; 120 + skip = 0; 121 + } 122 + } 123 + return s; 124 + } 109 125 Stream.prototype.parseOID = function(start, end) { 110 126 var s, n = 0, bits = 0; 111 127 for (var i = start; i < end; ++i) { ··· 189 205 case 0x02: // INTEGER 190 206 return this.stream.parseInteger(content, content + len); 191 207 case 0x03: // BIT_STRING 192 - return "(" + (((len - 1) << 3) - this.stream.get(content)) + " bit)"; 208 + return this.stream.parseBitString(content, content + len) 193 209 case 0x04: // OCTET_STRING 194 210 return "(" + len + " byte)"; 195 211 //case 0x05: // NULL