diff options
author | Simon Josefsson <simon@josefsson.org> | 2010-02-17 13:47:39 +0100 |
---|---|---|
committer | Simon Josefsson <simon@josefsson.org> | 2010-02-17 13:47:39 +0100 |
commit | a699a0bbeb3446b0e7e44dbb495afb9ce15dee45 (patch) | |
tree | 27399ae9bad366561023a8d9de825b565ce09dcd /lib/minitasn1 | |
parent | ea94726c142d4120b010c5491ee898dbc75c9256 (diff) | |
download | gnutls-a699a0bbeb3446b0e7e44dbb495afb9ce15dee45.tar.gz |
Upgrade to libtasn1 2.5 snapshot, for GTK-DOC comments.
Diffstat (limited to 'lib/minitasn1')
-rw-r--r-- | lib/minitasn1/coding.c | 51 | ||||
-rw-r--r-- | lib/minitasn1/decoding.c | 245 | ||||
-rw-r--r-- | lib/minitasn1/element.c | 383 | ||||
-rw-r--r-- | lib/minitasn1/errors.c | 28 | ||||
-rw-r--r-- | lib/minitasn1/libtasn1.h | 2 | ||||
-rw-r--r-- | lib/minitasn1/parser_aux.c | 2 | ||||
-rw-r--r-- | lib/minitasn1/structure.c | 205 |
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, |