Home GnuPG

Allow direct construction of encapsulated octet and bit strings.

Description

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>

Details

Provenance
wernerAuthored on May 15 2020, 5:16 PM
Parents
rK0e0fad9335ba: Publish constants for the DER builder.
Branches
Unknown
Tags
Unknown