Function SILC_ASN1_ANY_PRIMITIVE
SYNOPSIS
Encoding:
SILC_ASN1_ANY_PRIMITIVE(tag, buffer)
SILC_ASN1_ANY_PRIMITIVE_T(opts, tag, buffer)
Decoding:
SILC_ASN1_ANY_PRIMITIVE(tag, &buffer)
SILC_ASN1_ANY_PRIMITIVE_T(opts, tag, buffer)
DESCRIPTION
Special macro used to encode pre-encoded primitive data blob. The data
can be any primitive type that is already encoded in correct format.
The caller is responsible of making sure the data is formatted
correctly. When decoding this returns the raw data blob and the caller
must know of what type and format it is. The buffer type is SilcBuffer.
This macro can be used in cases when the data to be encoded is already
in encoded format, and it only needs to be added to ASN.1 tree. The
SILC_ASN1_ANY cannot be used with primitives when tagging implicitly,
in these cases this macro can be used.
The `opts' is SilcAsn1Options. The `tag' is a tag number.
EXAMPLE
// Get MP integer in encoded format
mpbuf = mp_get_octet_string(mp);
// Encode the MP integer data to the tree
silc_asn1_encode(asn1, tree,
SILC_ASN1_ANY_PRIMITIVE(SILC_ASN1_TAG_INTEGER, mpbuf),
SILC_ASN1_END);
// Decode the MP integer data from the tree
silc_asn1_decode(asn1, tree,
SILC_ASN1_ANY_PRIMITIVE(SILC_ASN1_TAG_INTEGER, &buffer),
SILC_ASN1_END);
|