[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[SCM] GNU libtasn1 branch, master, updated. libtasn1_3_0-33-g8cd1f61
From: |
Nikos Mavrogiannopoulos |
Subject: |
[SCM] GNU libtasn1 branch, master, updated. libtasn1_3_0-33-g8cd1f61 |
Date: |
Sat, 24 Nov 2012 15:23:37 +0000 |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU libtasn1".
http://git.savannah.gnu.org/cgit/libtasn1.git/commit/?id=8cd1f611d962eb62db6b5beb5b395597ce463110
The branch, master has been updated
via 8cd1f611d962eb62db6b5beb5b395597ce463110 (commit)
via 37c47bd8102ec213ee8d53c2800232a9bb7bace2 (commit)
via e2e72dead5e31c38a161e7bd8b3cfb716869db40 (commit)
via 2ac0d04b5f8571866e729e9d816ea69780892634 (commit)
via bbfe113c2d7540c6883eb3d83d7052f49f7988fc (commit)
via 435b15341e5aed9fe0f936d87a88bca31678458d (commit)
from 57e61a0d130b4bae6331c2412f87c45fcd540af2 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 8cd1f611d962eb62db6b5beb5b395597ce463110
Author: Nikos Mavrogiannopoulos <address@hidden>
Date: Sat Nov 24 16:23:08 2012 +0100
simplified
commit 37c47bd8102ec213ee8d53c2800232a9bb7bace2
Author: Nikos Mavrogiannopoulos <address@hidden>
Date: Sat Nov 24 13:46:21 2012 +0100
corrected typo
commit e2e72dead5e31c38a161e7bd8b3cfb716869db40
Author: Nikos Mavrogiannopoulos <address@hidden>
Date: Sat Nov 24 10:41:48 2012 +0100
better error reporting
commit 2ac0d04b5f8571866e729e9d816ea69780892634
Author: Nikos Mavrogiannopoulos <address@hidden>
Date: Sat Nov 24 10:41:33 2012 +0100
some simplifications in time handling
commit bbfe113c2d7540c6883eb3d83d7052f49f7988fc
Author: Nikos Mavrogiannopoulos <address@hidden>
Date: Sat Nov 24 09:41:50 2012 +0100
Introduced ASN1_ETYPE_UTC_TIME and ASN1_ETYPE_GENERALIZED_TIME
commit 435b15341e5aed9fe0f936d87a88bca31678458d
Author: Nikos Mavrogiannopoulos <address@hidden>
Date: Sat Nov 24 09:07:41 2012 +0100
updates in ETYPE_OK
-----------------------------------------------------------------------
Summary of changes:
NEWS | 1 +
lib/ASN1.c | 4 +-
lib/ASN1.y | 4 +-
lib/coding.c | 28 +--
lib/decoding.c | 32 +--
lib/element.c | 44 ++--
lib/int.h | 45 ++++-
lib/libtasn1.h | 4 +-
lib/parser_aux.c | 4 +-
lib/structure.c | 30 ++-
tests/Test_tree.c | 637 +++++++++++++++++++++++++++--------------------------
11 files changed, 442 insertions(+), 391 deletions(-)
diff --git a/NEWS b/NEWS
index 371e804..b2dddec 100644
--- a/NEWS
+++ b/NEWS
@@ -9,6 +9,7 @@ GNU Libtasn1 NEWS -*-
outline -*-
- Parser outputs more detailed syntax error message.
- Added asn1_decode_simple_der() and asn1_encode_simple_der().
- Added asn1_read_value_type() to return value and type.
+- Introduced ASN1_ETYPE_UTC_TIME and ASN1_ETYPE_GENERALIZED_TIME
* Noteworthy changes in release 3.0 (2012-10-28) [stable]
- Added tool in tests/ to benchmark X.509 structure decoding.
diff --git a/lib/ASN1.c b/lib/ASN1.c
index 928d28d..2a60527 100644
--- a/lib/ASN1.c
+++ b/lib/ASN1.c
@@ -1987,14 +1987,14 @@ yyreduce:
/* Line 1806 of yacc.c */
#line 233 "ASN1.y"
- {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_TIME|CONST_UTC);}
+ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_UTC_TIME);}
break;
case 39:
/* Line 1806 of yacc.c */
#line 234 "ASN1.y"
- {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_TIME|CONST_GENERALIZED);}
+ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_GENERALIZED_TIME);}
break;
case 40:
diff --git a/lib/ASN1.y b/lib/ASN1.y
index dafe15a..874eb13 100644
--- a/lib/ASN1.y
+++ b/lib/ASN1.y
@@ -230,8 +230,8 @@ integer_def: INTEGER
{$$=_asn1_add_static_node(ASN1_ETYPE_INT
boolean_def: BOOLEAN {$$=_asn1_add_static_node(ASN1_ETYPE_BOOLEAN);}
;
-Time: UTCTime {$$=_asn1_add_static_node(ASN1_ETYPE_TIME|CONST_UTC);}
- | GeneralizedTime
{$$=_asn1_add_static_node(ASN1_ETYPE_TIME|CONST_GENERALIZED);}
+Time: UTCTime {$$=_asn1_add_static_node(ASN1_ETYPE_UTC_TIME);}
+ | GeneralizedTime
{$$=_asn1_add_static_node(ASN1_ETYPE_GENERALIZED_TIME);}
;
size_def2: SIZE'('num_identifier')'
{$$=_asn1_add_static_node(ASN1_ETYPE_SIZE|CONST_1_PARAM);
diff --git a/lib/coding.c b/lib/coding.c
index aa777f3..5361b3f 100644
--- a/lib/coding.c
+++ b/lib/coding.c
@@ -215,7 +215,10 @@ asn1_encode_simple_der (unsigned int etype, const unsigned
char *str, unsigned i
if (ETYPE_OK(etype) == 0)
return ASN1_VALUE_NOT_VALID;
-
+
+ /* doesn't handle constructed classes */
+ if (ETYPE_CLASS(etype) != ASN1_CLASS_UNIVERSAL)
+ return ASN1_VALUE_NOT_VALID;
_asn1_tag_der (ETYPE_CLASS(etype), ETYPE_TAG(etype),
der_tag, &tag_len);
@@ -255,11 +258,10 @@ asn1_encode_simple_der (unsigned int etype, const
unsigned char *str, unsigned i
/* ASN1_SUCCESS otherwise */
/******************************************************/
static int
-_asn1_time_der (unsigned char *str, unsigned char *der, int *der_len)
+_asn1_time_der (unsigned char *str, int str_len, unsigned char *der, int
*der_len)
{
int len_len;
int max_len;
- int str_len = _asn1_strlen (str);
max_len = *der_len;
@@ -528,7 +530,7 @@ const tag_and_class_st _asn1_tags[] =
[ASN1_ETYPE_VISIBLE_STRING] = {ASN1_TAG_VISIBLE_STRING,
ASN1_CLASS_UNIVERSAL, "type:VISIBLE_STR"},
[ASN1_ETYPE_OCTET_STRING] = {ASN1_TAG_OCTET_STRING, ASN1_CLASS_UNIVERSAL,
"type:OCT_STR"},
[ASN1_ETYPE_BIT_STRING] = {ASN1_TAG_BIT_STRING, ASN1_CLASS_UNIVERSAL,
"type:BIT_STR"},
- [ASN1_ETYPE_OBJECT_ID] = {ASN1_TAG_OBJECT_ID, ASN1_CLASS_UNIVERSAL,
"type:OBJ_STR"},
+ [ASN1_ETYPE_OBJECT_ID] = {ASN1_TAG_OBJECT_ID, ASN1_CLASS_UNIVERSAL,
"type:OBJ_ID"},
[ASN1_ETYPE_NULL] = {ASN1_TAG_NULL, ASN1_CLASS_UNIVERSAL, "type:NULL"},
[ASN1_ETYPE_BOOLEAN] = {ASN1_TAG_BOOLEAN, ASN1_CLASS_UNIVERSAL,
"type:BOOLEAN"},
[ASN1_ETYPE_INTEGER] = {ASN1_TAG_INTEGER, ASN1_CLASS_UNIVERSAL,
"type:INTEGER"},
@@ -537,7 +539,10 @@ const tag_and_class_st _asn1_tags[] =
[ASN1_ETYPE_SEQUENCE_OF] ={ASN1_TAG_SEQUENCE, ASN1_CLASS_UNIVERSAL |
ASN1_CLASS_STRUCTURED, "type:SEQ_OF"},
[ASN1_ETYPE_SET] = {ASN1_TAG_SET, ASN1_CLASS_UNIVERSAL |
ASN1_CLASS_STRUCTURED, "type:SET"},
[ASN1_ETYPE_SET_OF] = {ASN1_TAG_SET, ASN1_CLASS_UNIVERSAL |
ASN1_CLASS_STRUCTURED, "type:SET_OF"},
+ [ASN1_ETYPE_GENERALIZED_TIME] = {ASN1_TAG_GENERALIZEDTime,
ASN1_CLASS_UNIVERSAL, "type:GENERALIZED_TIME"},
+ [ASN1_ETYPE_UTC_TIME] = {ASN1_TAG_UTCTime, ASN1_CLASS_UNIVERSAL,
"type:UTC_TIME"},
};
+
unsigned int _asn1_tags_size = sizeof(_asn1_tags)/sizeof(_asn1_tags[0]);
/******************************************************/
@@ -631,16 +636,6 @@ _asn1_insert_tag_der (asn1_node node, unsigned char *der,
int *counter,
unsigned type = type_field (node->type);
switch (type)
{
- case ASN1_ETYPE_TIME:
- if (node->type & CONST_UTC)
- {
- _asn1_tag_der (ASN1_CLASS_UNIVERSAL, ASN1_TAG_UTCTime, tag_der,
- &tag_len);
- }
- else
- _asn1_tag_der (ASN1_CLASS_UNIVERSAL, ASN1_TAG_GENERALIZEDTime,
- tag_der, &tag_len);
- break;
CASE_HANDLED_ETYPES:
_asn1_tag_der (_asn1_tags[type].class, _asn1_tags[type].tag,
tag_der, &tag_len);
@@ -1065,7 +1060,8 @@ asn1_der_coding (asn1_node element, const char *name,
void *ider, int *len,
}
move = RIGHT;
break;
- case ASN1_ETYPE_TIME:
+ case ASN1_ETYPE_GENERALIZED_TIME:
+ case ASN1_ETYPE_UTC_TIME:
if (p->value == NULL)
{
_asn1_error_description_value_not_found (p, ErrorDescription);
@@ -1073,7 +1069,7 @@ asn1_der_coding (asn1_node element, const char *name,
void *ider, int *len,
goto error;
}
len2 = max_len;
- err = _asn1_time_der (p->value, der + counter, &len2);
+ err = _asn1_time_der (p->value, p->value_len, der + counter, &len2);
if (err != ASN1_SUCCESS && err != ASN1_MEM_ERROR)
goto error;
diff --git a/lib/decoding.c b/lib/decoding.c
index 5df1f36..f02fe10 100644
--- a/lib/decoding.c
+++ b/lib/decoding.c
@@ -511,25 +511,12 @@ _asn1_extract_tag_der (asn1_node node, const unsigned
char *der, int der_len,
case ASN1_ETYPE_SEQUENCE_OF:
case ASN1_ETYPE_SET:
case ASN1_ETYPE_SET_OF:
+ case ASN1_ETYPE_GENERALIZED_TIME:
+ case ASN1_ETYPE_UTC_TIME:
if ((class != _asn1_tags[type].class) || (tag !=
_asn1_tags[type].tag))
return ASN1_DER_ERROR;
break;
- case ASN1_ETYPE_TIME:
- if (node->type & CONST_UTC)
- {
- if ((class != ASN1_CLASS_UNIVERSAL)
- || (tag != ASN1_TAG_UTCTime))
- return ASN1_DER_ERROR;
- }
- else
- {
- if ((class != ASN1_CLASS_UNIVERSAL)
- || (tag != ASN1_TAG_GENERALIZEDTime))
- return ASN1_DER_ERROR;
- }
- break;
-
case ASN1_ETYPE_OCTET_STRING:
/* OCTET STRING is handled differently to allow
* BER encodings (structured class). */
@@ -1055,7 +1042,8 @@ asn1_der_decoding (asn1_node * element, const void *ider,
int len,
counter += len2;
move = RIGHT;
break;
- case ASN1_ETYPE_TIME:
+ case ASN1_ETYPE_GENERALIZED_TIME:
+ case ASN1_ETYPE_UTC_TIME:
result =
_asn1_get_time_der (der + counter, len - counter, &len2, temp,
sizeof (temp) - 1);
@@ -1064,7 +1052,7 @@ asn1_der_decoding (asn1_node * element, const void *ider,
int len,
tlen = strlen (temp);
if (tlen > 0)
- _asn1_set_value (p, temp, tlen + 1);
+ _asn1_set_value (p, temp, tlen);
counter += len2;
move = RIGHT;
break;
@@ -1707,7 +1695,8 @@ asn1_der_decoding_element (asn1_node * structure, const
char *elementName,
counter += len2;
move = RIGHT;
break;
- case ASN1_ETYPE_TIME:
+ case ASN1_ETYPE_GENERALIZED_TIME:
+ case ASN1_ETYPE_UTC_TIME:
if (state == FOUND)
{
result =
@@ -2347,7 +2336,8 @@ asn1_der_decoding_startEnd (asn1_node element, const void
*ider, int len,
counter += len3;
move = RIGHT;
break;
- case ASN1_ETYPE_TIME:
+ case ASN1_ETYPE_UTC_TIME:
+ case ASN1_ETYPE_GENERALIZED_TIME:
case ASN1_ETYPE_OBJECT_ID:
case ASN1_ETYPE_INTEGER:
case ASN1_ETYPE_ENUMERATED:
@@ -2896,6 +2886,10 @@ asn1_decode_simple_der (unsigned int etype, const
unsigned char *der, unsigned i
if (ETYPE_OK(etype) == 0)
return ASN1_VALUE_NOT_VALID;
+ /* doesn't handle constructed classes */
+ if (ETYPE_CLASS(etype) != ASN1_CLASS_UNIVERSAL)
+ return ASN1_VALUE_NOT_VALID;
+
p = der;
ret = asn1_get_tag_der (p, der_len, &class, &tag_len, &tag);
if (ret != ASN1_SUCCESS)
diff --git a/lib/element.c b/lib/element.c
index 2e3d48e..2c761c5 100644
--- a/lib/element.c
+++ b/lib/element.c
@@ -276,6 +276,7 @@ asn1_write_value (asn1_node node_root, const char *name,
int len2, k, k2, negative;
size_t i;
const unsigned char *value = ivalue;
+ unsigned int type;
node = asn1_find_node (node_root, name);
if (node == NULL)
@@ -286,8 +287,10 @@ asn1_write_value (asn1_node node_root, const char *name,
asn1_delete_structure (&node);
return ASN1_SUCCESS;
}
+
+ type = type_field(node->type);
- if ((type_field (node->type) == ASN1_ETYPE_SEQUENCE_OF) && (value == NULL)
+ if ((type == ASN1_ETYPE_SEQUENCE_OF) && (value == NULL)
&& (len == 0))
{
p = node->down;
@@ -301,7 +304,7 @@ asn1_write_value (asn1_node node_root, const char *name,
return ASN1_SUCCESS;
}
- switch (type_field (node->type))
+ switch (type)
{
case ASN1_ETYPE_BOOLEAN:
if (!_asn1_strcmp (value, "TRUE"))
@@ -496,8 +499,7 @@ asn1_write_value (asn1_node node_root, const char *name,
}
_asn1_set_value (node, value, _asn1_strlen (value) + 1);
break;
- case ASN1_ETYPE_TIME:
- if (node->type & CONST_UTC)
+ case ASN1_ETYPE_UTC_TIME:
{
if (_asn1_strlen (value) < 11)
return ASN1_VALUE_NOT_VALID;
@@ -534,14 +536,13 @@ asn1_write_value (asn1_node node_root, const char *name,
default:
return ASN1_VALUE_NOT_FOUND;
}
- _asn1_set_value (node, value, _asn1_strlen (value) + 1);
- }
- else
- { /* GENERALIZED TIME */
- if (value)
- _asn1_set_value (node, value, _asn1_strlen (value) + 1);
+ _asn1_set_value (node, value, _asn1_strlen (value));
}
break;
+ case ASN1_ETYPE_GENERALIZED_TIME:
+ if (value)
+ _asn1_set_value (node, value, _asn1_strlen (value));
+ break;
case ASN1_ETYPE_OCTET_STRING:
case ASN1_ETYPE_GENERALSTRING:
case ASN1_ETYPE_NUMERIC_STRING:
@@ -627,6 +628,16 @@ asn1_write_value (asn1_node node_root, const char *name,
_asn1_strcpy(ptr, data); \
}
+#define PUT_AS_STR_VALUE( ptr, ptr_size, data, data_size) \
+ *len = data_size + 1; \
+ if (ptr_size < *len) { \
+ return ASN1_MEM_ERROR; \
+ } else { \
+ /* this strcpy is checked */ \
+ memcpy(ptr, data, data_size); \
+ ptr[data_size] = 0; \
+ }
+
#define ADD_STR_VALUE( ptr, ptr_size, data) \
*len = (int) _asn1_strlen(data) + 1; \
if (ptr_size < (int) _asn1_strlen(ptr)+(*len)) { \
@@ -892,8 +903,9 @@ asn1_read_value_type (asn1_node root, const char *name,
void *ivalue, int *len,
PUT_STR_VALUE (value, value_size, node->value);
}
break;
- case ASN1_ETYPE_TIME:
- PUT_STR_VALUE (value, value_size, node->value);
+ case ASN1_ETYPE_GENERALIZED_TIME:
+ case ASN1_ETYPE_UTC_TIME:
+ PUT_AS_STR_VALUE (value, value_size, node->value, node->value_len);
break;
case ASN1_ETYPE_OCTET_STRING:
case ASN1_ETYPE_GENERALSTRING:
@@ -1003,14 +1015,6 @@ asn1_read_tag (asn1_node root, const char *name, int
*tagValue,
CASE_HANDLED_ETYPES:
*tagValue = _asn1_tags[type].tag;
break;
- case ASN1_ETYPE_TIME:
- if (node->type & CONST_UTC)
- {
- *tagValue = ASN1_TAG_UTCTime;
- }
- else
- *tagValue = ASN1_TAG_GENERALIZEDTime;
- break;
case ASN1_ETYPE_TAG:
case ASN1_ETYPE_CHOICE:
case ASN1_ETYPE_ANY:
diff --git a/lib/int.h b/lib/int.h
index 9400cb8..ce20ab2 100644
--- a/lib/int.h
+++ b/lib/int.h
@@ -85,11 +85,15 @@ typedef struct tag_and_class_st {
case ASN1_ETYPE_SEQUENCE: \
case ASN1_ETYPE_SEQUENCE_OF: \
case ASN1_ETYPE_SET: \
+ case ASN1_ETYPE_UTC_TIME: \
+ case ASN1_ETYPE_GENERALIZED_TIME: \
case ASN1_ETYPE_SET_OF
#define ETYPE_TAG(etype) (_asn1_tags[etype].tag)
#define ETYPE_CLASS(etype) (_asn1_tags[etype].class)
-#define ETYPE_OK(etype) ((etype <= _asn1_tags_size)?1:0)
+#define ETYPE_OK(etype) ((etype != ASN1_ETYPE_INVALID && \
+ etype <= _asn1_tags_size && \
+ _asn1_tags[etype].desc != NULL)?1:0)
extern unsigned int _asn1_tags_size;
extern const tag_and_class_st _asn1_tags[];
@@ -108,12 +112,6 @@ extern const tag_and_class_st _asn1_tags[];
#define RIGHT 2
#define DOWN 3
-/****************************************/
-/* Returns the first 8 bits. */
-/* Used with the field type of asn1_node_st */
-/****************************************/
-#define type_field(x) (x&0xFF)
-
/***********************************************************************/
/* List of constants to better specify the type of typedef asn1_node_st. */
/***********************************************************************/
@@ -139,6 +137,7 @@ extern const tag_and_class_st _asn1_tags[];
#define CONST_DEFINED_BY (1<<22)
+/* Those two are deprecated and used for backwards compatibility */
#define CONST_GENERALIZED (1<<23)
#define CONST_UTC (1<<24)
@@ -151,4 +150,36 @@ extern const tag_and_class_st _asn1_tags[];
#define CONST_DOWN (1<<29)
#define CONST_RIGHT (1<<30)
+
+#define ASN1_ETYPE_TIME 17
+/****************************************/
+/* Returns the first 8 bits. */
+/* Used with the field type of asn1_node_st */
+/****************************************/
+inline static unsigned int type_field(unsigned int ntype)
+{
+ return (ntype & 0xff);
+}
+
+/* To convert old types from a static structure */
+inline static unsigned int convert_old_type(unsigned int ntype)
+{
+unsigned int type = ntype & 0xff;
+ if (type == ASN1_ETYPE_TIME)
+ {
+ if (type & CONST_UTC)
+ type = ASN1_ETYPE_UTC_TIME;
+ else
+ type = ASN1_ETYPE_GENERALIZED_TIME;
+
+ ntype &= ~(CONST_UTC|CONST_GENERALIZED);
+ ntype &= 0xffffff00;
+ ntype |= type;
+
+ return ntype;
+ }
+ else
+ return ntype;
+}
+
#endif /* INT_H */
diff --git a/lib/libtasn1.h b/lib/libtasn1.h
index 59c3093..5b50c47 100644
--- a/lib/libtasn1.h
+++ b/lib/libtasn1.h
@@ -135,6 +135,7 @@ extern "C"
typedef struct asn1_static_node_st asn1_static_node;
/* List of constants for field type of node_asn */
+#define ASN1_ETYPE_INVALID 0
#define ASN1_ETYPE_CONSTANT 1
#define ASN1_ETYPE_IDENTIFIER 2
#define ASN1_ETYPE_INTEGER 3
@@ -151,7 +152,6 @@ extern "C"
#define ASN1_ETYPE_SET 14
#define ASN1_ETYPE_SET_OF 15
#define ASN1_ETYPE_DEFINITIONS 16
-#define ASN1_ETYPE_TIME 17
#define ASN1_ETYPE_CHOICE 18
#define ASN1_ETYPE_IMPORTS 19
#define ASN1_ETYPE_NULL 20
@@ -165,6 +165,8 @@ extern "C"
#define ASN1_ETYPE_BMP_STRING 33
#define ASN1_ETYPE_UTF8_STRING 34
#define ASN1_ETYPE_VISIBLE_STRING 35
+#define ASN1_ETYPE_UTC_TIME 36
+#define ASN1_ETYPE_GENERALIZED_TIME 37
struct asn1_data_node_st
{
diff --git a/lib/parser_aux.c b/lib/parser_aux.c
index 7d16fa3..4fcc7d7 100644
--- a/lib/parser_aux.c
+++ b/lib/parser_aux.c
@@ -48,7 +48,7 @@ list_type *firstElement = NULL;
/* Description: creates a new NODE_ASN element and */
/* puts it in the list pointed by firstElement. */
/* Parameters: */
-/* type: type of the new element (see ASN1_ETYPE_ */
+/* type: type of the new element (see ASN1_ETYPE_ */
/* and CONST_ constants). */
/* Return: pointer to the new element. */
/******************************************************/
@@ -73,7 +73,7 @@ _asn1_add_static_node (unsigned int type)
listElement->next = firstElement;
firstElement = listElement;
- punt->type = type;
+ punt->type = convert_old_type(type);
return punt;
}
diff --git a/lib/structure.c b/lib/structure.c
index a508030..1659067 100644
--- a/lib/structure.c
+++ b/lib/structure.c
@@ -753,9 +753,6 @@ asn1_print_structure (FILE * out, asn1_node structure,
const char *name,
case ASN1_ETYPE_IDENTIFIER:
fprintf (out, "type:IDENTIFIER");
break;
- case ASN1_ETYPE_TIME:
- fprintf (out, "type:TIME");
- break;
case ASN1_ETYPE_ANY:
fprintf (out, "type:ANY");
break;
@@ -826,10 +823,6 @@ asn1_print_structure (FILE * out, asn1_node structure,
const char *name,
fprintf (out, "%02x", (p->value)[k + len2]);
}
break;
- case ASN1_ETYPE_TIME:
- if (p->value)
- fprintf (out, " value:%s", p->value);
- break;
case ASN1_ETYPE_BOOLEAN:
if (p->value)
{
@@ -853,14 +846,21 @@ asn1_print_structure (FILE * out, asn1_node structure,
const char *name,
}
}
break;
- case ASN1_ETYPE_OCTET_STRING:
+ case ASN1_ETYPE_GENERALIZED_TIME:
+ case ASN1_ETYPE_UTC_TIME:
+ if (p->value)
+ {
+ fprintf (out, " value:");
+ for (k = 0; k < p->value_len; k++)
+ fprintf (out, "%c", (p->value)[k]);
+ }
+ break;
case ASN1_ETYPE_GENERALSTRING:
case ASN1_ETYPE_NUMERIC_STRING:
case ASN1_ETYPE_IA5_STRING:
case ASN1_ETYPE_TELETEX_STRING:
case ASN1_ETYPE_PRINTABLE_STRING:
case ASN1_ETYPE_UNIVERSAL_STRING:
- case ASN1_ETYPE_BMP_STRING:
case ASN1_ETYPE_UTF8_STRING:
case ASN1_ETYPE_VISIBLE_STRING:
if (p->value)
@@ -870,6 +870,18 @@ asn1_print_structure (FILE * out, asn1_node structure,
const char *name,
fprintf (out, " value:");
if (len > 0)
for (k = 0; k < len; k++)
+ fprintf (out, "%c", (p->value)[k + len2]);
+ }
+ break;
+ case ASN1_ETYPE_BMP_STRING:
+ case ASN1_ETYPE_OCTET_STRING:
+ if (p->value)
+ {
+ len2 = -1;
+ len = asn1_get_length_der (p->value, p->value_len, &len2);
+ fprintf (out, " value:");
+ if (len > 0)
+ for (k = 0; k < len; k++)
fprintf (out, "%02x", (p->value)[k + len2]);
}
break;
diff --git a/tests/Test_tree.c b/tests/Test_tree.c
index abfaa5e..bcd3cbe 100644
--- a/tests/Test_tree.c
+++ b/tests/Test_tree.c
@@ -67,361 +67,362 @@ typedef struct
const char *par2;
int par3;
int errorNumber;
+ int line;
} test_type;
test_type test_array[] = {
- {ACT_DELETE, "", "", 0, ASN1_ELEMENT_NOT_FOUND},
+ {ACT_DELETE, "", "", 0, ASN1_ELEMENT_NOT_FOUND, __LINE__},
/* Test: APPLICATION 30 */
- {ACT_CREATE, "TEST_TREE.KrbError", 0, 0, ASN1_SUCCESS},
- {ACT_WRITE, "pvno", "5", 0, ASN1_SUCCESS},
- {ACT_ENCODING_LENGTH, "", 0, 5, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 4, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 5, ASN1_SUCCESS},
- {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS},
- {ACT_CREATE, "TEST_TREE.KrbError", 0, 0, ASN1_SUCCESS},
- {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_DELETE_ELEMENT, "pvno", "", 0, ASN1_SUCCESS},
- {ACT_DELETE_ELEMENT, "pvno", "", 0, ASN1_ELEMENT_NOT_FOUND},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
+ {ACT_CREATE, "TEST_TREE.KrbError", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "pvno", "5", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_ENCODING_LENGTH, "", 0, 5, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 4, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 5, ASN1_SUCCESS, __LINE__},
+ {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_CREATE, "TEST_TREE.KrbError", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE_ELEMENT, "pvno", "", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE_ELEMENT, "pvno", "", 0, ASN1_ELEMENT_NOT_FOUND, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
/* Test: CHOICE */
- {ACT_CREATE, "TEST_TREE.CertTemplate", 0, 0, ASN1_SUCCESS},
- {ACT_WRITE, "version", 0, 0, ASN1_SUCCESS},
- {ACT_WRITE, "validity", 0, 0, ASN1_SUCCESS},
- {ACT_WRITE, "issuer", "rdnSequence", 0, ASN1_SUCCESS},
- {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS},
- {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.3", 0, ASN1_SUCCESS},
+ {ACT_CREATE, "TEST_TREE.CertTemplate", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "version", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "validity", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "issuer", "rdnSequence", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.3", 0, ASN1_SUCCESS,
__LINE__},
{ACT_WRITE, "issuer.rdnSequence.?LAST.value",
"\x0c\x18\x71\x75\x61\x73\x61\x72\x2e\x6c\x61\x73\x2e\x69\x63\x2e\x75\x6e\x69\x63\x61\x6d\x70\x2e\x62\x72",
- 26, ASN1_SUCCESS},
- {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS},
- {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.7", 0, ASN1_SUCCESS},
+ 26, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.7", 0, ASN1_SUCCESS,
__LINE__},
{ACT_WRITE, "issuer.rdnSequence.?LAST.value",
- "\x0c\x08\x43\x61\x6d\x70\x69\x6e\x61\x73", 10, ASN1_SUCCESS},
- {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS},
- {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.6", 0, ASN1_SUCCESS},
+ "\x0c\x08\x43\x61\x6d\x70\x69\x6e\x61\x73", 10, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.6", 0, ASN1_SUCCESS,
__LINE__},
{ACT_WRITE, "issuer.rdnSequence.?LAST.value",
- "\x13\x06\x42\x72\x61\x73\x69\x6c", 8, ASN1_SUCCESS},
- {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS},
- {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.10", 0, ASN1_SUCCESS},
+ "\x13\x06\x42\x72\x61\x73\x69\x6c", 8, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.10", 0, ASN1_SUCCESS,
__LINE__},
{ACT_WRITE, "issuer.rdnSequence.?LAST.value", "\x0c\x02\x49\x43", 4,
- ASN1_SUCCESS},
- {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS},
- {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.11", 0, ASN1_SUCCESS},
+ ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.11", 0, ASN1_SUCCESS,
__LINE__},
{ACT_WRITE, "issuer.rdnSequence.?LAST.value", "\x0c\x03\x4c\x41\x53", 5,
- ASN1_SUCCESS},
- {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS},
- {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.8", 0, ASN1_SUCCESS},
+ ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.8", 0, ASN1_SUCCESS,
__LINE__},
{ACT_WRITE, "issuer.rdnSequence.?LAST.value",
- "\x0c\x09\x53\x61\x6f\x20\x50\x61\x75\x6c\x6f", 11, ASN1_SUCCESS},
- {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS},
+ "\x0c\x09\x53\x61\x6f\x20\x50\x61\x75\x6c\x6f", 11, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS, __LINE__},
{ACT_WRITE, "issuer.rdnSequence.?LAST.type", "1.2.840.113549.1.9.1", 0,
- ASN1_SUCCESS},
+ ASN1_SUCCESS, __LINE__},
{ACT_WRITE, "issuer.rdnSequence.?LAST.value",
"\x16\x19\x65\x64\x75\x61\x72\x64\x6f\x40\x6c\x61\x73\x2e\x69\x63\x2e\x75\x6e\x69\x63\x61\x6d\x70\x2e\x62\x72",
- 27, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_ENCODING_LENGTH, "", 0, 152, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 151, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 152, ASN1_SUCCESS},
- {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
- {ACT_CREATE, "TEST_TREE.CertTemplate", 0, 0, ASN1_SUCCESS},
- {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_DELETE_ELEMENT, "issuer.rdnSequence.?1", "", 0, ASN1_SUCCESS},
+ 27, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_ENCODING_LENGTH, "", 0, 152, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 151, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 152, ASN1_SUCCESS, __LINE__},
+ {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_CREATE, "TEST_TREE.CertTemplate", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE_ELEMENT, "issuer.rdnSequence.?1", "", 0, ASN1_SUCCESS, __LINE__},
{ACT_DELETE_ELEMENT, "issuer.rdnSequence.?1", "", 0,
- ASN1_ELEMENT_NOT_FOUND},
- {ACT_DELETE_ELEMENT, "issuer.rdnSequence.?3", "", 0, ASN1_SUCCESS},
- {ACT_DELETE_ELEMENT, "issuer.rdnSequence.?5", "", 0, ASN1_SUCCESS},
- {ACT_DELETE_ELEMENT, "issuer.rdnSequence.?7", "", 0, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
+ ASN1_ELEMENT_NOT_FOUND, __LINE__},
+ {ACT_DELETE_ELEMENT, "issuer.rdnSequence.?3", "", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE_ELEMENT, "issuer.rdnSequence.?5", "", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE_ELEMENT, "issuer.rdnSequence.?7", "", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
/* Test: Empty sequnces */
- {ACT_CREATE, "TEST_TREE.sequenceEmpty", 0, 0, ASN1_SUCCESS},
- {ACT_WRITE, "int1", "1", 0, ASN1_SUCCESS},
- {ACT_WRITE, "seq1.int", NULL, 0, ASN1_SUCCESS},
- {ACT_ENCODING_LENGTH, "", 0, 11, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 10, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 11, ASN1_SUCCESS},
- {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
- {ACT_CREATE, "TEST_TREE.sequenceEmpty", 0, 0, ASN1_SUCCESS},
- {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS},
- {ACT_DECODING_START_END, "seq1", "START", 5, ASN1_SUCCESS},
- {ACT_DECODING_START_END, "seq1", "END", 6, ASN1_SUCCESS},
- {ACT_DECODING_START_END, "set1", "START", 7, ASN1_SUCCESS},
- {ACT_DECODING_START_END, "set1", "END", 10, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
+ {ACT_CREATE, "TEST_TREE.sequenceEmpty", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "int1", "1", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "seq1.int", NULL, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_ENCODING_LENGTH, "", 0, 11, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 10, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 11, ASN1_SUCCESS, __LINE__},
+ {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_CREATE, "TEST_TREE.sequenceEmpty", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING_START_END, "seq1", "START", 5, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING_START_END, "seq1", "END", 6, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING_START_END, "set1", "START", 7, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING_START_END, "set1", "END", 10, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
/* Test: Indefinite Length */
- {ACT_CREATE, "TEST_TREE.IndefiniteLengthTest", 0, 0, ASN1_SUCCESS},
- {ACT_WRITE, "int1", "1", 0, ASN1_SUCCESS},
- {ACT_WRITE, "seq1.int", "2", 0, ASN1_SUCCESS},
- {ACT_WRITE, "set1", "NEW", 0, ASN1_SUCCESS},
- {ACT_WRITE, "set1.?LAST", "1.2.3.4", 0, ASN1_SUCCESS},
- {ACT_WRITE, "set1", "NEW", 0, ASN1_SUCCESS},
- {ACT_WRITE, "set1.?LAST", "1.2.5.6", 0, ASN1_SUCCESS},
- {ACT_ENCODING, "", 0, 255, ASN1_SUCCESS},
- {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS},
+ {ACT_CREATE, "TEST_TREE.IndefiniteLengthTest", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "int1", "1", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "seq1.int", "2", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "set1", "NEW", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "set1.?LAST", "1.2.3.4", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "set1", "NEW", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "set1.?LAST", "1.2.5.6", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_ENCODING, "", 0, 255, ASN1_SUCCESS, __LINE__},
+ {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__},
{ACT_SET_DER,
"\x30\x18\xa1\x80\x02\x01\x02\x00\x00\x31\x80\x06\x03\x2a\x03\x04\x06\x03\x2a\x05\x06\x00\x00\x02\x01\x01",
- 0, 26, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
- {ACT_CREATE, "TEST_TREE.IndefiniteLengthTest", 0, 0, ASN1_SUCCESS},
- {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS},
- {ACT_DECODING_START_END, "seq1", "START", 2, ASN1_SUCCESS},
- {ACT_DECODING_START_END, "seq1", "END", 8, ASN1_SUCCESS},
- {ACT_DECODING_START_END, "set1", "START", 9, ASN1_SUCCESS},
- {ACT_DECODING_START_END, "set1", "END", 22, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
+ 0, 26, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_CREATE, "TEST_TREE.IndefiniteLengthTest", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING_START_END, "seq1", "START", 2, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING_START_END, "seq1", "END", 8, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING_START_END, "set1", "START", 9, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING_START_END, "set1", "END", 22, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
/* Test: OID */
- {ACT_CREATE, "TEST_TREE.OidTest", 0, 0, ASN1_SUCCESS},
- {ACT_READ_LENGTH, "oid", NULL, 9, ASN1_MEM_ERROR},
- {ACT_READ, "oid", "2.5.29.2", 9, ASN1_SUCCESS},
- {ACT_WRITE, "oid", "1.2.3.4", 0, ASN1_SUCCESS},
- {ACT_WRITE, "oid2", "2.5.29.1", 0, ASN1_SUCCESS},
- {ACT_WRITE, "oid3", "1.2.29.2", 0, ASN1_SUCCESS},
- {ACT_ENCODING_LENGTH, "", 0, 7, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 6, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 7, ASN1_SUCCESS},
- {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
- {ACT_CREATE, "TEST_TREE.OidTest", 0, 0, ASN1_SUCCESS},
- {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS},
- {ACT_DECODING_START_END, "oid", "START", 2, ASN1_SUCCESS},
- {ACT_DECODING_START_END, "oid", "END", 6, ASN1_SUCCESS},
- {ACT_DECODING_START_END, "", "START", 0, ASN1_SUCCESS},
- {ACT_DECODING_START_END, "", "END", 6, ASN1_SUCCESS},
- {ACT_READ, "oid2", "2.5.29.1", 9, ASN1_SUCCESS},
- {ACT_READ, "oid3", "1.2.29.2", 9, ASN1_SUCCESS},
- {ACT_WRITE, "oid", "1.2.3.4", 0, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
+ {ACT_CREATE, "TEST_TREE.OidTest", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_READ_LENGTH, "oid", NULL, 9, ASN1_MEM_ERROR, __LINE__},
+ {ACT_READ, "oid", "2.5.29.2", 9, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "oid", "1.2.3.4", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "oid2", "2.5.29.1", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "oid3", "1.2.29.2", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_ENCODING_LENGTH, "", 0, 7, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 6, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 7, ASN1_SUCCESS, __LINE__},
+ {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_CREATE, "TEST_TREE.OidTest", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING_START_END, "oid", "START", 2, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING_START_END, "oid", "END", 6, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING_START_END, "", "START", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING_START_END, "", "END", 6, ASN1_SUCCESS, __LINE__},
+ {ACT_READ, "oid2", "2.5.29.1", 9, ASN1_SUCCESS, __LINE__},
+ {ACT_READ, "oid3", "1.2.29.2", 9, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "oid", "1.2.3.4", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
/* Test: ENCODING_LENGTH and READ_LEN */
- {ACT_CREATE, "TEST_TREE.OidAndTimeTest", 0, 0, ASN1_SUCCESS},
- {ACT_WRITE, "oid", "1.2.3.4", 0, ASN1_SUCCESS},
- {ACT_WRITE, "time1", "9801011200Z", 1, ASN1_SUCCESS},
- {ACT_WRITE, "time2", "2001010112001.12-0700", 1, ASN1_SUCCESS},
- {ACT_WRITE, "oct", "ABCD", 4, ASN1_SUCCESS},
- {ACT_WRITE, "bol", "TRUE", 1, ASN1_SUCCESS},
- {ACT_WRITE, "enum", "2", 0, ASN1_SUCCESS},
- {ACT_WRITE, "bit", "1\xC0", 10, ASN1_SUCCESS},
- {ACT_WRITE, "any", "\x30\x01\x01", 3, ASN1_SUCCESS},
- {ACT_WRITE, "set", "NEW", 0, ASN1_SUCCESS},
- {ACT_WRITE, "set.?LAST", "10", 0, ASN1_SUCCESS},
- {ACT_WRITE, "set", "NEW", 0, ASN1_SUCCESS},
- {ACT_WRITE, "set.?LAST", "1", 0, ASN1_SUCCESS},
- {ACT_WRITE, "gen", "Prova", 5, ASN1_SUCCESS},
- {ACT_READ_LENGTH, "oid", NULL, 8, ASN1_MEM_ERROR},
- {ACT_READ_LENGTH, "time1", NULL, 12, ASN1_MEM_ERROR},
- {ACT_READ_LENGTH, "time2", NULL, 22, ASN1_MEM_ERROR},
- {ACT_READ_LENGTH, "oct", NULL, 4, ASN1_MEM_ERROR},
- {ACT_READ_LENGTH, "bol", NULL, 5, ASN1_MEM_ERROR},
- {ACT_READ_LENGTH, "enum", NULL, 1, ASN1_MEM_ERROR},
- {ACT_READ_LENGTH, "any", NULL, 3, ASN1_MEM_ERROR},
- {ACT_READ_LENGTH, "gen", NULL, 5, ASN1_MEM_ERROR},
- {ACT_READ_LENGTH, "bit", NULL, 10, ASN1_MEM_ERROR},
- {ACT_READ_BIT, "bit", "1\xC0", 10, ASN1_SUCCESS},
- {ACT_ENCODING_LENGTH, "", 0, 79, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 78, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 79, ASN1_SUCCESS},
- {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
- {ACT_CREATE, "TEST_TREE.OidAndTimeTest", 0, 0, ASN1_SUCCESS},
- {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
+ {ACT_CREATE, "TEST_TREE.OidAndTimeTest", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "oid", "1.2.3.4", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "time1", "9801011200Z", 1, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "time2", "2001010112001.12-0700", 1, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "oct", "ABCD", 4, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "bol", "TRUE", 1, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "enum", "2", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "bit", "1\xC0", 10, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "any", "\x30\x01\x01", 3, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "set", "NEW", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "set.?LAST", "10", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "set", "NEW", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "set.?LAST", "1", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "gen", "Prova", 5, ASN1_SUCCESS, __LINE__},
+ {ACT_READ_LENGTH, "oid", NULL, 8, ASN1_MEM_ERROR, __LINE__},
+ {ACT_READ_LENGTH, "time1", NULL, 12, ASN1_MEM_ERROR, __LINE__},
+ {ACT_READ_LENGTH, "time2", NULL, 22, ASN1_MEM_ERROR, __LINE__},
+ {ACT_READ_LENGTH, "oct", NULL, 4, ASN1_MEM_ERROR, __LINE__},
+ {ACT_READ_LENGTH, "bol", NULL, 5, ASN1_MEM_ERROR, __LINE__},
+ {ACT_READ_LENGTH, "enum", NULL, 1, ASN1_MEM_ERROR, __LINE__},
+ {ACT_READ_LENGTH, "any", NULL, 3, ASN1_MEM_ERROR, __LINE__},
+ {ACT_READ_LENGTH, "gen", NULL, 5, ASN1_MEM_ERROR, __LINE__},
+ {ACT_READ_LENGTH, "bit", NULL, 10, ASN1_MEM_ERROR, __LINE__},
+ {ACT_READ_BIT, "bit", "1\xC0", 10, ASN1_SUCCESS, __LINE__},
+ {ACT_ENCODING_LENGTH, "", 0, 79, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 78, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 79, ASN1_SUCCESS, __LINE__},
+ {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_CREATE, "TEST_TREE.OidAndTimeTest", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
/* Test: OID to STRUCTURE */
- {ACT_OID_2_STRUCTURE, "2.5.29.3", "", 0, ASN1_ELEMENT_NOT_FOUND},
- {ACT_OID_2_STRUCTURE, "1.2.29.2", "", 0, ASN1_ELEMENT_NOT_FOUND},
- {ACT_OID_2_STRUCTURE, "2.5.29.2", "anyTest2", 0, ASN1_SUCCESS},
+ {ACT_OID_2_STRUCTURE, "2.5.29.3", "", 0, ASN1_ELEMENT_NOT_FOUND, __LINE__},
+ {ACT_OID_2_STRUCTURE, "1.2.29.2", "", 0, ASN1_ELEMENT_NOT_FOUND, __LINE__},
+ {ACT_OID_2_STRUCTURE, "2.5.29.2", "anyTest2", 0, ASN1_SUCCESS, __LINE__},
/* Test: READ TAG and CLASS */
- {ACT_CREATE, "TEST_TREE.SequenceTestTag", 0, 0, ASN1_SUCCESS},
- {ACT_READ_TAG_CLASS, "int", "", 0, ASN1_ELEMENT_NOT_FOUND},
- {ACT_READ_TAG_CLASS, "int1", "TAG", ASN1_TAG_INTEGER, ASN1_SUCCESS},
- {ACT_READ_TAG_CLASS, "int1", "CLASS", ASN1_CLASS_UNIVERSAL, ASN1_SUCCESS},
- {ACT_READ_TAG_CLASS, "int2", "TAG", 3, ASN1_SUCCESS},
+ {ACT_CREATE, "TEST_TREE.SequenceTestTag", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_READ_TAG_CLASS, "int", "", 0, ASN1_ELEMENT_NOT_FOUND, __LINE__},
+ {ACT_READ_TAG_CLASS, "int1", "TAG", ASN1_TAG_INTEGER, ASN1_SUCCESS,
__LINE__},
+ {ACT_READ_TAG_CLASS, "int1", "CLASS", ASN1_CLASS_UNIVERSAL, ASN1_SUCCESS,
__LINE__},
+ {ACT_READ_TAG_CLASS, "int2", "TAG", 3, ASN1_SUCCESS, __LINE__},
{ACT_READ_TAG_CLASS, "int2", "CLASS", ASN1_CLASS_CONTEXT_SPECIFIC,
- ASN1_SUCCESS},
- {ACT_READ_TAG_CLASS, "str1", "TAG", 1, ASN1_SUCCESS},
+ ASN1_SUCCESS, __LINE__},
+ {ACT_READ_TAG_CLASS, "str1", "TAG", 1, ASN1_SUCCESS, __LINE__},
{ACT_READ_TAG_CLASS, "str1", "CLASS", ASN1_CLASS_CONTEXT_SPECIFIC,
- ASN1_SUCCESS},
- {ACT_READ_TAG_CLASS, "str2", "TAG", 28, ASN1_SUCCESS},
- {ACT_READ_TAG_CLASS, "str2", "CLASS", ASN1_CLASS_UNIVERSAL, ASN1_SUCCESS},
- {ACT_READ_TAG_CLASS, "str3", "TAG", 28, ASN1_SUCCESS},
- {ACT_READ_TAG_CLASS, "str3", "CLASS", ASN1_CLASS_UNIVERSAL, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
+ ASN1_SUCCESS, __LINE__},
+ {ACT_READ_TAG_CLASS, "str2", "TAG", 28, ASN1_SUCCESS, __LINE__},
+ {ACT_READ_TAG_CLASS, "str2", "CLASS", ASN1_CLASS_UNIVERSAL, ASN1_SUCCESS,
__LINE__},
+ {ACT_READ_TAG_CLASS, "str3", "TAG", 28, ASN1_SUCCESS, __LINE__},
+ {ACT_READ_TAG_CLASS, "str3", "CLASS", ASN1_CLASS_UNIVERSAL, ASN1_SUCCESS,
__LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
/* Test: OBJECT IDENTIFIER elements */
- {ACT_CREATE, "TEST_TREE.Sequence1", 0, 0, ASN1_SUCCESS},
- {ACT_WRITE, "int1", "v2", 0, ASN1_SUCCESS},
- {ACT_READ, "int1", "\x01", 1, ASN1_SUCCESS},
- {ACT_WRITE, "int2", "0", 0, ASN1_SUCCESS},
- {ACT_WRITE, "oct", "\x02\x01\x0a", 3, ASN1_SUCCESS},
- {ACT_WRITE, "id", "1 2 3 4 5", 0, ASN1_VALUE_NOT_VALID},
- {ACT_WRITE, "id", "2.5.29.2", 0, ASN1_SUCCESS},
- {ACT_READ, "id", "2.5.29.2", 9, ASN1_SUCCESS},
- {ACT_READ_LENGTH, "id", NULL, 9, ASN1_MEM_ERROR},
- {ACT_WRITE, "any1", "\x02\x01\x05", 3, ASN1_SUCCESS},
- {ACT_READ_DEFINITIONS, "TEST_TREE.id-anyTest", "2.5.29.1", 9, ASN1_SUCCESS},
- {ACT_ENCODING_LENGTH, "", 0, 20, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 19, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 200, ASN1_SUCCESS},
- {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
- {ACT_CREATE, "TEST_TREE.Sequence1", 0, 0, ASN1_SUCCESS},
- {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS},
- {ACT_DECODING_START_END, "id", "START", 7, ASN1_SUCCESS},
- {ACT_READ, "id", "2.5.29.2", 9, ASN1_SUCCESS},
- {ACT_EXPAND_ANY, "", NULL, 0, ASN1_SUCCESS},
- {ACT_EXPAND_OCTET, "oct", "id", 0, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
+ {ACT_CREATE, "TEST_TREE.Sequence1", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "int1", "v2", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_READ, "int1", "\x01", 1, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "int2", "0", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "oct", "\x02\x01\x0a", 3, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "id", "1 2 3 4 5", 0, ASN1_VALUE_NOT_VALID, __LINE__},
+ {ACT_WRITE, "id", "2.5.29.2", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_READ, "id", "2.5.29.2", 9, ASN1_SUCCESS, __LINE__},
+ {ACT_READ_LENGTH, "id", NULL, 9, ASN1_MEM_ERROR, __LINE__},
+ {ACT_WRITE, "any1", "\x02\x01\x05", 3, ASN1_SUCCESS, __LINE__},
+ {ACT_READ_DEFINITIONS, "TEST_TREE.id-anyTest", "2.5.29.1", 9, ASN1_SUCCESS,
__LINE__},
+ {ACT_ENCODING_LENGTH, "", 0, 20, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 19, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 200, ASN1_SUCCESS, __LINE__},
+ {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_CREATE, "TEST_TREE.Sequence1", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING_START_END, "id", "START", 7, ASN1_SUCCESS, __LINE__},
+ {ACT_READ, "id", "2.5.29.2", 9, ASN1_SUCCESS, __LINE__},
+ {ACT_EXPAND_ANY, "", NULL, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_EXPAND_OCTET, "oct", "id", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
/* Test: CHOICE elements */
- {ACT_CREATE, "TEST_TREE.X520LocalityName", 0, 0, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_WRITE, "", "teletexString", 0, ASN1_SUCCESS},
- {ACT_WRITE, "teletexString", "PROVA", 5, ASN1_SUCCESS},
- {ACT_ENCODING_LENGTH, "", 0, 7, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 6, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 7, ASN1_SUCCESS},
- {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
- {ACT_CREATE, "TEST_TREE.X520LocalityName", 0, 0, ASN1_SUCCESS},
- {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
+ {ACT_CREATE, "TEST_TREE.X520LocalityName", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "", "teletexString", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "teletexString", "PROVA", 5, ASN1_SUCCESS, __LINE__},
+ {ACT_ENCODING_LENGTH, "", 0, 7, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 6, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 7, ASN1_SUCCESS, __LINE__},
+ {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_CREATE, "TEST_TREE.X520LocalityName", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
/* Test: OPTIONAL elements */
- {ACT_CREATE, "TEST_TREE.DHParameter", 0, 0, ASN1_SUCCESS},
- {ACT_WRITE, "prime", "1", 0, ASN1_SUCCESS},
- {ACT_WRITE, "base", "2", 0, ASN1_SUCCESS},
- {ACT_WRITE, "privateValueLength", NULL, 0, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_ENCODING_LENGTH, "", 0, 8, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 7, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 8, ASN1_SUCCESS},
- {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
- {ACT_CREATE, "TEST_TREE.DHParameter", 0, 0, ASN1_SUCCESS},
- {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
+ {ACT_CREATE, "TEST_TREE.DHParameter", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "prime", "1", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "base", "2", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "privateValueLength", NULL, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_ENCODING_LENGTH, "", 0, 8, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 7, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 8, ASN1_SUCCESS, __LINE__},
+ {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_CREATE, "TEST_TREE.DHParameter", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
/* Test: Integer */
- {ACT_CREATE, "TEST_TREE.AnyTest2", 0, 0, ASN1_SUCCESS},
- {ACT_WRITE, "", "int", 0, ASN1_SUCCESS},
- {ACT_WRITE, "int", "0", 0, ASN1_SUCCESS},
- {ACT_ENCODING_LENGTH, "", 0, 3, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 2, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 3, ASN1_SUCCESS},
- {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_WRITE, "int", "-1", 0, ASN1_SUCCESS},
- {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS},
- {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_WRITE, "int", "1", 0, ASN1_SUCCESS},
- {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS},
- {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_WRITE, "int", "2000000000", 0, ASN1_SUCCESS},
- {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS},
- {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_WRITE, "int", "-2000000000", 0, ASN1_SUCCESS},
- {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS},
- {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_WRITE, "int", "-20000000000", 0, ASN1_SUCCESS},
- {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS},
- {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_WRITE, "int", "20000000000", 0, ASN1_SUCCESS},
- {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS},
- {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
+ {ACT_CREATE, "TEST_TREE.AnyTest2", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "", "int", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "int", "0", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_ENCODING_LENGTH, "", 0, 3, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 2, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 3, ASN1_SUCCESS, __LINE__},
+ {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "int", "-1", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS, __LINE__},
+ {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "int", "1", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS, __LINE__},
+ {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "int", "2000000000", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS, __LINE__},
+ {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "int", "-2000000000", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS, __LINE__},
+ {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "int", "-20000000000", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS, __LINE__},
+ {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "int", "20000000000", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS, __LINE__},
+ {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
/* Test: elements without names */
- {ACT_CREATE, "TEST_TREE.Sequence1", 0, 0, ASN1_SUCCESS},
- {ACT_WRITE, "int2", "10", 0, ASN1_SUCCESS},
- {ACT_WRITE, "seq", "NEW", 1, ASN1_SUCCESS},
- {ACT_WRITE, "seq.?LAST", "1", 0, ASN1_SUCCESS},
- {ACT_WRITE, "seq", "NEW", 1, ASN1_SUCCESS},
- {ACT_WRITE, "seq.?LAST", "2", 0, ASN1_SUCCESS},
- {ACT_WRITE, "any1", NULL, 0, ASN1_SUCCESS},
- {ACT_NUMBER_OF_ELEMENTS, "seq", "", 2, ASN1_SUCCESS},
- {ACT_WRITE, "id", "1.2.3.4", 0, ASN1_SUCCESS},
- {ACT_WRITE, "oct", "\x30\x03\x02\x01\x15", 5, ASN1_SUCCESS},
- {ACT_ENCODING, "int2", 0, 1024, ASN1_SUCCESS},
- {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS},
- {ACT_ENCODING, "seq.?2", 0, 2, ASN1_MEM_ERROR},
- {ACT_ENCODING, "seq.?2", 0, 3, ASN1_SUCCESS},
- {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS},
- {ACT_ENCODING_LENGTH, "", 0, 25, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 24, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 25, ASN1_SUCCESS},
- {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS},
- {ACT_CREATE, "TEST_TREE.Sequence1", 0, 0, ASN1_SUCCESS},
- {ACT_DECODING_ELEMENT, "int2", 0, 0, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_READ, "int2", "\x0a", 1, ASN1_SUCCESS},
- {ACT_READ_LENGTH, "int2", NULL, 1, ASN1_MEM_ERROR},
- {ACT_CREATE, "TEST_TREE.Sequence1", 0, 0, ASN1_SUCCESS},
- {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS},
- {ACT_DECODING_START_END, "seq.?2", "START", 10, ASN1_SUCCESS},
- {ACT_EXPAND_OCTET, "oct", "id", 0, ASN1_SUCCESS},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
+ {ACT_CREATE, "TEST_TREE.Sequence1", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "int2", "10", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "seq", "NEW", 1, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "seq.?LAST", "1", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "seq", "NEW", 1, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "seq.?LAST", "2", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "any1", NULL, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_NUMBER_OF_ELEMENTS, "seq", "", 2, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "id", "1.2.3.4", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "oct", "\x30\x03\x02\x01\x15", 5, ASN1_SUCCESS, __LINE__},
+ {ACT_ENCODING, "int2", 0, 1024, ASN1_SUCCESS, __LINE__},
+ {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_ENCODING, "seq.?2", 0, 2, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "seq.?2", 0, 3, ASN1_SUCCESS, __LINE__},
+ {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_ENCODING_LENGTH, "", 0, 25, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 24, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 25, ASN1_SUCCESS, __LINE__},
+ {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_CREATE, "TEST_TREE.Sequence1", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING_ELEMENT, "int2", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_READ, "int2", "\x0a", 1, ASN1_SUCCESS, __LINE__},
+ {ACT_READ_LENGTH, "int2", NULL, 1, ASN1_MEM_ERROR, __LINE__},
+ {ACT_CREATE, "TEST_TREE.Sequence1", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING_START_END, "seq.?2", "START", 10, ASN1_SUCCESS, __LINE__},
+ {ACT_EXPAND_OCTET, "oct", "id", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
/* Test GeneralString */
- {ACT_CREATE, "TEST_TREE.Test3", 0, 0, ASN1_SUCCESS},
- {ACT_WRITE, "a", "1234", 0, ASN1_SUCCESS},
- {ACT_WRITE, "b", "prova", 5, ASN1_SUCCESS},
- {ACT_ENCODING_LENGTH, "", 0, 17, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 16, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 17, ASN1_SUCCESS},
- {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
- {ACT_CREATE, "TEST_TREE.Test3", 0, 0, ASN1_SUCCESS},
- {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS},
- {ACT_DECODING_ELEMENT, "b", 0, 0, ASN1_SUCCESS},
- {ACT_READ, "b", "prova", 5, ASN1_SUCCESS},
- {ACT_READ_LENGTH, "b", NULL, 5, ASN1_MEM_ERROR},
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
+ {ACT_CREATE, "TEST_TREE.Test3", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "a", "1234", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "b", "prova", 5, ASN1_SUCCESS, __LINE__},
+ {ACT_ENCODING_LENGTH, "", 0, 17, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 16, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 17, ASN1_SUCCESS, __LINE__},
+ {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_CREATE, "TEST_TREE.Test3", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING_ELEMENT, "b", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_READ, "b", "prova", 5, ASN1_SUCCESS, __LINE__},
+ {ACT_READ_LENGTH, "b", NULL, 5, ASN1_MEM_ERROR, __LINE__},
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
/* Bug regression test: Empty write on 64-bit platforms */
- {ACT_CREATE, "TEST_TREE.Checksum", 0, 0, ASN1_SUCCESS},
- {ACT_WRITE, "checksum", "foo", 0, ASN1_SUCCESS},
- {ACT_WRITE, "checksum", "", 0, ASN1_SUCCESS},
- {ACT_ENCODING_LENGTH, "", 0, 4, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 3, ASN1_MEM_ERROR},
- {ACT_ENCODING, "", 0, 4, ASN1_SUCCESS},
- {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
- {ACT_CREATE, "TEST_TREE.Checksum", 0, 0, ASN1_SUCCESS},
- {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS},
- {ACT_DECODING_ELEMENT, "checksum", 0, 0, ASN1_SUCCESS},
- {ACT_READ, "checksum", "", 0, ASN1_SUCCESS},
- {ACT_READ_LENGTH, "checksum", NULL, 0, ASN1_SUCCESS}, /* MEM_FAILURE?
*/
- {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS},
- {ACT_DELETE, "", "", 0, ASN1_SUCCESS},
+ {ACT_CREATE, "TEST_TREE.Checksum", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "checksum", "foo", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_WRITE, "checksum", "", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_ENCODING_LENGTH, "", 0, 4, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 3, ASN1_MEM_ERROR, __LINE__},
+ {ACT_ENCODING, "", 0, 4, ASN1_SUCCESS, __LINE__},
+ {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_CREATE, "TEST_TREE.Checksum", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_DECODING_ELEMENT, "checksum", 0, 0, ASN1_SUCCESS, __LINE__},
+ {ACT_READ, "checksum", "", 0, ASN1_SUCCESS, __LINE__},
+ {ACT_READ_LENGTH, "checksum", NULL, 0, ASN1_SUCCESS, __LINE__}, /*
MEM_FAILURE? */
+ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__},
+ {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__},
/* end */
{ACT_NULL}
@@ -429,6 +430,8 @@ test_type test_array[] = {
};
+#define error() fprintf(stderr, "Error at line %d\n", __LINE__); exit(1)
+
int
main (int argc, char *argv[])
{
@@ -625,25 +628,27 @@ main (int argc, char *argv[])
if (result != test->errorNumber)
{
errorCounter++;
- printf ("ERROR N. %d:\n", errorCounter);
+ printf ("ERROR in %d:\n", test->line);
printf (" Action %d - %s - %s - %d\n", test->action,
test->par1, test->par2, test->par3);
printf (" Error expected: %s\n",
asn1_strerror (test->errorNumber));
printf (" Error detected: %s\n\n", asn1_strerror (result));
+ error();
}
break;
case ACT_DECODING_ELEMENT:
if (result != test->errorNumber)
{
errorCounter++;
- printf ("ERROR N. %d:\n", errorCounter);
+ printf ("ERROR in %d:\n", test->line);
printf (" Action %d - %s - %s - %d\n", test->action,
test->par1, test->par2, test->par3);
printf (" Error expected: %s\n",
asn1_strerror (test->errorNumber));
printf (" Error detected: %s\n", asn1_strerror (result));
printf (" Error description : %s\n\n", errorDescription);
+ error();
}
break;
case ACT_NUMBER_OF_ELEMENTS:
@@ -651,24 +656,26 @@ main (int argc, char *argv[])
if ((result != test->errorNumber) || (valueLen != test->par3))
{
errorCounter++;
- printf ("ERROR N. %d:\n", errorCounter);
+ printf ("ERROR in %d:\n", test->line);
printf (" Action %d - %s\n", test->action, test->par1);
printf (" Error expected: %s - %d\n",
asn1_strerror (test->errorNumber), test->par3);
printf (" Error detected: %s - %d\n\n", asn1_strerror (result),
valueLen);
+ error();
}
break;
case ACT_ENCODING_LENGTH:
if ((result != test->errorNumber) || (der_len != test->par3))
{
errorCounter++;
- printf ("ERROR N. %d:\n", errorCounter);
+ printf ("ERROR in %d:\n", test->line);
printf (" Action %d - %s\n", test->action, test->par1);
printf (" Error expected: %s - %d\n",
asn1_strerror (test->errorNumber), test->par3);
printf (" Error detected: %s - %d\n\n", asn1_strerror (result),
der_len);
+ error();
}
break;
case ACT_OID_2_STRUCTURE:
@@ -678,11 +685,12 @@ main (int argc, char *argv[])
&& (strcmp (str_p, test->par2))))
{
errorCounter++;
- printf ("ERROR N. %d:\n", errorCounter);
+ printf ("ERROR in %d:\n", test->line);
printf (" Action %d - %s\n", test->action, test->par1);
printf (" Error expected: %s - %s\n",
asn1_strerror (test->errorNumber), test->par2);
printf (" Value detected: %s\n\n", str_p);
+ error();
}
break;
case ACT_DECODING_START_END:
@@ -691,7 +699,7 @@ main (int argc, char *argv[])
((!strcmp (test->par2, "END")) && (end != test->par3)))
{
errorCounter++;
- printf ("ERROR N. %d:\n", errorCounter);
+ printf ("ERROR in %d:\n", test->line);
printf (" Action %d - %s - %d\n", test->action, test->par1,
test->par3);
printf (" Error expected: %s - %s - %d\n",
@@ -699,6 +707,7 @@ main (int argc, char *argv[])
test->par3);
printf (" Error detected: %s - %d - %d\n\n",
asn1_strerror (result), start, end);
+ error();
}
break;
@@ -708,7 +717,7 @@ main (int argc, char *argv[])
((!strcmp (test->par2, "CLASS")) && (class != test->par3)))
{
errorCounter++;
- printf ("ERROR N. %d:\n", errorCounter);
+ printf ("ERROR in %d:\n", test->line);
printf (" Action %d - %s - %d\n", test->action, test->par1,
test->par3);
printf (" Error expected: %s - %s - %d\n",
@@ -716,6 +725,7 @@ main (int argc, char *argv[])
test->par3);
printf (" Error detected: %s - %d - %d\n\n",
asn1_strerror (result), tag, class);
+ error();
}
break;
@@ -746,7 +756,7 @@ main (int argc, char *argv[])
(valueLen != test->par3) || (k == -1))
{
errorCounter++;
- printf ("ERROR N. %d:\n", errorCounter);
+ printf ("ERROR in %d:\n", test->line);
printf (" Action %d - %s\n", test->action, test->par1);
printf (" Error expected: %s - %d - ",
asn1_strerror (test->errorNumber), test->par3);
@@ -758,6 +768,7 @@ main (int argc, char *argv[])
printf ("%02x", value[k]);
printf ("\n\n");
+ error();
}
break;
hooks/post-receive
--
GNU libtasn1
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [SCM] GNU libtasn1 branch, master, updated. libtasn1_3_0-33-g8cd1f61,
Nikos Mavrogiannopoulos <=