SilcAsn1Options
NAME
typedef enum { ... } SilcAsn1Options;
DESCRIPTION
Options for ASN.1 encoder and decoder. The ASN.1 options can be
given to the SILC_ASN1_*_T macros and/or SILC_ASN1_OPTS macro.
NOTES
The SILC_ASN1_ALLOC and SILC_ASN1_ACCUMUL flags can be given only
with SILC_ASN1_OPTS macro. Other options can be given with various
SILC_ASN1_*_T macros.
EXAMPLE
// Encodes boolean value with explicit tag and private class, and
// the result is allocated into `dest'.
silc_asn1_encode(asn1, &dest,
SILC_ASN1_OPTS(SILC_ASN1_ALLOC),
SILC_ASN1_BOOLEAN_T(SILC_ASN1_PRIVATE |
SILC_ASN1_EXPLICIT, 100, boolval),
SILC_ASN1_END);
SOURCE
typedef enum {
/* Default. If only this is set then defaults are implied. */
SILC_ASN1_DEFAULT = 0x0000,
/* Class options. User does not need to set these unless specificly
wanted to do so. If SILC_ASN1_DEFAULT is set the SILC_ASN1_CONTEXT is
implied if any of the tag options are set. Otherwise SILC_ASN1_UNIVERSAL
is implied. Only one of these can bet set at once. */
SILC_ASN1_UNIVERSAL = 0x0001, /* Universal class (default) */
SILC_ASN1_APP = 0x0002, /* Application specific class */
SILC_ASN1_CONTEXT = 0x0003, /* Context specific class */
SILC_ASN1_PRIVATE = 0x0004, /* Private class */
/* Tag options (bitmask) */
SILC_ASN1_IMPLICIT = 0x0010, /* Tag is implicit (default) */
SILC_ASN1_EXPLICIT = 0x0020, /* Tag is explicit */
SILC_ASN1_DEFINITE = 0x0040, /* Length is definite (default) */
SILC_ASN1_INDEFINITE = 0x0080, /* Length is indefinite */
/* Decoding options (bitmask) */
SILC_ASN1_OPTIONAL = 0x0100, /* Zero or more may be found. The
argument must be pointer to the
type pointer so that NULL can be
returned if type is not found. */
/* ASN.1 encoder/decoder options (bitmask). These can be given
only with SILC_ASN1_OPTS macro at the start of encoding/decoding. */
SILC_ASN1_ALLOC = 0x0400, /* Dynamically allocate results */
SILC_ASN1_ACCUMUL = 0x0800, /* Accumulate memory for results,
next call to silc_asn1_decode
will not cancel old results. */
} SilcAsn1Options;
|