svn rev #25688: trunk/src/lib/krb5/asn.1/

ghudson@MIT.EDU ghudson at MIT.EDU
Sat Feb 11 18:25:08 EST 2012


http://src.mit.edu/fisheye/changelog/krb5/?cs=25688
Commit By: ghudson
Log Message:
Eliminate some unused ASN.1 encoding primitives

asn1_make.c contained a variety of utility functions, most of which we
no longer needed.  Fold make_tag into asn1_encode.c and get rid of
asn1_make.c and asn1_make.h.


Changed Files:
U   trunk/src/lib/krb5/asn.1/Makefile.in
U   trunk/src/lib/krb5/asn.1/asn1_encode.c
U   trunk/src/lib/krb5/asn.1/asn1_k_encode.c
D   trunk/src/lib/krb5/asn.1/asn1_make.c
D   trunk/src/lib/krb5/asn.1/asn1_make.h
U   trunk/src/lib/krb5/asn.1/deps
U   trunk/src/lib/krb5/asn.1/ldap_key_seq.c
Modified: trunk/src/lib/krb5/asn.1/Makefile.in
===================================================================
--- trunk/src/lib/krb5/asn.1/Makefile.in	2012-02-11 23:25:04 UTC (rev 25687)
+++ trunk/src/lib/krb5/asn.1/Makefile.in	2012-02-11 23:25:08 UTC (rev 25688)
@@ -16,7 +16,6 @@
 	asn1_k_decode_sam.o\
 	asn1_encode.o\
 	asn1_get.o\
-	asn1_make.o\
 	asn1buf.o\
 	krb5_decode.o\
 	krb5_decode_kdc.o\
@@ -32,7 +31,6 @@
 	$(srcdir)/asn1_k_decode_sam.c\
 	$(srcdir)/asn1_encode.c\
 	$(srcdir)/asn1_get.c\
-	$(srcdir)/asn1_make.c\
 	$(srcdir)/asn1buf.c\
 	$(srcdir)/krb5_decode.c\
 	$(srcdir)/krb5_decode_kdc.c\
@@ -48,7 +46,6 @@
 	$(OUTPRE)asn1_k_decode_sam.$(OBJEXT)\
 	$(OUTPRE)asn1_encode.$(OBJEXT)\
 	$(OUTPRE)asn1_get.$(OBJEXT)\
-	$(OUTPRE)asn1_make.$(OBJEXT)\
 	$(OUTPRE)asn1buf.$(OBJEXT)\
 	$(OUTPRE)krb5_decode.$(OBJEXT)\
 	$(OUTPRE)krb5_decode_kdc.$(OBJEXT)\

Modified: trunk/src/lib/krb5/asn.1/asn1_encode.c
===================================================================
--- trunk/src/lib/krb5/asn.1/asn1_encode.c	2012-02-11 23:25:04 UTC (rev 25687)
+++ trunk/src/lib/krb5/asn.1/asn1_encode.c	2012-02-11 23:25:08 UTC (rev 25688)
@@ -27,7 +27,6 @@
 /* ASN.1 primitive encoders */
 
 #include "asn1_encode.h"
-#include "asn1_make.h"
 
 asn1_error_code
 asn1_encode_boolean(asn1buf *buf, asn1_intmax val, unsigned int *retlen)
@@ -172,6 +171,71 @@
     return asn1buf_insert_octet(buf, '\0');
 }
 
