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
|
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.
|
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}
|
\begin{verbatim}
|
||||||
int der_decode_sequence_flexi(const unsigned char *in,
|
int der_decode_sequence_flexi(const unsigned char *in,
|
||||||
unsigned long *inlen,
|
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.
|
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
|
\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}
|
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.
|
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}
|
\subsubsection{Sample Decoding}
|
||||||
Suppose we decode the following structure:
|
Suppose we decode the following structure:
|
||||||
\begin{small}
|
\begin{small}
|
||||||
|
Loading…
Reference in New Issue
Block a user