Tweaking UPER decoding
This commit is contained in:
@ -80,10 +80,7 @@ uint oer_get_extension(OER_Stream *oer, OER_Extension *ext, uint noptions, uint
|
||||
|
||||
uint length;
|
||||
oer_get_length(oer, &length);
|
||||
ext->length = length;
|
||||
|
||||
if (_asn1_debug_on_)
|
||||
printf("\tEXT_LEN = %d\n", ext->length);
|
||||
ext->length = length;
|
||||
// otherwise no ...
|
||||
}
|
||||
else {
|
||||
|
||||
@ -75,8 +75,6 @@ void oer_put_extension(OER_Stream *oer, OER_Extension *ext)
|
||||
|
||||
if (ext->length) {
|
||||
uint len = ext->length & 0x7fff;
|
||||
if (_asn1_debug_on_)
|
||||
printf("\tEXT_LEN = %d\n", ext->length);
|
||||
oer_put_length(oer, len);
|
||||
}
|
||||
}
|
||||
|
||||
@ -131,7 +131,7 @@ uint64_t uper_get_bits_stream(UPER_Stream *uper, uint nbits)
|
||||
uint n = 1 + ((sbit + nbits)/8);
|
||||
|
||||
if (_asn1_debug_on_ == 2)
|
||||
printf("\tGET_BITS_DETAIL = sbit=%d, ebit=%d, nbits=%d (%d) ", sbit, ebit, nbits, n);
|
||||
printf("\tGET_BITS_DETAIL = byte=%03x, sbit=%d, ebit=%d, nbits=%d (%d) ", uper->consumed/8, sbit, ebit, nbits, n);
|
||||
|
||||
if (nbits==1) {
|
||||
// speed short cut
|
||||
@ -159,7 +159,7 @@ uint64_t uper_get_bits_stream(UPER_Stream *uper, uint nbits)
|
||||
uper->consumed += nbits;
|
||||
|
||||
if (_asn1_debug_on_)
|
||||
printf("\tGET_BITS = %08lx (%ld)\n", value, value);
|
||||
printf("\tGET_BITS_DATA = %08lx (%ld)\n", value, value);
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
@ -69,20 +69,21 @@ uint uper_get_extension(UPER_Stream *uper, UPER_Extension *ext, uint noptions, u
|
||||
if (ellipses) {
|
||||
ext->ellipses = uper_get_bits_stream(uper, 1);
|
||||
}
|
||||
else
|
||||
ext->ellipses = 0;
|
||||
|
||||
// check for options
|
||||
if (noptions) {
|
||||
ext->value = uper_get_bits_stream(uper, noptions);
|
||||
ext->options = noptions;
|
||||
}
|
||||
else
|
||||
ext->options = 0;
|
||||
|
||||
if (ext->ellipses) {
|
||||
uper_get_ext_length(uper, ext);
|
||||
|
||||
if (_asn1_debug_on_)
|
||||
printf("\tEXT_LEN = %d\n", ext->length);
|
||||
// otherwise no ...
|
||||
}
|
||||
}
|
||||
|
||||
return ellipses + noptions;
|
||||
}
|
||||
|
||||
@ -70,8 +70,6 @@ void uper_put_extension(UPER_Stream *uper, UPER_Extension *ext)
|
||||
|
||||
if (ext->length) {
|
||||
uint len = ext->length & 0x7fff;
|
||||
if (_asn1_debug_on_)
|
||||
printf("\tEXT_LEN = %d\n", ext->length);
|
||||
if (len >= 128) {
|
||||
uper_put_bits_stream(uper, 0x8000 | len, 16);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user