+static asn1_error_code
+make_tag(asn1buf *buf, const taginfo *t, unsigned int *retlen)
+{
+    asn1_error_code ret;
+    asn1_tagnum tag_copy;
+    unsigned int sum = 0, length, len_copy;
+
+    if (t->tagnum > ASN1_TAGNUM_MAX)
+        return ASN1_OVERFLOW;
+
+    /* Encode the length of the content within the tag. */
+    if (t->length < 128) {
+        ret = asn1buf_insert_octet(buf, t->length & 0x7F);
+        if (ret)
+            return ret;
+        length = 1;
+    } else {
+        length = 0;
+        for (len_copy = t->length; len_copy != 0; len_copy >>= 8) {
+            ret = asn1buf_insert_octet(buf, len_copy & 0xFF);
+            if (ret)
+                return ret;
+            length++;
+        }
+        ret = asn1buf_insert_octet(buf, 0x80 | (length & 0x7F));
+        if (ret)
+            return ret;
+        length++;
+    }
+    sum += length;
+
+    /* Encode the tag and construction bit. */
+    if (t->tagnum < 31) {
+        ret = asn1buf_insert_octet(buf,
+                                   t->asn1class | t->construction | t->tagnum);
+        if (ret)
+            return ret;
+        length = 1;
+    } else {
+        tag_copy = t->tagnum;
+        length = 0;
+        ret = asn1buf_insert_octet(buf, tag_copy & 0x7F);
+        if (ret)
+            return ret;
+        tag_copy >>= 7;
+        length++;
+
+        for (; tag_copy != 0; tag_copy >>= 7) {
+            ret = asn1buf_insert_octet(buf, 0x80 | (tag_copy & 0x7F));
+            if (ret)
+                return ret;
+            length++;
+        }
+
+        ret = asn1buf_insert_octet(buf, t->asn1class | t->construction | 0x1F);
+        if (ret)
+            return ret;
+        length++;
+    }
+    sum += length;
+
+    *retlen = sum;
+    return 0;
+}
+
 /*
  * ASN.1 constructed type encoder engine
  *
@@ -381,9 +445,7 @@
             return retval;
         if (!tag->implicit) {
             unsigned int tlen;
-            retval = asn1_make_tag(buf, rettag->asn1class,
-                                   rettag->construction, rettag->tagnum,
-                                   rettag->length, &tlen);
+            retval = make_tag(buf, rettag, &tlen);
             if (retval)
                 return retval;
             rettag->length += tlen;
@@ -441,8 +503,7 @@
     retval = krb5int_asn1_encode_type(buf, val, a, &t);
     if (retval)
         return retval;
-    retval = asn1_make_tag(buf, t.asn1class, t.construction, t.tagnum,
-                           t.length, &tlen);
+    retval = make_tag(buf, &t, &tlen);
     if (retval)
         return retval;
     *retlen = t.length + tlen;

Modified: trunk/src/lib/krb5/asn.1/asn1_k_encode.c
===================================================================
--- trunk/src/lib/krb5/asn.1/asn1_k_encode.c	2012-02-11 23:25:04 UTC (rev 25687)
+++ trunk/src/lib/krb5/asn.1/asn1_k_encode.c	2012-02-11 23:25:08 UTC (rev 25688)
@@ -24,7 +24,6 @@
  * or implied warranty.
  */
 
-#include "asn1_make.h"
 #include "asn1_encode.h"
 #include <assert.h>
 

Modified: trunk/src/lib/krb5/asn.1/deps
===================================================================
--- trunk/src/lib/krb5/asn.1/deps	2012-02-11 23:25:04 UTC (rev 25687)
+++ trunk/src/lib/krb5/asn.1/deps	2012-02-11 23:25:08 UTC (rev 25688)
@@ -76,7 +76,7 @@
   $(top_srcdir)/include/krb5/authdata_plugin.h $(top_srcdir)/include/krb5/plugin.h \
   $(top_srcdir)/include/krb5/preauth_plugin.h $(top_srcdir)/include/port-sockets.h \
   $(top_srcdir)/include/socket-utils.h asn1_encode.c \
-  asn1_encode.h asn1_make.h asn1buf.h krbasn1.h
+  asn1_encode.h asn1_get.h asn1buf.h krbasn1.h
 asn1_get.so asn1_get.po $(OUTPRE)asn1_get.$(OBJEXT): \
   $(BUILDTOP)/include/autoconf.h $(BUILDTOP)/include/krb5/krb5.h \
   $(BUILDTOP)/include/osconf.h $(BUILDTOP)/include/profile.h \
@@ -89,18 +89,6 @@
   $(top_srcdir)/include/krb5/preauth_plugin.h $(top_srcdir)/include/port-sockets.h \
   $(top_srcdir)/include/socket-utils.h asn1_get.c asn1_get.h \
   asn1buf.h krbasn1.h
