summaryrefslogtreecommitdiff
path: root/lib/minitasn1
diff options
context:
space:
mode:
authorSimon Josefsson <simon@josefsson.org>2010-02-17 13:47:39 +0100
committerSimon Josefsson <simon@josefsson.org>2010-02-17 13:47:39 +0100
commita699a0bbeb3446b0e7e44dbb495afb9ce15dee45 (patch)
tree27399ae9bad366561023a8d9de825b565ce09dcd /lib/minitasn1
parentea94726c142d4120b010c5491ee898dbc75c9256 (diff)
downloadgnutls-a699a0bbeb3446b0e7e44dbb495afb9ce15dee45.tar.gz
Upgrade to libtasn1 2.5 snapshot, for GTK-DOC comments.
Diffstat (limited to 'lib/minitasn1')
-rw-r--r--lib/minitasn1/coding.c51
-rw-r--r--lib/minitasn1/decoding.c245
-rw-r--r--lib/minitasn1/element.c383
-rw-r--r--lib/minitasn1/errors.c28
-rw-r--r--lib/minitasn1/libtasn1.h2
-rw-r--r--lib/minitasn1/parser_aux.c2
-rw-r--r--lib/minitasn1/structure.c205
7 files changed, 453 insertions, 463 deletions
diff --git a/lib/minitasn1/coding.c b/lib/minitasn1/coding.c
index 11df3fc995..9a28b12947 100644
--- a/lib/minitasn1/coding.c
+++ b/lib/minitasn1/coding.c
@@ -843,32 +843,31 @@ _asn1_ordering_set_of (unsigned char *der, int der_len, ASN1_TYPE node)
}
/**
- * asn1_der_coding - Creates the DER encoding for the NAME structure
- * @element: pointer to an ASN1 element
- * @name: the name of the structure you want to encode (it must be
- * inside *POINTER).
- * @ider: vector that will contain the DER encoding. DER must be a
- * pointer to memory cells already allocated.
- * @len: number of bytes of *@ider: @ider[0]..@ider[len-1], Initialy
- * holds the sizeof of der vector.
- * @errorDescription : return the error description or an empty
- * string if success.
- *
- * Creates the DER encoding for the NAME structure (inside *POINTER
- * structure).
- *
- * Returns:
- *
- * ASN1_SUCCESS: DER encoding OK.
- *
- * ASN1_ELEMENT_NOT_FOUND: NAME is not a valid element.
- *
- * ASN1_VALUE_NOT_FOUND: There is an element without a value.
- *
- * ASN1_MEM_ERROR: @ider vector isn't big enough. Also in this case
- * LEN will contain the length needed.
- *
- **/
+ * asn1_der_coding:
+ * @element: pointer to an ASN1 element
+ * @name: the name of the structure you want to encode (it must be
+ * inside *POINTER).
+ * @ider: vector that will contain the DER encoding. DER must be a
+ * pointer to memory cells already allocated.
+ * @len: number of bytes of *@ider: @ider[0]..@ider[len-1], Initialy
+ * holds the sizeof of der vector.
+ * @errorDescription : return the error description or an empty
+ * string if success.
+ *
+ * Creates the DER encoding for the NAME structure (inside *POINTER
+ * structure).
+ *
+ * Returns:
+ *
+ * %ASN1_SUCCESS: DER encoding OK.
+ *
+ * %ASN1_ELEMENT_NOT_FOUND: NAME is not a valid element.
+ *
+ * %ASN1_VALUE_NOT_FOUND: There is an element without a value.
+ *
+ * %ASN1_MEM_ERROR: @ider vector isn't big enough. Also in this case
+ * LEN will contain the length needed.
+ **/
asn1_retCode
asn1_der_coding (ASN1_TYPE element, const char *name, void *ider, int *len,
char *ErrorDescription)
diff --git a/lib/minitasn1/decoding.c b/lib/minitasn1/decoding.c
index da64510f0d..6875baf2e3 100644
--- a/lib/minitasn1/decoding.c
+++ b/lib/minitasn1/decoding.c
@@ -112,7 +112,7 @@ asn1_get_length_der (const unsigned char *der, int der_len, int *len)
*
* Decode the class and TAG from DER code.
*
- * Return value: Returns ASN1_SUCCESS on success, or an error.
+ * Return value: Returns %ASN1_SUCCESS on success, or an error.
**/
int
asn1_get_tag_der (const unsigned char *der, int der_len,
@@ -203,7 +203,7 @@ asn1_get_length_ber (const unsigned char *ber, int ber_len, int *len)
*
* Extract an OCTET SEQUENCE from DER data.
*
- * Return value: Returns ASN1_SUCCESS on success, or an error.
+ * Return value: Returns %ASN1_SUCCESS on success, or an error.
**/
int
asn1_get_octet_der (const unsigned char *der, int der_len,
@@ -328,7 +328,7 @@ _asn1_get_objectid_der (const unsigned char *der, int der_len, int *ret_len,
*
* Extract a BIT SEQUENCE from DER data.
*
- * Return value: Return ASN1_SUCCESS on success, or an error.
+ * Return value: Return %ASN1_SUCCESS on success, or an error.
**/
int
asn1_get_bit_der (const unsigned char *der, int der_len,
@@ -798,29 +798,28 @@ _asn1_get_indefinite_length_string (const unsigned char *der, int *len)
/**
- * asn1_der_decoding - Fill the structure *ELEMENT with values of a DER encoding string.
- * @element: pointer to an ASN1 structure.
- * @ider: vector that contains the DER encoding.
- * @len: number of bytes of *@ider: @ider[0]..@ider[len-1].
- * @errorDescription: null-terminated string contains details when an
- * error occurred.
- *
- * Fill the structure *ELEMENT with values of a DER encoding
- * string. The structure must just be created with function
- * 'asn1_create_element'. If an error occurs during the decoding
- * procedure, the *ELEMENT is deleted and set equal to
- * %ASN1_TYPE_EMPTY.
- *
- * Returns:
- *
- * ASN1_SUCCESS: DER encoding OK.
- *
- * ASN1_ELEMENT_NOT_FOUND: ELEMENT is ASN1_TYPE_EMPTY.
- *
- * ASN1_TAG_ERROR,ASN1_DER_ERROR: The der encoding doesn't match
- * the structure NAME. *ELEMENT deleted.
- **/
-
+ * asn1_der_decoding:
+ * @element: pointer to an ASN1 structure.
+ * @ider: vector that contains the DER encoding.
+ * @len: number of bytes of *@ider: @ider[0]..@ider[len-1].
+ * @errorDescription: null-terminated string contains details when an
+ * error occurred.
+ *
+ * Fill the structure *ELEMENT with values of a DER encoding
+ * string. The structure must just be created with function
+ * 'asn1_create_element'. If an error occurs during the decoding
+ * procedure, the *ELEMENT is deleted and set equal to
+ * %ASN1_TYPE_EMPTY.
+ *
+ * Returns:
+ *
+ * %ASN1_SUCCESS: DER encoding OK.
+ *
+ * %ASN1_ELEMENT_NOT_FOUND: ELEMENT is ASN1_TYPE_EMPTY.
+ *
+ * %ASN1_TAG_ERROR,ASN1_DER_ERROR: The der encoding doesn't match
+ * the structure NAME. *ELEMENT deleted.
+ **/
asn1_retCode
asn1_der_decoding (ASN1_TYPE * element, const void *ider, int len,
char *errorDescription)
@@ -1355,32 +1354,31 @@ asn1_der_decoding (ASN1_TYPE * element, const void *ider, int len,
#define EXIT 4
/**
- * asn1_der_decoding_element - Fill the element named ELEMENTNAME of the structure STRUCTURE with values of a DER encoding string.
- * @structure: pointer to an ASN1 structure
- * @elementName: name of the element to fill
- * @ider: vector that contains the DER encoding of the whole structure.
- * @len: number of bytes of *der: der[0]..der[len-1]
- * @errorDescription: null-terminated string contains details when an
- * error occurred.
- *
- * Fill the element named ELEMENTNAME with values of a DER encoding
- * string. The structure must just be created with function
- * 'asn1_create_element'. The DER vector must contain the encoding
- * string of the whole STRUCTURE. If an error occurs during the
- * decoding procedure, the *STRUCTURE is deleted and set equal to
- * %ASN1_TYPE_EMPTY.
- *
- * Returns:
- *
- * ASN1_SUCCESS: DER encoding OK.
- *
- * ASN1_ELEMENT_NOT_FOUND: ELEMENT is ASN1_TYPE_EMPTY or
- * elementName == NULL.
- *
- * ASN1_TAG_ERROR,ASN1_DER_ERROR: The der encoding doesn't match
- * the structure STRUCTURE. *ELEMENT deleted.
- *
- **/
+ * asn1_der_decoding_element:
+ * @structure: pointer to an ASN1 structure
+ * @elementName: name of the element to fill
+ * @ider: vector that contains the DER encoding of the whole structure.
+ * @len: number of bytes of *der: der[0]..der[len-1]
+ * @errorDescription: null-terminated string contains details when an
+ * error occurred.
+ *
+ * Fill the element named ELEMENTNAME with values of a DER encoding
+ * string. The structure must just be created with function
+ * 'asn1_create_element'. The DER vector must contain the encoding
+ * string of the whole STRUCTURE. If an error occurs during the
+ * decoding procedure, the *STRUCTURE is deleted and set equal to
+ * %ASN1_TYPE_EMPTY.
+ *
+ * Returns:
+ *
+ * %ASN1_SUCCESS: DER encoding OK.
+ *
+ * %ASN1_ELEMENT_NOT_FOUND: ELEMENT is ASN1_TYPE_EMPTY or
+ * elementName == NULL.
+ *
+ * %ASN1_TAG_ERROR,ASN1_DER_ERROR: The der encoding doesn't match
+ * the structure STRUCTURE. *ELEMENT deleted.
+ **/
asn1_retCode
asn1_der_decoding_element (ASN1_TYPE * structure, const char *elementName,
const void *ider, int len, char *errorDescription)
@@ -2128,35 +2126,34 @@ asn1_der_decoding_element (ASN1_TYPE * structure, const char *elementName,
/**
- * asn1_der_decoding_startEnd - Find the start and end point of an element in a DER encoding string.
- * @element: pointer to an ASN1 element
- * @ider: vector that contains the DER encoding.
- * @len: number of bytes of *@ider: @ider[0]..@ider[len-1]
- * @name_element: an element of NAME structure.
- * @start: the position of the first byte of NAME_ELEMENT decoding
- * (@ider[*start])
- * @end: the position of the last byte of NAME_ELEMENT decoding
- * (@ider[*end])
- *
- * Find the start and end point of an element in a DER encoding
- * string. I mean that if you have a der encoding and you have
- * already used the function "asn1_der_decoding" to fill a structure,
- * it may happen that you want to find the piece of string concerning
- * an element of the structure.
- *
- * Example: the sequence "tbsCertificate" inside an X509 certificate.
- *
- * Returns:
- *
- * ASN1_SUCCESS: DER encoding OK.
- *
- * ASN1_ELEMENT_NOT_FOUND: ELEMENT is ASN1_TYPE EMPTY or
- * NAME_ELEMENT is not a valid element.
- *
- * ASN1_TAG_ERROR,ASN1_DER_ERROR: the der encoding doesn't match
- * the structure ELEMENT.
- *
- **/
+ * asn1_der_decoding_startEnd:
+ * @element: pointer to an ASN1 element
+ * @ider: vector that contains the DER encoding.
+ * @len: number of bytes of *@ider: @ider[0]..@ider[len-1]
+ * @name_element: an element of NAME structure.
+ * @start: the position of the first byte of NAME_ELEMENT decoding
+ * (@ider[*start])
+ * @end: the position of the last byte of NAME_ELEMENT decoding
+ * (@ider[*end])
+ *
+ * Find the start and end point of an element in a DER encoding
+ * string. I mean that if you have a der encoding and you have already
+ * used the function "asn1_der_decoding" to fill a structure, it may
+ * happen that you want to find the piece of string concerning an
+ * element of the structure.
+ *
+ * Example: the sequence "tbsCertificate" inside an X509 certificate.
+ *
+ * Returns:
+ *
+ * %ASN1_SUCCESS: DER encoding OK.
+ *
+ * %ASN1_ELEMENT_NOT_FOUND: ELEMENT is ASN1_TYPE EMPTY or
+ * NAME_ELEMENT is not a valid element.
+ *
+ * %ASN1_TAG_ERROR,ASN1_DER_ERROR: the der encoding doesn't match
+ * the structure ELEMENT.
+ **/
asn1_retCode
asn1_der_decoding_startEnd (ASN1_TYPE element, const void *ider, int len,
const char *name_element, int *start, int *end)
@@ -2480,27 +2477,25 @@ asn1_der_decoding_startEnd (ASN1_TYPE element, const void *ider, int len,
/**
- * asn1_expand_any_defined_by - Expand "ANY DEFINED BY" fields in structure.
- * @definitions: ASN1 definitions
- * @element: pointer to an ASN1 structure
- *
- * Expands every "ANY DEFINED BY" element of a structure created from
- * a DER decoding process (asn1_der_decoding function). The element ANY
- * must be defined by an OBJECT IDENTIFIER. The type used to expand
- * the element ANY is the first one following the definition of
- * the actual value of the OBJECT IDENTIFIER.
- *
- *
- * Returns:
- *
- * ASN1_SUCCESS: Substitution OK.
- *
- * ASN1_ERROR_TYPE_ANY: Some "ANY DEFINED BY" element couldn't be
- * expanded due to a problem in OBJECT_ID -> TYPE association.
- *
- * other errors: Result of der decoding process.
- **/
-
+ * asn1_expand_any_defined_by:
+ * @definitions: ASN1 definitions
+ * @element: pointer to an ASN1 structure
+ *
+ * Expands every "ANY DEFINED BY" element of a structure created from
+ * a DER decoding process (asn1_der_decoding function). The element
+ * ANY must be defined by an OBJECT IDENTIFIER. The type used to
+ * expand the element ANY is the first one following the definition of
+ * the actual value of the OBJECT IDENTIFIER.
+ *
+ * Returns:
+ *
+ * %ASN1_SUCCESS: Substitution OK.
+ *
+ * %ASN1_ERROR_TYPE_ANY: Some "ANY DEFINED BY" element couldn't be
+ * expanded due to a problem in OBJECT_ID -> TYPE association.
+ *
+ * other errors: Result of der decoding process.
+ **/
asn1_retCode
asn1_expand_any_defined_by (ASN1_TYPE definitions, ASN1_TYPE * element)
{
@@ -2716,29 +2711,29 @@ asn1_expand_any_defined_by (ASN1_TYPE definitions, ASN1_TYPE * element)
/**
- * asn1_expand_octet_string - Expand "OCTET STRING" fields in structure.
- * @definitions: ASN1 definitions
- * @element: pointer to an ASN1 structure
- * @octetName: name of the OCTECT STRING field to expand.
- * @objectName: name of the OBJECT IDENTIFIER field to use to define
- * the type for expansion.
- *
- * Expands an "OCTET STRING" element of a structure created from a
- * DER decoding process (asn1_der_decoding function). The type used
- * for expansion is the first one following the definition of the
- * actual value of the OBJECT IDENTIFIER indicated by OBJECTNAME.
- *
- * Returns:
- *
- * ASN1_SUCCESS: Substitution OK.
- *
- * ASN1_ELEMENT_NOT_FOUND: OBJECTNAME or OCTETNAME are not correct.
- *
- * ASN1_VALUE_NOT_VALID: Wasn't possible to find the type to use
- * for expansion.
- *
- * other errors: result of der decoding process.
- **/
+ * asn1_expand_octet_string:
+ * @definitions: ASN1 definitions
+ * @element: pointer to an ASN1 structure
+ * @octetName: name of the OCTECT STRING field to expand.
+ * @objectName: name of the OBJECT IDENTIFIER field to use to define
+ * the type for expansion.
+ *
+ * Expands an "OCTET STRING" element of a structure created from a DER
+ * decoding process (asn1_der_decoding function). The type used for
+ * expansion is the first one following the definition of the actual
+ * value of the OBJECT IDENTIFIER indicated by OBJECTNAME.
+ *
+ * Returns:
+ *
+ * %ASN1_SUCCESS: Substitution OK.
+ *
+ * %ASN1_ELEMENT_NOT_FOUND: @objectName or @octetName are not correct.
+ *
+ * %ASN1_VALUE_NOT_VALID: Wasn't possible to find the type to use
+ * for expansion.
+ *
+ * other errors: result of der decoding process.
+ **/
asn1_retCode
asn1_expand_octet_string (ASN1_TYPE definitions, ASN1_TYPE * element,
const char *octetName, const char *objectName)
diff --git a/lib/minitasn1/element.c b/lib/minitasn1/element.c
index 09a6a9fb1d..51ade14f3b 100644
--- a/lib/minitasn1/element.c
+++ b/lib/minitasn1/element.c
@@ -163,116 +163,115 @@ _asn1_append_sequence_set (ASN1_TYPE node)
/**
- * asn1_write_value - Set the value of one element inside a structure.
- * @node_root: pointer to a structure
- * @name: the name of the element inside the structure that you want to set.
- * @ivalue: vector used to specify the value to set. If len is >0,
- * VALUE must be a two's complement form integer. if len=0 *VALUE
- * must be a null terminated string with an integer value.
- * @len: number of bytes of *value to use to set the value:
- * value[0]..value[len-1] or 0 if value is a null terminated string
- *
- * Set the value of one element inside a structure.
- *
- * If an element is OPTIONAL and you want to delete it, you must use
- * the value=NULL and len=0. Using "pkix.asn":
- *
- * result=asn1_write_value(cert, "tbsCertificate.issuerUniqueID",
- * NULL, 0);
- *
- * Description for each type:
- *
- * INTEGER: VALUE must contain a two's complement form integer.
- *
- * value[0]=0xFF , len=1 -> integer=-1.
- * value[0]=0xFF value[1]=0xFF , len=2 -> integer=-1.
- * value[0]=0x01 , len=1 -> integer= 1.
- * value[0]=0x00 value[1]=0x01 , len=2 -> integer= 1.
- * value="123" , len=0 -> integer= 123.
- *
- * ENUMERATED: As INTEGER (but only with not negative numbers).
- *
- * BOOLEAN: VALUE must be the null terminated string "TRUE" or
- * "FALSE" and LEN != 0.
- *
- * value="TRUE" , len=1 -> boolean=TRUE.
- * value="FALSE" , len=1 -> boolean=FALSE.
- *
- * OBJECT IDENTIFIER: VALUE must be a null terminated string with
- * each number separated by a dot (e.g. "1.2.3.543.1"). LEN != 0.
- *
- * value="1 2 840 10040 4 3" , len=1 -> OID=dsa-with-sha.
- *
- * UTCTime: VALUE must be a null terminated string in one of these
- * formats: "YYMMDDhhmmssZ", "YYMMDDhhmmssZ",
- * "YYMMDDhhmmss+hh'mm'", "YYMMDDhhmmss-hh'mm'",
- * "YYMMDDhhmm+hh'mm'", or "YYMMDDhhmm-hh'mm'". LEN != 0.
- *
- * value="9801011200Z" , len=1 -> time=Jannuary 1st, 1998
- * at 12h 00m Greenwich Mean Time
- *
- * GeneralizedTime: VALUE must be in one of this format:
- * "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.sZ",
- * "YYYYMMDDhhmmss.s+hh'mm'", "YYYYMMDDhhmmss.s-hh'mm'",
- * "YYYYMMDDhhmm+hh'mm'", or "YYYYMMDDhhmm-hh'mm'" where ss.s
- * indicates the seconds with any precision like "10.1" or "01.02".
- * LEN != 0
- *
- * value="2001010112001.12-0700" , len=1 -> time=Jannuary
- * 1st, 2001 at 12h 00m 01.12s Pacific Daylight Time
- *
- * OCTET STRING: VALUE contains the octet string and LEN is the
- * number of octets.
- *
- * value="$\backslash$x01$\backslash$x02$\backslash$x03" ,
- * len=3 -> three bytes octet string
- *
- * GeneralString: VALUE contains the generalstring and LEN is the
- * number of octets.
- *
- * value="$\backslash$x01$\backslash$x02$\backslash$x03" ,
- * len=3 -> three bytes generalstring
- *
- * BIT STRING: VALUE contains the bit string organized by bytes and
- * LEN is the number of bits.
- *
- * value="$\backslash$xCF" , len=6 -> bit string="110011" (six
- * bits)
- *
- * CHOICE: if NAME indicates a choice type, VALUE must specify one of
- * the alternatives with a null terminated string. LEN != 0. Using
- * "pkix.asn"\:
- *
- * result=asn1_write_value(cert,
- * "certificate1.tbsCertificate.subject", "rdnSequence",
- * 1);
- *
- * ANY: VALUE indicates the der encoding of a structure. LEN != 0.
- *
- * SEQUENCE OF: VALUE must be the null terminated string "NEW" and
- * LEN != 0. With this instruction another element is appended in
- * the sequence. The name of this element will be "?1" if it's the
- * first one, "?2" for the second and so on.
- *
- * Using "pkix.asn"\:
- *
- * result=asn1_write_value(cert,
- * "certificate1.tbsCertificate.subject.rdnSequence", "NEW", 1);
- *
- * SET OF: the same as SEQUENCE OF. Using "pkix.asn":
- *
- * result=asn1_write_value(cert,
- * "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 1);
- *
- * Returns:
- *
- * ASN1_SUCCESS: Set value OK.
- *
- * ASN1_ELEMENT_NOT_FOUND: NAME is not a valid element.
- *
- * ASN1_VALUE_NOT_VALID: VALUE has a wrong format.
- *
- **/
+ * asn1_write_value:
+ * @node_root: pointer to a structure
+ * @name: the name of the element inside the structure that you want to set.
+ * @ivalue: vector used to specify the value to set. If len is >0,
+ * VALUE must be a two's complement form integer. if len=0 *VALUE
+ * must be a null terminated string with an integer value.
+ * @len: number of bytes of *value to use to set the value:
+ * value[0]..value[len-1] or 0 if value is a null terminated string
+ *
+ * Set the value of one element inside a structure.
+ *
+ * If an element is OPTIONAL and you want to delete it, you must use
+ * the value=NULL and len=0. Using "pkix.asn":
+ *
+ * result=asn1_write_value(cert, "tbsCertificate.issuerUniqueID",
+ * NULL, 0);
+ *
+ * Description for each type:
+ *
+ * INTEGER: VALUE must contain a two's complement form integer.
+ *
+ * value[0]=0xFF , len=1 -> integer=-1.
+ * value[0]=0xFF value[1]=0xFF , len=2 -> integer=-1.
+ * value[0]=0x01 , len=1 -> integer= 1.
+ * value[0]=0x00 value[1]=0x01 , len=2 -> integer= 1.
+ * value="123" , len=0 -> integer= 123.
+ *
+ * ENUMERATED: As INTEGER (but only with not negative numbers).
+ *
+ * BOOLEAN: VALUE must be the null terminated string "TRUE" or
+ * "FALSE" and LEN != 0.
+ *
+ * value="TRUE" , len=1 -> boolean=TRUE.
+ * value="FALSE" , len=1 -> boolean=FALSE.
+ *
+ * OBJECT IDENTIFIER: VALUE must be a null terminated string with
+ * each number separated by a dot (e.g. "1.2.3.543.1"). LEN != 0.
+ *
+ * value="1 2 840 10040 4 3" , len=1 -> OID=dsa-with-sha.
+ *
+ * UTCTime: VALUE must be a null terminated string in one of these
+ * formats: "YYMMDDhhmmssZ", "YYMMDDhhmmssZ",
+ * "YYMMDDhhmmss+hh'mm'", "YYMMDDhhmmss-hh'mm'",
+ * "YYMMDDhhmm+hh'mm'", or "YYMMDDhhmm-hh'mm'". LEN != 0.
+ *
+ * value="9801011200Z" , len=1 -> time=Jannuary 1st, 1998
+ * at 12h 00m Greenwich Mean Time
+ *
+ * GeneralizedTime: VALUE must be in one of this format:
+ * "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.sZ",
+ * "YYYYMMDDhhmmss.s+hh'mm'", "YYYYMMDDhhmmss.s-hh'mm'",
+ * "YYYYMMDDhhmm+hh'mm'", or "YYYYMMDDhhmm-hh'mm'" where ss.s
+ * indicates the seconds with any precision like "10.1" or "01.02".
+ * LEN != 0
+ *
+ * value="2001010112001.12-0700" , len=1 -> time=Jannuary
+ * 1st, 2001 at 12h 00m 01.12s Pacific Daylight Time
+ *
+ * OCTET STRING: VALUE contains the octet string and LEN is the
+ * number of octets.
+ *
+ * value="$\backslash$x01$\backslash$x02$\backslash$x03" ,
+ * len=3 -> three bytes octet string
+ *
+ * GeneralString: VALUE contains the generalstring and LEN is the
+ * number of octets.
+ *
+ * value="$\backslash$x01$\backslash$x02$\backslash$x03" ,
+ * len=3 -> three bytes generalstring
+ *
+ * BIT STRING: VALUE contains the bit string organized by bytes and
+ * LEN is the number of bits.
+ *
+ * value="$\backslash$xCF" , len=6 -> bit string="110011" (six
+ * bits)
+ *
+ * CHOICE: if NAME indicates a choice type, VALUE must specify one of
+ * the alternatives with a null terminated string. LEN != 0. Using
+ * "pkix.asn"\:
+ *
+ * result=asn1_write_value(cert,
+ * "certificate1.tbsCertificate.subject", "rdnSequence",
+ * 1);
+ *
+ * ANY: VALUE indicates the der encoding of a structure. LEN != 0.
+ *
+ * SEQUENCE OF: VALUE must be the null terminated string "NEW" and
+ * LEN != 0. With this instruction another element is appended in
+ * the sequence. The name of this element will be "?1" if it's the
+ * first one, "?2" for the second and so on.
+ *
+ * Using "pkix.asn"\:
+ *
+ * result=asn1_write_value(cert,
+ * "certificate1.tbsCertificate.subject.rdnSequence", "NEW", 1);
+ *
+ * SET OF: the same as SEQUENCE OF. Using "pkix.asn":
+ *
+ * result=asn1_write_value(cert,
+ * "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 1);
+ *
+ * Returns:
+ *
+ * %ASN1_SUCCESS: Set value OK.
+ *
+ * %ASN1_ELEMENT_NOT_FOUND: NAME is not a valid element.
+ *
+ * %ASN1_VALUE_NOT_VALID: VALUE has a wrong format.
+ **/
asn1_retCode
asn1_write_value (ASN1_TYPE node_root, const char *name,
const void *ivalue, int len)
@@ -645,71 +644,70 @@ asn1_write_value (ASN1_TYPE node_root, const char *name,
}
/**
- * asn1_read_value - Returns the value of one element inside a structure
- * @root: pointer to a structure.
- * @name: the name of the element inside a structure that you want to read.
- * @ivalue: vector that will contain the element's content, must be a
- * pointer to memory cells already allocated.
- * @len: number of bytes of *value: value[0]..value[len-1]. Initialy
- * holds the sizeof value.
- *
- * Returns the value of one element inside a structure.
- *
- * If an element is OPTIONAL and the function "read_value" returns
- * %ASN1_ELEMENT_NOT_FOUND, it means that this element wasn't present
- * in the der encoding that created the structure. The first element
- * of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and
- * so on.
- *
- * INTEGER: VALUE will contain a two's complement form integer.
- *
- * integer=-1 -> value[0]=0xFF , len=1.
- * integer=1 -> value[0]=0x01 , len=1.
- *
- * ENUMERATED: As INTEGER (but only with not negative numbers).
- *
- * BOOLEAN: VALUE will be the null terminated string "TRUE" or
- * "FALSE" and LEN=5 or LEN=6.
- *
- * OBJECT IDENTIFIER: VALUE will be a null terminated string with
- * each number separated by a dot (i.e. "1.2.3.543.1").
- *
- * LEN = strlen(VALUE)+1
- *
- * UTCTime: VALUE will be a null terminated string in one of these
- * formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'".
- * LEN=strlen(VALUE)+1.
- *
- * GeneralizedTime: VALUE will be a null terminated string in the
- * same format used to set the value.
- *
- * OCTET STRING: VALUE will contain the octet string and LEN will be
- * the number of octets.
- *
- * GeneralString: VALUE will contain the generalstring and LEN will
- * be the number of octets.
- *
- * BIT STRING: VALUE will contain the bit string organized by bytes
- * and LEN will be the number of bits.
- *
- * CHOICE: If NAME indicates a choice type, VALUE will specify the
- * alternative selected.
- *
- * ANY: If NAME indicates an any type, VALUE will indicate the DER
- * encoding of the structure actually used.
- *
- * Returns:
- *
- * ASN1_SUCCESS: Set value OK.
- *
- * ASN1_ELEMENT_NOT_FOUND: NAME is not a valid element.
- *
- * ASN1_VALUE_NOT_FOUND: There isn't any value for the element selected.
- *
- * ASN1_MEM_ERROR: The value vector isn't big enough to store the result.
- * In this case LEN will contain the number of bytes needed.
- *
- **/
+ * asn1_read_value:
+ * @root: pointer to a structure.
+ * @name: the name of the element inside a structure that you want to read.
+ * @ivalue: vector that will contain the element's content, must be a
+ * pointer to memory cells already allocated.
+ * @len: number of bytes of *value: value[0]..value[len-1]. Initialy
+ * holds the sizeof value.
+ *
+ * Returns the value of one element inside a structure.
+ *
+ * If an element is OPTIONAL and the function "read_value" returns
+ * %ASN1_ELEMENT_NOT_FOUND, it means that this element wasn't present
+ * in the der encoding that created the structure. The first element
+ * of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and
+ * so on.
+ *
+ * INTEGER: VALUE will contain a two's complement form integer.
+ *
+ * integer=-1 -> value[0]=0xFF , len=1.
+ * integer=1 -> value[0]=0x01 , len=1.
+ *
+ * ENUMERATED: As INTEGER (but only with not negative numbers).
+ *
+ * BOOLEAN: VALUE will be the null terminated string "TRUE" or
+ * "FALSE" and LEN=5 or LEN=6.
+ *
+ * OBJECT IDENTIFIER: VALUE will be a null terminated string with
+ * each number separated by a dot (i.e. "1.2.3.543.1").
+ *
+ * LEN = strlen(VALUE)+1
+ *
+ * UTCTime: VALUE will be a null terminated string in one of these
+ * formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'".
+ * LEN=strlen(VALUE)+1.
+ *
+ * GeneralizedTime: VALUE will be a null terminated string in the
+ * same format used to set the value.
+ *
+ * OCTET STRING: VALUE will contain the octet string and LEN will be
+ * the number of octets.
+ *
+ * GeneralString: VALUE will contain the generalstring and LEN will
+ * be the number of octets.
+ *
+ * BIT STRING: VALUE will contain the bit string organized by bytes
+ * and LEN will be the number of bits.
+ *
+ * CHOICE: If NAME indicates a choice type, VALUE will specify the
+ * alternative selected.
+ *
+ * ANY: If NAME indicates an any type, VALUE will indicate the DER
+ * encoding of the structure actually used.
+ *
+ * Returns:
+ *
+ * %ASN1_SUCCESS: Set value OK.
+ *
+ * %ASN1_ELEMENT_NOT_FOUND: NAME is not a valid element.
+ *
+ * %ASN1_VALUE_NOT_FOUND: There isn't any value for the element selected.
+ *
+ * %ASN1_MEM_ERROR: The value vector isn't big enough to store the result.
+ * In this case LEN will contain the number of bytes needed.
+ **/
asn1_retCode
asn1_read_value (ASN1_TYPE root, const char *name, void *ivalue, int *len)
{
@@ -874,24 +872,23 @@ asn1_read_value (ASN1_TYPE root, const char *name, void *ivalue, int *len)
/**
- * asn1_read_tag - Returns the TAG of one element inside a structure
- * @root: pointer to a structure
- * @name: the name of the element inside a structure.
- * @tagValue: variable that will contain the TAG value.
- * @classValue: variable that will specify the TAG type.
- *
- * Returns the TAG and the CLASS of one element inside a structure.
- * CLASS can have one of these constants: %ASN1_CLASS_APPLICATION,
- * %ASN1_CLASS_UNIVERSAL, %ASN1_CLASS_PRIVATE or
- * %ASN1_CLASS_CONTEXT_SPECIFIC.
- *
- * Returns:
- *
- * ASN1_SUCCESS: Set value OK.
- *
- * ASN1_ELEMENT_NOT_FOUND: NAME is not a valid element.
- *
- **/
+ * asn1_read_tag:
+ * @root: pointer to a structure
+ * @name: the name of the element inside a structure.
+ * @tagValue: variable that will contain the TAG value.
+ * @classValue: variable that will specify the TAG type.
+ *
+ * Returns the TAG and the CLASS of one element inside a structure.
+ * CLASS can have one of these constants: %ASN1_CLASS_APPLICATION,
+ * %ASN1_CLASS_UNIVERSAL, %ASN1_CLASS_PRIVATE or
+ * %ASN1_CLASS_CONTEXT_SPECIFIC.
+ *
+ * Returns:
+ *
+ * %ASN1_SUCCESS: Set value OK.
+ *
+ * %ASN1_ELEMENT_NOT_FOUND: NAME is not a valid element.
+ **/
asn1_retCode
asn1_read_tag (ASN1_TYPE root, const char *name, int *tagValue,
int *classValue)
diff --git a/lib/minitasn1/errors.c b/lib/minitasn1/errors.c
index 56d5f08dd7..052c64ff3b 100644
--- a/lib/minitasn1/errors.c
+++ b/lib/minitasn1/errors.c
@@ -57,11 +57,12 @@ static const libtasn1_error_entry error_algorithms[] = {
};
/**
- * asn1_perror - prints a string to stderr with a description of an error
+ * asn1_perror:
* @error: is an error returned by a libtasn1 function.
*
- * This function is like perror(). The only difference is that it
- * accepts an error returned by a libtasn1 function.
+ * Prints a string to stderr with a description of an error. This
+ * function is like perror(). The only difference is that it accepts
+ * an error returned by a libtasn1 function.
*
* This function replaces libtasn1_perror() in older libtasn1.
*
@@ -75,11 +76,12 @@ asn1_perror (asn1_retCode error)
}
/**
- * asn1_strerror - Returns a string with a description of an error
+ * asn1_strerror:
* @error: is an error returned by a libtasn1 function.
*
- * This function is similar to strerror. The only difference is that
- * it accepts an error (number) returned by a libtasn1 function.
+ * Returns a string with a description of an error. This function is
+ * similar to strerror. The only difference is that it accepts an
+ * error (number) returned by a libtasn1 function.
*
* This function replaces libtasn1_strerror() in older libtasn1.
*
@@ -105,11 +107,12 @@ asn1_strerror (asn1_retCode error)
/* Compatibility mappings to preserve ABI. */
/**
- * libtasn1_perror - prints a string to stderr with a description of an error
+ * libtasn1_perror:
* @error: is an error returned by a libtasn1 function.
*
- * This function is like perror(). The only difference is that it
- * accepts an error returned by a libtasn1 function.
+ * Prints a string to stderr with a description of an error. This
+ * function is like perror(). The only difference is that it accepts
+ * an error returned by a libtasn1 function.
*
* Deprecated: Use asn1_perror() instead.
**/
@@ -120,11 +123,12 @@ libtasn1_perror (asn1_retCode error)
}
/**
- * libtasn1_strerror - Returns a string with a description of an error
+ * libtasn1_strerror:
* @error: is an error returned by a libtasn1 function.
*
- * This function is similar to strerror. The only difference is that
- * it accepts an error (number) returned by a libtasn1 function.
+ * Returns a string with a description of an error. This function is
+ * similar to strerror. The only difference is that it accepts an
+ * error (number) returned by a libtasn1 function.
*
* Returns: Pointer to static zero-terminated string describing error
* code.
diff --git a/lib/minitasn1/libtasn1.h b/lib/minitasn1/libtasn1.h
index ba80671159..fea5cea532 100644
--- a/lib/minitasn1/libtasn1.h
+++ b/lib/minitasn1/libtasn1.h
@@ -45,7 +45,7 @@ extern "C"
{
#endif
-#define ASN1_VERSION "2.4"
+#define ASN1_VERSION "2.5"
typedef int asn1_retCode; /* type returned by libtasn1 functions */
diff --git a/lib/minitasn1/parser_aux.c b/lib/minitasn1/parser_aux.c
index 5ee2dee73c..b740a1e997 100644
--- a/lib/minitasn1/parser_aux.c
+++ b/lib/minitasn1/parser_aux.c
@@ -1139,7 +1139,7 @@ parse_version_string (const char *s, int *major, int *minor, int *micro)
}
/**
- * asn1_check_version - check for library version
+ * asn1_check_version:
* @req_version: Required version number, or NULL.
*
* Check that the version of the library is at minimum the
diff --git a/lib/minitasn1/structure.c b/lib/minitasn1/structure.c
index edaafe6603..b1c5b30c96 100644
--- a/lib/minitasn1/structure.c
+++ b/lib/minitasn1/structure.c
@@ -159,26 +159,26 @@ _asn1_create_static_structure (ASN1_TYPE pointer, char *output_file_name,
/**
- * asn1_array2tree - Creates the structures needed to manage the ASN1 definitions.
- * @array: specify the array that contains ASN.1 declarations
- * @definitions: return the pointer to the structure created by
- * *ARRAY ASN.1 declarations
- * @errorDescription: return the error description.
- *
- * Creates the structures needed to manage the ASN.1 definitions.
- * @array is a vector created by asn1_parser2array().
- *
- * Returns:
- *
- * ASN1_SUCCESS: Structure created correctly.
- *
- * ASN1_ELEMENT_NOT_EMPTY: *@definitions not ASN1_TYPE_EMPTY.
- *
- * ASN1_IDENTIFIER_NOT_FOUND: In the file there is an identifier that
- * is not defined (see @errorDescription for more information).
- *
- * ASN1_ARRAY_ERROR: The array pointed by @array is wrong.
- **/
+ * asn1_array2tree:
+ * @array: specify the array that contains ASN.1 declarations
+ * @definitions: return the pointer to the structure created by
+ * *ARRAY ASN.1 declarations
+ * @errorDescription: return the error description.
+ *
+ * Creates the structures needed to manage the ASN.1 definitions.
+ * @array is a vector created by asn1_parser2array().
+ *
+ * Returns:
+ *
+ * %ASN1_SUCCESS: Structure created correctly.
+ *
+ * %ASN1_ELEMENT_NOT_EMPTY: *@definitions not ASN1_TYPE_EMPTY.
+ *
+ * %ASN1_IDENTIFIER_NOT_FOUND: In the file there is an identifier that
+ * is not defined (see @errorDescription for more information).
+ *
+ * %ASN1_ARRAY_ERROR: The array pointed by @array is wrong.
+ **/
asn1_retCode
asn1_array2tree (const ASN1_ARRAY_TYPE * array, ASN1_TYPE * definitions,
char *errorDescription)
@@ -278,19 +278,18 @@ asn1_array2tree (const ASN1_ARRAY_TYPE * array, ASN1_TYPE * definitions,
}
/**
- * asn1_delete_structure - Deletes the structure pointed by *ROOT.
- * @structure: pointer to the structure that you want to delete.
- *
- * Deletes the structure *@structure. At the end, *@structure is set
- * to ASN1_TYPE_EMPTY.
- *
- * Returns:
- *
- * ASN1_SUCCESS: Everything OK.
- *
- * ASN1_ELEMENT_NOT_FOUND: *@structure was ASN1_TYPE_EMPTY.
- *
- **/
+ * asn1_delete_structure:
+ * @structure: pointer to the structure that you want to delete.
+ *
+ * Deletes the structure *@structure. At the end, *@structure is set
+ * to ASN1_TYPE_EMPTY.
+ *
+ * Returns:
+ *
+ * %ASN1_SUCCESS: Everything OK.
+ *
+ * %ASN1_ELEMENT_NOT_FOUND: *@structure was ASN1_TYPE_EMPTY.
+ **/
asn1_retCode
asn1_delete_structure (ASN1_TYPE * structure)
{
@@ -345,20 +344,19 @@ asn1_delete_structure (ASN1_TYPE * structure)
/**
- * asn1_delete_element - Deletes the element of a structure.
- * @structure: pointer to the structure that contains the element you
- * want to delete.
- * @element_name: element's name you want to delete.
- *
- * Deletes the element named *@element_name inside *@structure.
- *
- * Returns:
- *
- * ASN1_SUCCESS: Everything OK.
- *
- * ASN1_ELEMENT_NOT_FOUND: The name element was not found.
- *
- **/
+ * asn1_delete_element:
+ * @structure: pointer to the structure that contains the element you
+ * want to delete.
+ * @element_name: element's name you want to delete.
+ *
+ * Deletes the element named *@element_name inside *@structure.
+ *
+ * Returns:
+ *
+ * %ASN1_SUCCESS: Everything OK.
+ *
+ * %ASN1_ELEMENT_NOT_FOUND: The name element was not found.
+ **/
asn1_retCode
asn1_delete_element (ASN1_TYPE structure, const char *element_name)
{
@@ -661,24 +659,23 @@ _asn1_expand_identifier (ASN1_TYPE * node, ASN1_TYPE root)
/**
- * asn1_create_element - Creates a structure of type SOURCE_NAME.
- * @definitions: pointer to the structure returned by "parser_asn1" function
- * @source_name: the name of the type of the new structure (must be
- * inside p_structure).
- * @element: pointer to the structure created.
- *
- * Creates a structure of type @source_name. Example using
- * "pkix.asn":
- *
- * rc = asn1_create_element(cert_def, "PKIX1.Certificate",
- * certptr);
- *
- * Returns:
- *
- * ASN1_SUCCESS: Creation OK.
- *
- * ASN1_ELEMENT_NOT_FOUND: SOURCE_NAME isn't known
- **/
+ * asn1_create_element:
+ * @definitions: pointer to the structure returned by "parser_asn1" function
+ * @source_name: the name of the type of the new structure (must be
+ * inside p_structure).
+ * @element: pointer to the structure created.
+ *
+ * Creates a structure of type @source_name. Example using
+ * "pkix.asn":
+ *
+ * rc = asn1_create_element(cert_def, "PKIX1.Certificate", certptr);
+ *
+ * Returns:
+ *
+ * %ASN1_SUCCESS: Creation OK.
+ *
+ * %ASN1_ELEMENT_NOT_FOUND: SOURCE_NAME isn't known
+ **/
asn1_retCode
asn1_create_element (ASN1_TYPE definitions, const char *source_name,
ASN1_TYPE * element)
@@ -703,17 +700,17 @@ asn1_create_element (ASN1_TYPE definitions, const char *source_name,
/**
- * asn1_print_structure - Prints on the standard output the structure's tree
- * @out: pointer to the output file (e.g. stdout).
- * @structure: pointer to the structure that you want to visit.
- * @name: an element of the structure
- * @mode: specify how much of the structure to print, can be
- * %ASN1_PRINT_NAME, %ASN1_PRINT_NAME_TYPE,
- * %ASN1_PRINT_NAME_TYPE_VALUE, or %ASN1_PRINT_ALL.
- *
- * Prints on the @out file descriptor the structure's tree starting
- * from the @name element inside the structure @structure.
- **/
+ * asn1_print_structure:
+ * @out: pointer to the output file (e.g. stdout).
+ * @structure: pointer to the structure that you want to visit.
+ * @name: an element of the structure
+ * @mode: specify how much of the structure to print, can be
+ * %ASN1_PRINT_NAME, %ASN1_PRINT_NAME_TYPE,
+ * %ASN1_PRINT_NAME_TYPE_VALUE, or %ASN1_PRINT_ALL.
+ *
+ * Prints on the @out file descriptor the structure's tree starting
+ * from the @name element inside the structure @structure.
+ **/
void
asn1_print_structure (FILE * out, ASN1_TYPE structure, const char *name,
int mode)
@@ -1067,23 +1064,22 @@ asn1_print_structure (FILE * out, ASN1_TYPE structure, const char *name,
/**
- * asn1_number_of_elements - Counts the number of elements of a structure.
- * @element: pointer to the root of an ASN1 structure.
- * @name: the name of a sub-structure of ROOT.
- * @num: pointer to an integer where the result will be stored
- *
- * Counts the number of elements of a sub-structure called NAME with
- * names equal to "?1","?2", ...
- *
- * Returns:
- *
- * ASN1_SUCCESS: Creation OK.
- *
- * ASN1_ELEMENT_NOT_FOUND: NAME isn't known.
- *
- * ASN1_GENERIC_ERROR: Pointer num equal to NULL.
- *
- **/
+ * asn1_number_of_elements:
+ * @element: pointer to the root of an ASN1 structure.
+ * @name: the name of a sub-structure of ROOT.
+ * @num: pointer to an integer where the result will be stored
+ *
+ * Counts the number of elements of a sub-structure called NAME with
+ * names equal to "?1","?2", ...
+ *
+ * Returns:
+ *
+ * %ASN1_SUCCESS: Creation OK.
+ *
+ * %ASN1_ELEMENT_NOT_FOUND: NAME isn't known.
+ *
+ * %ASN1_GENERIC_ERROR: Pointer num equal to NULL.
+ **/
asn1_retCode
asn1_number_of_elements (ASN1_TYPE element, const char *name, int *num)
{
@@ -1112,17 +1108,16 @@ asn1_number_of_elements (ASN1_TYPE element, const char *name, int *num)
/**
- * asn1_find_structure_from_oid - Locate structure defined by a specific OID.
- * @definitions: ASN1 definitions
- * @oidValue: value of the OID to search (e.g. "1.2.3.4").
- *
- * Search the structure that is defined just after an OID definition.
- *
- * Returns: NULL when OIDVALUE not found, otherwise the pointer to a
- * constant string that contains the element name defined just
- * after the OID.
- *
- **/
+ * asn1_find_structure_from_oid:
+ * @definitions: ASN1 definitions
+ * @oidValue: value of the OID to search (e.g. "1.2.3.4").
+ *
+ * Search the structure that is defined just after an OID definition.
+ *
+ * Returns: %NULL when @oidValue not found, otherwise the pointer to a
+ * constant string that contains the element name defined just after
+ * the OID.
+ **/
const char *
asn1_find_structure_from_oid (ASN1_TYPE definitions, const char *oidValue)
{
@@ -1176,7 +1171,7 @@ asn1_find_structure_from_oid (ASN1_TYPE definitions, const char *oidValue)
*
* Create a deep copy of a ASN1_TYPE variable.
*
- * Return value: Return ASN1_SUCCESS on success.
+ * Return value: Return %ASN1_SUCCESS on success.
**/
asn1_retCode
asn1_copy_node (ASN1_TYPE dst, const char *dst_name,