add documentation of ASN.1 context-specific decoding
This commit is contained in:
parent
3233e51a23
commit
627aef962c
23
crypt.tex
23
crypt.tex
@ -5058,7 +5058,9 @@ encoded in a SEQUENCE are stored as a child element.
|
||||
When a SEQUENCE or SET has been encountered a SEQUENCE (or SET resp.) item will be added as a sibling (e.g. list.type == LTC\_ASN1\_SEQUENCE) and the child
|
||||
pointer points to a new list of items contained within the object.
|
||||
|
||||
\index{der\_decode\_sequence\_flexi()}\index{LTC\_ASN1\_CONSTRUCTED}
|
||||
\index{der\_decode\_sequence\_flexi()}
|
||||
\index{LTC\_ASN1\_CONSTRUCTED}
|
||||
\index{LTC\_ASN1\_CONTEXT\_SPECIFIC}
|
||||
\begin{verbatim}
|
||||
int der_decode_sequence_flexi(const unsigned char *in,
|
||||
unsigned long *inlen,
|
||||
@ -5073,16 +5075,23 @@ normally. The decoded list \textit{out} will point to the very first element of
|
||||
|
||||
An invalid decoding will terminate the process, and free the allocated memory automatically.
|
||||
|
||||
As of v1.18 the flexi decoder will also decode arbitrary constructed types
|
||||
other than SEQUENCE and SET. The \textit{type} field will be set to
|
||||
\textbf{LTC\_ASN1\_CONSTRUCTED} and the plain identifier that was indicated in the ASN.1
|
||||
encoding is stored in the \textit{used} field. Further decoding is done in the
|
||||
same way as if it were a SEQUENCE or SET.
|
||||
|
||||
Also as of v1.18 the flexi decoder is capable to handle
|
||||
\textit{context-specific} encodings. The \textit{type} field will be set to
|
||||
\textbf{LTC\_ASN1\_CONTEXT\_SPECIFIC} and the plain identifier that was indicated
|
||||
in the ASN.1 encoding is stored in the \textit{used} field. Encapsulated data
|
||||
in the \textit{context-specific} encoding is copied to newly allocated memory
|
||||
and is accessible through the \textit{data} field.
|
||||
|
||||
\textbf{Note:} the list decoded by this function is \textbf{NOT} in the correct form for der\_encode\_sequence() to use directly. You will first
|
||||
have to convert the list by first storing all of the siblings in an array then storing all the children as sub-lists of a sequence using the \textit{.data}
|
||||
pointer. Currently no function in LibTomCrypt provides this ability.
|
||||
|
||||
\textbf{Note 2:} the flexi decoder will also decode arbitrary constructed types
|
||||
other than SEQUENCE and SET. The \textit{type} field will be set to
|
||||
\textbf{LTC\_ASN1\_CONSTRUCTED} and the plain type that was indicated in the ASN.1
|
||||
encoding is stored in the \textit{used} field. Further decoding is done in the
|
||||
same way as if it were a SEQUENCE or SET.
|
||||
|
||||
\subsubsection{Sample Decoding}
|
||||
Suppose we decode the following structure:
|
||||
\begin{small}
|
||||
|
Loading…
Reference in New Issue
Block a user