-asn1_make.so asn1_make.po $(OUTPRE)asn1_make.$(OBJEXT): \
-  $(BUILDTOP)/include/autoconf.h $(BUILDTOP)/include/krb5/krb5.h \
-  $(BUILDTOP)/include/osconf.h $(BUILDTOP)/include/profile.h \
-  $(COM_ERR_DEPS) $(top_srcdir)/include/k5-buf.h $(top_srcdir)/include/k5-err.h \
-  $(top_srcdir)/include/k5-gmt_mktime.h $(top_srcdir)/include/k5-int-pkinit.h \
-  $(top_srcdir)/include/k5-int.h $(top_srcdir)/include/k5-platform.h \
-  $(top_srcdir)/include/k5-plugin.h $(top_srcdir)/include/k5-thread.h \
-  $(top_srcdir)/include/k5-trace.h $(top_srcdir)/include/krb5.h \
-  $(top_srcdir)/include/krb5/authdata_plugin.h $(top_srcdir)/include/krb5/plugin.h \
-  $(top_srcdir)/include/krb5/preauth_plugin.h $(top_srcdir)/include/port-sockets.h \
-  $(top_srcdir)/include/socket-utils.h asn1_make.c asn1_make.h \
-  asn1buf.h krbasn1.h
 asn1buf.so asn1buf.po $(OUTPRE)asn1buf.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \
   $(BUILDTOP)/include/krb5/krb5.h $(BUILDTOP)/include/osconf.h \
   $(BUILDTOP)/include/profile.h $(COM_ERR_DEPS) $(top_srcdir)/include/k5-buf.h \
@@ -149,7 +137,7 @@
   $(top_srcdir)/include/krb5/authdata_plugin.h $(top_srcdir)/include/krb5/plugin.h \
   $(top_srcdir)/include/krb5/preauth_plugin.h $(top_srcdir)/include/port-sockets.h \
   $(top_srcdir)/include/socket-utils.h asn1_encode.h \
-  asn1_k_encode.c asn1_make.h asn1buf.h krbasn1.h
+  asn1_get.h asn1_k_encode.c asn1buf.h krbasn1.h
 ldap_key_seq.so ldap_key_seq.po $(OUTPRE)ldap_key_seq.$(OBJEXT): \
   $(BUILDTOP)/include/autoconf.h $(BUILDTOP)/include/krb5/krb5.h \
   $(BUILDTOP)/include/osconf.h $(BUILDTOP)/include/profile.h \
@@ -161,8 +149,8 @@
   $(top_srcdir)/include/krb5.h $(top_srcdir)/include/krb5/authdata_plugin.h \
   $(top_srcdir)/include/krb5/plugin.h $(top_srcdir)/include/krb5/preauth_plugin.h \
   $(top_srcdir)/include/port-sockets.h $(top_srcdir)/include/socket-utils.h \
-  asn1_decode.h asn1_encode.h asn1_get.h asn1_make.h \
-  asn1buf.h krbasn1.h ldap_key_seq.c
+  asn1_decode.h asn1_encode.h asn1_get.h asn1buf.h krbasn1.h \
+  ldap_key_seq.c
 asn1_misc.so asn1_misc.po $(OUTPRE)asn1_misc.$(OBJEXT): \
   $(BUILDTOP)/include/autoconf.h $(BUILDTOP)/include/krb5/krb5.h \
   $(BUILDTOP)/include/osconf.h $(BUILDTOP)/include/profile.h \

Modified: trunk/src/lib/krb5/asn.1/ldap_key_seq.c
===================================================================
--- trunk/src/lib/krb5/asn.1/ldap_key_seq.c	2012-02-11 23:25:04 UTC (rev 25687)
+++ trunk/src/lib/krb5/asn.1/ldap_key_seq.c	2012-02-11 23:25:08 UTC (rev 25688)
@@ -38,7 +38,6 @@
 #include "krbasn1.h"
 #include "asn1_encode.h"
 #include "asn1_decode.h"
-#include "asn1_make.h"
 #include "asn1_get.h"
 
 #ifdef ENABLE_LDAP



More information about the cvs-krb5 mailing list