+ * 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);
+ *
+ * // Decode optional value, with SILC_ASN1_OPTIONAL the type must be
+ * // a pointer so that NULL can be returned if the type is not present.
+ * SilcBool *val;
+ *
+ * silc_asn1_decode(asn1, src,
+ * SILC_ASN1_OPTS(SILC_ASN1_OPTIONAL),
+ * SILC_ASN1_BOOLEAN(&val),
+ * SILC_ASN1_END);
+ *
+ * // If val == NULL, the optional value was not present
+ * if (val == NULL)
+ * error;
+ *