File: sc_asn1_decode.xml

package info (click to toggle)
opensc 0.11.1-2etch2
  • links: PTS
  • area: main
  • in suites: etch
  • size: 7,284 kB
  • ctags: 7,257
  • sloc: ansic: 69,499; sh: 9,480; xml: 4,191; makefile: 346; lex: 92; perl: 25
file content (62 lines) | stat: -rw-r--r-- 2,373 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?xml version="1.0" encoding="UTF-8"?>
<refentry id="scasn1decode">
	<refentryinfo><title>OpenSC API Reference</title></refentryinfo>
	<refmeta>
		<refentrytitle>sc_asn1_decode</refentrytitle>
		<manvolnum>3</manvolnum>
		<refmiscinfo>opensc</refmiscinfo>
	</refmeta>

	<refnamediv>
		<refname>sc_asn1_decode</refname>
		<refpurpose>Extract entries from an ASN.1 stream</refpurpose>
	</refnamediv>

	<refsect1>
		<title>Synopsis</title>
		<para>
		<programlisting>
#include &lt;opensc.h&gt;

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);
		</programlisting>
		</para>
	</refsect1>

	<refsect1>
		<title>Description</title>
		<para>
			This function extracts information from the ASN.1 stream pointed to by <emphasis>inbuf</emphasis>
			(which is <emphasis>len</emphasis> bytes in size) and stores it into the array of
			<link linkend="scasn1entry"><structname>struct sc_asn_1</structname></link> entries pointed to by
			<emphasis>asn1</emphasis>. 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
			<structfield>name</structfield> field must be set to NULL.
		</para>

		<para>
			The structure of the expected data must be encoded in the entries in <emphasis>asn1</emphasis>
			before calling this function; specifically the <structfield>name</structfield>,
			<structfield>type</structfield>, <structfield>tag</structfield> and
			<structfield>flags</structfield> fields must be filled in.
		</para>

		<para>
			The function will then scan the stream and fill in the remaining fields.
			<emphasis>newbuf</emphasis> will point to the byte immediately following the extracted record, and
			<emphasis>len_left</emphasis> will contain the number of bytes left in the buffer. Thus, the
			<emphasis>newbuf</emphasis> and <emphasis>len_left</emphasis> fields may be passed in to
			sc_asn1_decode() again, as the <emphasis>inbuf</emphasis> and <emphasis>len</emphasis> parameters,
			until <emphasis>len</emphasis> reaches 0.
		</para>
	</refsect1>

	<refsect1>
		<title>Return value</title>
		<para>
			Returns 0 if successful, or a negative value in case of error.
		</para>
	</refsect1>
</refentry>