… | |
… | |
279 | { |
279 | { |
280 | case 0: |
280 | case 0: |
281 | error ("indefinite ASN.1 lengths not supported"); |
281 | error ("indefinite ASN.1 lengths not supported"); |
282 | return 0; |
282 | return 0; |
283 | |
283 | |
|
|
284 | //case 0x80: // indefinite length |
|
|
285 | |
|
|
286 | //case 0xff: reserved |
284 | default: |
287 | default: |
285 | error ("ASN.1 length too long"); |
288 | error ("ASN.1 length too long"); |
286 | return 0; |
289 | return 0; |
287 | |
290 | |
288 | case 8: res = (res << 8) | get_u8 (); |
291 | case 8: res = (res << 8) | get_u8 (); |
… | |
… | |
382 | static char oid[MAX_OID_STRLEN]; // static, becaueds too large for stack |
385 | static char oid[MAX_OID_STRLEN]; // static, becaueds too large for stack |
383 | char *app = oid; |
386 | char *app = oid; |
384 | |
387 | |
385 | if (relative) |
388 | if (relative) |
386 | app = write_uv (app, w); |
389 | app = write_uv (app, w); |
387 | else |
390 | else if (w < 2 * 40) |
388 | { |
391 | { |
389 | app = write_uv (app, (U8)w / 40); |
392 | app = write_uv (app, (U8)w / 40); |
390 | *app++ = '.'; |
393 | *app++ = '.'; |
391 | app = write_uv (app, (U8)w % 40); |
394 | app = write_uv (app, (U8)w % 40); |
|
|
395 | } |
|
|
396 | else |
|
|
397 | { |
|
|
398 | app = write_uv (app, 2); |
|
|
399 | *app++ = '.'; |
|
|
400 | app = write_uv (app, w - 2 * 40); |
392 | } |
401 | } |
393 | |
402 | |
394 | while (cur < end) |
403 | while (cur < end) |
395 | { |
404 | { |
396 | // we assume an oid component is never > 64 digits |
405 | // we assume an oid component is never > 64 digits |