OpenSC API Referencesc_asn1_decode3openscsc_asn1_decodeExtract entries from an ASN.1 streamSynopsis
#include <opensc.h>
int sc_asn1_decode(struct sc_context *ctx, struct sc_asn1_entry *asn1,
const unsigned char *inbuf, size_t len,
const unsigned char **newbuf, size_t *len_left);
Description
This function extracts information from the ASN.1 stream pointed to by inbuf
(which is len bytes in size) and stores it into the array of
struct sc_asn_1 entries pointed to by
asn1. The array must be big enough to contain all the entries that will be
found, or an error will be flagged. The last entry in the array must be a NULL entry, i.e. the
name field must be set to NULL.
The structure of the expected data must be encoded in the entries in asn1
before calling this function; specifically the name,
type, tag and
flags fields must be filled in.
The function will then scan the stream and fill in the remaining fields.
newbuf will point to the byte immediately following the extracted record, and
len_left will contain the number of bytes left in the buffer. Thus, the
newbuf and len_left fields may be passed in to
sc_asn1_decode() again, as the inbuf and len parameters,
until len reaches 0.
Return value
Returns 0 if successful, or a negative value in case of error.