Allow direct construction of encapsulated octet and bit strings.
* src/ksba.h.in (KSBA_CLASS_ENCAPSULATE): New pseudo class. * src/der-builder.c (struct item_s): Add field 'encapsulate'. Change 'class' to a 2 bit field. Decrease size of 'hdrlen' to 10 bits which is more than enough. (_ksba_der_builder_reset): Clear 'encapsulate'. (_ksba_der_add_ptr): Mask CLASS to avoid possible compiler warnings. (add_val_core): Ditto. (_ksba_der_add_tag): Ditto. Set ENCAPSULATE. (compute_lengths): Account for extra octet. (_ksba_der_builder_get): Implement encapsulated data. * tests/t-der-builder.c (test_der_builder): Add test cases for encapsulated data.
The class parameter can never take values greater than 3, so we
reuse bit 7 to introduced encapsulated data.
- Signed-off-by: Werner Koch <wk@gnupg.org>