reduced generated code by 1/5
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@1347 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
100
lib/asn1/gen.c
100
lib/asn1/gen.c
@@ -214,17 +214,12 @@ encode_type (char *name, Type *t)
|
|||||||
"len -= 2;\n"
|
"len -= 2;\n"
|
||||||
"ret += 2;\n"
|
"ret += 2;\n"
|
||||||
"}\n\n"
|
"}\n\n"
|
||||||
"l = der_put_length (p, len, ret);\n"
|
"l = der_put_length_and_tag (p, len, ret, UNIV, PRIM,"
|
||||||
|
"UT_BitString);\n"
|
||||||
"if(l < 0)\n"
|
"if(l < 0)\n"
|
||||||
" return l;\n"
|
" return l;\n"
|
||||||
"p -= l;\n"
|
"p -= l;\n"
|
||||||
"len -= l;\n"
|
"len -= l;\n"
|
||||||
"ret += l;\n\n"
|
|
||||||
"l = der_put_tag (p, len, UNIV, PRIM, UT_BitString);\n"
|
|
||||||
"if(l < 0)\n"
|
|
||||||
"return l;\n"
|
|
||||||
"p -= l;\n"
|
|
||||||
"len -= l;\n"
|
|
||||||
"ret += l;\n\n",
|
"ret += l;\n\n",
|
||||||
rest);
|
rest);
|
||||||
break;
|
break;
|
||||||
@@ -249,17 +244,11 @@ encode_type (char *name, Type *t)
|
|||||||
"ret = 0;\n");
|
"ret = 0;\n");
|
||||||
encode_type (s, m->type);
|
encode_type (s, m->type);
|
||||||
fprintf (codefile,
|
fprintf (codefile,
|
||||||
"l = der_put_length (p, len, ret);\n"
|
"l = der_put_length_and_tag (p, len, ret, CONTEXT, CONS, %d);\n"
|
||||||
"if (l < 0)\n"
|
"if (l < 0)\n"
|
||||||
"return l;\n"
|
"return l;\n"
|
||||||
"p -= l;\n"
|
"p -= l;\n"
|
||||||
"len -= l;\n"
|
"len -= l;\n"
|
||||||
"ret += l;\n\n"
|
|
||||||
"l = der_put_tag (p, len, CONTEXT, CONS, %d);\n"
|
|
||||||
"if(l < 0)\n"
|
|
||||||
"return l;\n"
|
|
||||||
"p -= l;\n"
|
|
||||||
"len -= l;\n"
|
|
||||||
"ret += l;\n\n",
|
"ret += l;\n\n",
|
||||||
m->val);
|
m->val);
|
||||||
fprintf (codefile,
|
fprintf (codefile,
|
||||||
@@ -270,17 +259,11 @@ encode_type (char *name, Type *t)
|
|||||||
free (s);
|
free (s);
|
||||||
}
|
}
|
||||||
fprintf (codefile,
|
fprintf (codefile,
|
||||||
"l = der_put_length (p, len, ret);\n"
|
"l = der_put_length_and_tag (p, len, ret, UNIV, CONS, UT_Sequence);\n"
|
||||||
"if(l < 0)\n"
|
"if(l < 0)\n"
|
||||||
" return l;\n"
|
" return l;\n"
|
||||||
"p -= l;\n"
|
"p -= l;\n"
|
||||||
"len -= l;\n"
|
"len -= l;\n"
|
||||||
"ret += l;\n\n"
|
|
||||||
"l = der_put_tag (p, len, UNIV, CONS, UT_Sequence);\n"
|
|
||||||
"if(l < 0)\n"
|
|
||||||
"return l;\n"
|
|
||||||
"p -= l;\n"
|
|
||||||
"len -= l;\n"
|
|
||||||
"ret += l;\n\n");
|
"ret += l;\n\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -297,17 +280,11 @@ encode_type (char *name, Type *t)
|
|||||||
fprintf (codefile,
|
fprintf (codefile,
|
||||||
"ret += oldret;\n"
|
"ret += oldret;\n"
|
||||||
"}\n"
|
"}\n"
|
||||||
"l = der_put_length (p, len, ret);\n"
|
"l = der_put_length_and_tag (p, len, ret, UNIV, CONS, UT_Sequence);\n"
|
||||||
"if(l < 0)\n"
|
"if(l < 0)\n"
|
||||||
" return l;\n"
|
" return l;\n"
|
||||||
"p -= l;\n"
|
"p -= l;\n"
|
||||||
"len -= l;\n"
|
"len -= l;\n"
|
||||||
"ret += l;\n\n"
|
|
||||||
"l = der_put_tag (p, len, UNIV, CONS, UT_Sequence);\n"
|
|
||||||
"if(l < 0)\n"
|
|
||||||
"return l;\n"
|
|
||||||
"p -= l;\n"
|
|
||||||
"len -= l;\n"
|
|
||||||
"ret += l;\n\n");
|
"ret += l;\n\n");
|
||||||
free (n);
|
free (n);
|
||||||
break;
|
break;
|
||||||
@@ -321,17 +298,11 @@ encode_type (char *name, Type *t)
|
|||||||
case TApplication:
|
case TApplication:
|
||||||
encode_type (name, t->subtype);
|
encode_type (name, t->subtype);
|
||||||
fprintf (codefile,
|
fprintf (codefile,
|
||||||
"l = der_put_length (p, len, ret);\n"
|
"l = der_put_length_and_tag (p, len, ret, APPL, CONS, %d);\n"
|
||||||
"if(l < 0)\n"
|
"if(l < 0)\n"
|
||||||
" return l;\n"
|
" return l;\n"
|
||||||
"p -= l;\n"
|
"p -= l;\n"
|
||||||
"len -= l;\n"
|
"len -= l;\n"
|
||||||
"ret += l;\n\n"
|
|
||||||
"l = der_put_tag (p, len, APPL, CONS, %d);\n"
|
|
||||||
"if(l < 0)\n"
|
|
||||||
"return l;\n"
|
|
||||||
"p -= l;\n"
|
|
||||||
"len -= l;\n"
|
|
||||||
"ret += l;\n\n",
|
"ret += l;\n\n",
|
||||||
t->application);
|
t->application);
|
||||||
break;
|
break;
|
||||||
@@ -402,13 +373,8 @@ decode_type (char *name, Type *t)
|
|||||||
int pos;
|
int pos;
|
||||||
|
|
||||||
fprintf (codefile,
|
fprintf (codefile,
|
||||||
"l = der_match_tag (p, len, UNIV, PRIM, UT_BitString);\n"
|
"l = der_match_tag_and_length (p, len, UNIV, PRIM, UT_BitString,"
|
||||||
"if(l < 0)\n"
|
"&reallen);\n"
|
||||||
"return l;\n"
|
|
||||||
"p += l;\n"
|
|
||||||
"len -= l;\n"
|
|
||||||
"ret += l;\n"
|
|
||||||
"l = der_get_length (p, len, &reallen);\n"
|
|
||||||
"if(l < 0)\n"
|
"if(l < 0)\n"
|
||||||
"return l;\n"
|
"return l;\n"
|
||||||
"p += l;\n"
|
"p += l;\n"
|
||||||
@@ -441,13 +407,8 @@ decode_type (char *name, Type *t)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
fprintf (codefile,
|
fprintf (codefile,
|
||||||
"l = der_match_tag (p, len, UNIV, CONS, UT_Sequence);\n"
|
"l = der_match_tag_and_length (p, len, UNIV, CONS, UT_Sequence,"
|
||||||
"if(l < 0)\n"
|
"&reallen);\n"
|
||||||
"return l;\n"
|
|
||||||
"p += l;\n"
|
|
||||||
"len -= l;\n"
|
|
||||||
"ret += l;\n"
|
|
||||||
"l = der_get_length (p, len, &reallen);\n"
|
|
||||||
"if(l < 0)\n"
|
"if(l < 0)\n"
|
||||||
"return l;\n"
|
"return l;\n"
|
||||||
"p += l;\n"
|
"p += l;\n"
|
||||||
@@ -497,17 +458,11 @@ decode_type (char *name, Type *t)
|
|||||||
decode_type (s, m->type);
|
decode_type (s, m->type);
|
||||||
fprintf (codefile,
|
fprintf (codefile,
|
||||||
"if(dce_fix){\n"
|
"if(dce_fix){\n"
|
||||||
"l = der_match_tag (p, len, 0, 0, 0);\n"
|
"l = der_match_tag_and_length (p, len, 0, 0, 0, &reallen);\n"
|
||||||
"if(l < 0) return l;\n"
|
"if(l < 0) return l;\n"
|
||||||
"p += l;\n"
|
"p += l;\n"
|
||||||
"len -= l;\n"
|
"len -= l;\n"
|
||||||
"ret += l;\n"
|
"ret += l;\n"
|
||||||
"l = der_get_length(p, len, &reallen);\n"
|
|
||||||
"if(l < 0)\n"
|
|
||||||
"return l;\n"
|
|
||||||
"p += l;\n"
|
|
||||||
"len -= l;\n"
|
|
||||||
"ret += l;\n"
|
|
||||||
"}else \n"
|
"}else \n"
|
||||||
"len = oldlen - newlen;\n"
|
"len = oldlen - newlen;\n"
|
||||||
"}\n"
|
"}\n"
|
||||||
@@ -529,17 +484,11 @@ decode_type (char *name, Type *t)
|
|||||||
}
|
}
|
||||||
fprintf(codefile,
|
fprintf(codefile,
|
||||||
"if(dce_fix){\n"
|
"if(dce_fix){\n"
|
||||||
"l = der_match_tag (p, len, 0, 0, 0);\n"
|
"l = der_match_tag_and_length (p, len, 0, 0, 0, &reallen);\n"
|
||||||
"if(l < 0) return l;\n"
|
"if(l < 0) return l;\n"
|
||||||
"p += l;\n"
|
"p += l;\n"
|
||||||
"len -= l;\n"
|
"len -= l;\n"
|
||||||
"ret += l;\n"
|
"ret += l;\n"
|
||||||
"l = der_get_length(p, len, &reallen);\n"
|
|
||||||
"if(l < 0)\n"
|
|
||||||
"return l;\n"
|
|
||||||
"p += l;\n"
|
|
||||||
"len -= l;\n"
|
|
||||||
"ret += l;\n"
|
|
||||||
"}\n"
|
"}\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
|
|
||||||
@@ -549,13 +498,8 @@ decode_type (char *name, Type *t)
|
|||||||
char *n = malloc(2*strlen(name) + 20);
|
char *n = malloc(2*strlen(name) + 20);
|
||||||
|
|
||||||
fprintf (codefile,
|
fprintf (codefile,
|
||||||
"l = der_match_tag (p, len, UNIV, CONS, UT_Sequence);\n"
|
"l = der_match_tag_and_length (p, len, UNIV, CONS, UT_Sequence,"
|
||||||
"if(l < 0)\n"
|
"&reallen);\n"
|
||||||
"return l;\n"
|
|
||||||
"p += l;\n"
|
|
||||||
"len -= l;\n"
|
|
||||||
"ret += l;\n"
|
|
||||||
"l = der_get_length (p, len, &reallen);\n"
|
|
||||||
"if(l < 0)\n"
|
"if(l < 0)\n"
|
||||||
"return l;\n"
|
"return l;\n"
|
||||||
"p += l;\n"
|
"p += l;\n"
|
||||||
@@ -587,13 +531,7 @@ decode_type (char *name, Type *t)
|
|||||||
break;
|
break;
|
||||||
case TApplication:
|
case TApplication:
|
||||||
fprintf (codefile,
|
fprintf (codefile,
|
||||||
"l = der_match_tag (p, len, APPL, CONS, %d);\n"
|
"l = der_match_tag_and_length (p, len, APPL, CONS, %d, &reallen);\n"
|
||||||
"if(l < 0)\n"
|
|
||||||
"return l;\n"
|
|
||||||
"p += l;\n"
|
|
||||||
"len -= l;\n"
|
|
||||||
"ret += l;\n"
|
|
||||||
"l = der_get_length(p, len, &reallen);\n"
|
|
||||||
"if(l < 0)\n"
|
"if(l < 0)\n"
|
||||||
"return l;\n"
|
"return l;\n"
|
||||||
"p += l;\n"
|
"p += l;\n"
|
||||||
@@ -611,17 +549,11 @@ decode_type (char *name, Type *t)
|
|||||||
decode_type (name, t->subtype);
|
decode_type (name, t->subtype);
|
||||||
fprintf(codefile,
|
fprintf(codefile,
|
||||||
"if(dce_fix){\n"
|
"if(dce_fix){\n"
|
||||||
"l = der_match_tag (p, len, 0, 0, 0);\n"
|
"l = der_match_tag_and_length (p, len, 0, 0, 0, &reallen);\n"
|
||||||
"if(l < 0) return l;\n"
|
"if(l < 0) return l;\n"
|
||||||
"p += l;\n"
|
"p += l;\n"
|
||||||
"len -= l;\n"
|
"len -= l;\n"
|
||||||
"ret += l;\n"
|
"ret += l;\n"
|
||||||
"l = der_get_length(p, len, &reallen);\n"
|
|
||||||
"if(l < 0)\n"
|
|
||||||
"return l;\n"
|
|
||||||
"p += l;\n"
|
|
||||||
"len -= l;\n"
|
|
||||||
"ret += l;\n"
|
|
||||||
"}\n"
|
"}\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user