libtasn1-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] GNU libtasn1 branch, master, updated. libtasn1_3_0-14-geba04f5


From: Nikos Mavrogiannopoulos
Subject: [SCM] GNU libtasn1 branch, master, updated. libtasn1_3_0-14-geba04f5
Date: Thu, 22 Nov 2012 18:39:30 +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=eba04f5f91b62c33a800ed8cf3325a4d82e12dd5

The branch, master has been updated
       via  eba04f5f91b62c33a800ed8cf3325a4d82e12dd5 (commit)
      from  3b545f01f74778112769ef1a1225324d6428423a (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 eba04f5f91b62c33a800ed8cf3325a4d82e12dd5
Author: Nikos Mavrogiannopoulos <address@hidden>
Date:   Thu Nov 22 19:38:38 2012 +0100

    small simplifications

-----------------------------------------------------------------------

Summary of changes:
 lib/coding.c    |   61 +++++++++++++++++---------------------------------
 lib/decoding.c  |    3 +-
 lib/element.c   |   21 +----------------
 lib/int.h       |   24 ++++++++++++++++++++
 lib/structure.c |   66 ++++--------------------------------------------------
 5 files changed, 53 insertions(+), 122 deletions(-)

diff --git a/lib/coding.c b/lib/coding.c
index af5c1b7..ba59257 100644
--- a/lib/coding.c
+++ b/lib/coding.c
@@ -431,26 +431,26 @@ _asn1_complete_explicit_tag (asn1_node node, unsigned 
char *der,
 
 tag_and_class_st _asn1_tags[] =
 {
-  [ASN1_ETYPE_GENERALSTRING] = {ASN1_TAG_GENERALSTRING, ASN1_CLASS_UNIVERSAL},
-  [ASN1_ETYPE_NUMERICSTRING] = {ASN1_TAG_NUMERICSTRING, ASN1_CLASS_UNIVERSAL},
-  [ASN1_ETYPE_IA5STRING] =     {ASN1_TAG_IA5STRING, ASN1_CLASS_UNIVERSAL},
-  [ASN1_ETYPE_TELETEXSTRING] = {ASN1_TAG_TELETEXSTRING, ASN1_CLASS_UNIVERSAL},
-  [ASN1_ETYPE_PRINTABLESTRING] = {ASN1_TAG_PRINTABLESTRING, 
ASN1_CLASS_UNIVERSAL},
-  [ASN1_ETYPE_UNIVERSALSTRING] = {ASN1_TAG_UNIVERSALSTRING, 
ASN1_CLASS_UNIVERSAL},
-  [ASN1_ETYPE_BMPSTRING] =     {ASN1_TAG_BMPSTRING, ASN1_CLASS_UNIVERSAL},
-  [ASN1_ETYPE_UTF8STRING] =    {ASN1_TAG_UTF8STRING, ASN1_CLASS_UNIVERSAL},
-  [ASN1_ETYPE_VISIBLESTRING] = {ASN1_TAG_VISIBLESTRING, ASN1_CLASS_UNIVERSAL},
-  [ASN1_ETYPE_OCTET_STRING] = {ASN1_TAG_OCTET_STRING, ASN1_CLASS_UNIVERSAL},
-  [ASN1_ETYPE_BIT_STRING] = {ASN1_TAG_BIT_STRING, ASN1_CLASS_UNIVERSAL},
-  [ASN1_ETYPE_OBJECT_ID] =  {ASN1_TAG_OBJECT_ID, ASN1_CLASS_UNIVERSAL},
-  [ASN1_ETYPE_NULL] =       {ASN1_TAG_NULL, ASN1_CLASS_UNIVERSAL},
-  [ASN1_ETYPE_BOOLEAN] =    {ASN1_TAG_BOOLEAN, ASN1_CLASS_UNIVERSAL},
-  [ASN1_ETYPE_INTEGER] =    {ASN1_TAG_INTEGER, ASN1_CLASS_UNIVERSAL},
-  [ASN1_ETYPE_ENUMERATED] = {ASN1_TAG_ENUMERATED, ASN1_CLASS_UNIVERSAL},
-  [ASN1_ETYPE_SEQUENCE] =   {ASN1_TAG_SEQUENCE, ASN1_CLASS_UNIVERSAL | 
ASN1_CLASS_STRUCTURED},
-  [ASN1_ETYPE_SEQUENCE_OF] ={ASN1_TAG_SEQUENCE, ASN1_CLASS_UNIVERSAL | 
ASN1_CLASS_STRUCTURED},
-  [ASN1_ETYPE_SET] =        {ASN1_TAG_SET, ASN1_CLASS_UNIVERSAL | 
ASN1_CLASS_STRUCTURED},
-  [ASN1_ETYPE_SET_OF] =     {ASN1_TAG_SET, ASN1_CLASS_UNIVERSAL | 
ASN1_CLASS_STRUCTURED},
+  [ASN1_ETYPE_GENERALSTRING] = {ASN1_TAG_GENERALSTRING, ASN1_CLASS_UNIVERSAL, 
"type:GENERALSTRING"},
+  [ASN1_ETYPE_NUMERICSTRING] = {ASN1_TAG_NUMERICSTRING, ASN1_CLASS_UNIVERSAL, 
"type:NUMERIC_STR"},
+  [ASN1_ETYPE_IA5STRING] =     {ASN1_TAG_IA5STRING, ASN1_CLASS_UNIVERSAL, 
"type:IA5_STR"},
+  [ASN1_ETYPE_TELETEXSTRING] = {ASN1_TAG_TELETEXSTRING, ASN1_CLASS_UNIVERSAL, 
"type:TELETEX_STR"},
+  [ASN1_ETYPE_PRINTABLESTRING] = {ASN1_TAG_PRINTABLESTRING, 
ASN1_CLASS_UNIVERSAL, "type:PRINTABLE_STR"},
+  [ASN1_ETYPE_UNIVERSALSTRING] = {ASN1_TAG_UNIVERSALSTRING, 
ASN1_CLASS_UNIVERSAL, "type:UNIVERSAL_STR"},
+  [ASN1_ETYPE_BMPSTRING] =     {ASN1_TAG_BMPSTRING, ASN1_CLASS_UNIVERSAL, 
"type:BMP_STR"},
+  [ASN1_ETYPE_UTF8STRING] =    {ASN1_TAG_UTF8STRING, ASN1_CLASS_UNIVERSAL, 
"type:UTF8_STR"},
+  [ASN1_ETYPE_VISIBLESTRING] = {ASN1_TAG_VISIBLESTRING, 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_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"},
+  [ASN1_ETYPE_ENUMERATED] = {ASN1_TAG_ENUMERATED, ASN1_CLASS_UNIVERSAL, 
"type:ENUMERATED"},
+  [ASN1_ETYPE_SEQUENCE] =   {ASN1_TAG_SEQUENCE, ASN1_CLASS_UNIVERSAL | 
ASN1_CLASS_STRUCTURED, "type:SEQUENCE"},
+  [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"},
 };
 
 /******************************************************/
@@ -554,26 +554,7 @@ _asn1_insert_tag_der (asn1_node node, unsigned char *der, 
int *counter,
            _asn1_tag_der (ASN1_CLASS_UNIVERSAL, ASN1_TAG_GENERALIZEDTime,
                           tag_der, &tag_len);
          break;
-       case ASN1_ETYPE_OBJECT_ID:
-       case ASN1_ETYPE_OCTET_STRING:
-       case ASN1_ETYPE_GENERALSTRING:
-       case ASN1_ETYPE_NUMERICSTRING:
-       case ASN1_ETYPE_IA5STRING:
-       case ASN1_ETYPE_TELETEXSTRING:
-       case ASN1_ETYPE_PRINTABLESTRING:
-       case ASN1_ETYPE_UNIVERSALSTRING:
-       case ASN1_ETYPE_BMPSTRING:
-       case ASN1_ETYPE_UTF8STRING:
-       case ASN1_ETYPE_VISIBLESTRING:
-       case ASN1_ETYPE_BIT_STRING:
-       case ASN1_ETYPE_NULL:
-       case ASN1_ETYPE_BOOLEAN:
-       case ASN1_ETYPE_INTEGER:
-       case ASN1_ETYPE_ENUMERATED:
-       case ASN1_ETYPE_SEQUENCE:
-       case ASN1_ETYPE_SEQUENCE_OF:
-       case ASN1_ETYPE_SET:
-       case ASN1_ETYPE_SET_OF:
+        CASE_TAGGED_TYPES:
          _asn1_tag_der (_asn1_tags[type].class, _asn1_tags[type].tag,
                         tag_der, &tag_len);
          break;
diff --git a/lib/decoding.c b/lib/decoding.c
index 5a844b8..eb4ca0e 100644
--- a/lib/decoding.c
+++ b/lib/decoding.c
@@ -531,7 +531,8 @@ _asn1_extract_tag_der (asn1_node node, const unsigned char 
*der, int der_len,
          break;
 
        case ASN1_ETYPE_OCTET_STRING:
-         /* does it need to be structured??? --nmav */
+         /* OCTET STRING is handled differently to allow
+          * BER encodings (structured class). */
          if (((class != ASN1_CLASS_UNIVERSAL)
               && (class != (ASN1_CLASS_UNIVERSAL | ASN1_CLASS_STRUCTURED)))
              || (tag != ASN1_TAG_OCTET_STRING))
diff --git a/lib/element.c b/lib/element.c
index 2c6a2fd..f1d002e 100644
--- a/lib/element.c
+++ b/lib/element.c
@@ -926,26 +926,7 @@ asn1_read_tag (asn1_node root, const char *name, int 
*tagValue,
 
       switch (type)
        {
-       case ASN1_ETYPE_NULL:
-       case ASN1_ETYPE_BOOLEAN:
-       case ASN1_ETYPE_INTEGER:
-       case ASN1_ETYPE_ENUMERATED:
-       case ASN1_ETYPE_OBJECT_ID:
-       case ASN1_ETYPE_OCTET_STRING:
-       case ASN1_ETYPE_GENERALSTRING:
-        case ASN1_ETYPE_NUMERICSTRING:
-        case ASN1_ETYPE_IA5STRING:
-        case ASN1_ETYPE_TELETEXSTRING:
-        case ASN1_ETYPE_PRINTABLESTRING:
-        case ASN1_ETYPE_UNIVERSALSTRING:
-        case ASN1_ETYPE_BMPSTRING:
-        case ASN1_ETYPE_UTF8STRING:
-        case ASN1_ETYPE_VISIBLESTRING:
-       case ASN1_ETYPE_BIT_STRING:
-       case ASN1_ETYPE_SEQUENCE:
-       case ASN1_ETYPE_SEQUENCE_OF:
-       case ASN1_ETYPE_SET:
-       case ASN1_ETYPE_SET_OF:
+       CASE_TAGGED_TYPES:
          *tagValue = _asn1_tags[type].tag;
          break;
        case ASN1_ETYPE_TIME:
diff --git a/lib/int.h b/lib/int.h
index 7791906..7dedd88 100644
--- a/lib/int.h
+++ b/lib/int.h
@@ -61,8 +61,32 @@ struct asn1_node_st
 typedef struct tag_and_class_st {
   unsigned tag;
   unsigned class;
+  const char* desc;
 } tag_and_class_st;
 
+/* the types that are handled in _asn1_tags */
+#define CASE_TAGGED_TYPES \
+       case ASN1_ETYPE_NULL: \
+       case ASN1_ETYPE_BOOLEAN: \
+       case ASN1_ETYPE_INTEGER: \
+       case ASN1_ETYPE_ENUMERATED: \
+       case ASN1_ETYPE_OBJECT_ID: \
+       case ASN1_ETYPE_OCTET_STRING: \
+       case ASN1_ETYPE_GENERALSTRING: \
+        case ASN1_ETYPE_NUMERICSTRING: \
+        case ASN1_ETYPE_IA5STRING: \
+        case ASN1_ETYPE_TELETEXSTRING: \
+        case ASN1_ETYPE_PRINTABLESTRING: \
+        case ASN1_ETYPE_UNIVERSALSTRING: \
+        case ASN1_ETYPE_BMPSTRING: \
+        case ASN1_ETYPE_UTF8STRING: \
+        case ASN1_ETYPE_VISIBLESTRING: \
+       case ASN1_ETYPE_BIT_STRING: \
+       case ASN1_ETYPE_SEQUENCE: \
+       case ASN1_ETYPE_SEQUENCE_OF: \
+       case ASN1_ETYPE_SET: \
+       case ASN1_ETYPE_SET_OF
+
 extern tag_and_class_st _asn1_tags[];
 
 #define _asn1_strlen(s) strlen((const char *) s)
diff --git a/lib/structure.c b/lib/structure.c
index 34fd6f0..eee15a3 100644
--- a/lib/structure.c
+++ b/lib/structure.c
@@ -732,7 +732,8 @@ asn1_print_structure (FILE * out, asn1_node structure, 
const char *name,
 
       if (mode != ASN1_PRINT_NAME)
        {
-         switch (type_field (p->type))
+         unsigned type = type_field (p->type);
+         switch (type)
            {
            case ASN1_ETYPE_CONSTANT:
              if (mode == ASN1_PRINT_ALL)
@@ -749,81 +750,24 @@ asn1_print_structure (FILE * out, asn1_node structure, 
const char *name,
            case ASN1_ETYPE_DEFAULT:
              fprintf (out, "type:DEFAULT");
              break;
-           case ASN1_ETYPE_NULL:
-             fprintf (out, "type:NULL");
-             break;
            case ASN1_ETYPE_IDENTIFIER:
              fprintf (out, "type:IDENTIFIER");
              break;
-           case ASN1_ETYPE_INTEGER:
-             fprintf (out, "type:INTEGER");
-             break;
-           case ASN1_ETYPE_ENUMERATED:
-             fprintf (out, "type:ENUMERATED");
-             break;
            case ASN1_ETYPE_TIME:
              fprintf (out, "type:TIME");
              break;
-           case ASN1_ETYPE_BOOLEAN:
-             fprintf (out, "type:BOOLEAN");
-             break;
-           case ASN1_ETYPE_SEQUENCE:
-             fprintf (out, "type:SEQUENCE");
-             break;
-           case ASN1_ETYPE_BIT_STRING:
-             fprintf (out, "type:BIT_STR");
-             break;
-           case ASN1_ETYPE_OCTET_STRING:
-             fprintf (out, "type:OCT_STR");
-             break;
-           case ASN1_ETYPE_GENERALSTRING:
-             fprintf (out, "type:GENERALSTRING");
-             break;
-           case ASN1_ETYPE_NUMERICSTRING:
-             fprintf (out, "type:NUMERICSTRING");
-             break;
-           case ASN1_ETYPE_IA5STRING:
-             fprintf (out, "type:IA5STRING");
-             break;
-           case ASN1_ETYPE_TELETEXSTRING:
-             fprintf (out, "type:TELETEXSTRING");
-             break;
-           case ASN1_ETYPE_PRINTABLESTRING:
-             fprintf (out, "type:PRINTABLESTRING");
-             break;
-           case ASN1_ETYPE_UNIVERSALSTRING:
-             fprintf (out, "type:UNIVERSALSTRING");
-             break;
-           case ASN1_ETYPE_BMPSTRING:
-             fprintf (out, "type:BMPSTRING");
-             break;
-           case ASN1_ETYPE_UTF8STRING:
-             fprintf (out, "type:UTF8STRING");
-             break;
-           case ASN1_ETYPE_VISIBLESTRING:
-             fprintf (out, "type:VISIBLESTRING");
-             break;
-           case ASN1_ETYPE_SEQUENCE_OF:
-             fprintf (out, "type:SEQ_OF");
-             break;
-           case ASN1_ETYPE_OBJECT_ID:
-             fprintf (out, "type:OBJ_ID");
-             break;
            case ASN1_ETYPE_ANY:
              fprintf (out, "type:ANY");
              break;
-           case ASN1_ETYPE_SET:
-             fprintf (out, "type:SET");
-             break;
-           case ASN1_ETYPE_SET_OF:
-             fprintf (out, "type:SET_OF");
-             break;
            case ASN1_ETYPE_CHOICE:
              fprintf (out, "type:CHOICE");
              break;
            case ASN1_ETYPE_DEFINITIONS:
              fprintf (out, "type:DEFINITIONS");
              break;
+            CASE_TAGGED_TYPES:
+             fprintf (out, "%s", _asn1_tags[type].desc);
+             break;
            default:
              break;
            }


hooks/post-receive
-- 
GNU libtasn1



reply via email to

[Prev in Thread] Current Thread [Next in Thread]