|ASN1_PUT_OBJECT(3)||Library Functions Manual||ASN1_PUT_OBJECT(3)|
ASN1_put_eoc — start and end
the BER encoding of an arbitrary ASN.1 data element
**ber_out, int constructed, int
length, int tag, int
ASN1_put_object() begins writing the BER
encoding of an arbitrary ASN.1 data element to the buffer *ber_out by
writing the identifier and the length bytes. Making sure that there is
sufficient space in the buffer is the responsibility of the caller. This
function does not write any content bytes nor any end-of-content bytes.
The tag class can be
V_ASN1_PRIVATE and is written to the two most
significant bits of the first byte written.
The constructed argument can have the following values:
If the tag is less than 0x1f, it is written to the five least significant bits of the only identifier byte written. Otherwise, these five bits are all set to 1, and the tag is encoded in one or more following identifier bytes as needed.
After completing the identifier byte(s), when using the definite form, the given length is encoded in one or more bytes as needed. Otherwise, the special byte 0x80 is written instead and the length argument is ignored.
At the end, *ber_out is set to the byte following the last byte written. The calling code can then start writing content bytes.
If the indefinite form was selected, the calling code is also
responsible for calling
ASN1_put_eoc() which writes
an end-of-content marker to *ber_out, consisting of
two NUL bytes, and advances *ber_out by two bytes.
ASN1_put_eoc() returns the number of bytes
written, which is always 2.
ASN1_put_object() first appeared in SSLeay
0.5.1 and has been available since OpenBSD 2.4.
ASN1_put_eoc() first appeared in OpenSSL
0.9.8 and has been available since OpenBSD 4.5.
ASN1_put_eoc() do any sanity checking. When called
in inconsistent ways, invalid content may result in
*ber_out, for example
If the calling code wants to find out how many bytes were written,
it needs to save a copy of the pointer *ber_out before
|August 26, 2019||OpenBSD-current|